Статья возможно устарела. По крайней мере некоторые ссылки точно.
Что вы делаете когда вам в голову приходит умная мысль? Как вы ее фиксируете, точнее где? Записываете в блокнот или на первый попавшийся листик, а потом благополучно теряете его? Или вы используете онлайн-сервисы заметок типа Evernote или Google Keep?
Я пользовался онлайн-сервисами заметок, сначала Evernote, потом Quip, пока не задумался о приватности своих данных. Сразу хочу уточнить, я не обвиняю сервисы в просмотре пользовательских записей. Это конечно возможно, но вряд ли происходит, если всплывут подобные факты, то будет нанесен огромный ущерб репутации, а следовательно и прибыли, ведь частично сервисы являются платными.
Мы это понимаем, сервисы понимают тоже, но случиться может всякое. Если разговор заходит о приватности и безопасности данных, то так можно считать тогда, когда доступ к данным есть только у вас. Именно поэтому я перестал пользоваться подобными онлайн-сервисами и установил на свой VPS систему Paperwork, так мне спокойнее.
Paperwork - полностью свободная система заметок с открытым исходным кодом, благодаря чему любой человек может установить ее на собственный сервер. Да, может быть она не так функциональна как тот же Evernote, и у нее нет браузерных расширений и прочих примочек, но со своей задачей она справляется. Самое главное, что она только ваша, и доступ к ней есть только у вас, если не считать пользователей которым вы разрешите в ней зарегистрироваться. Это могут быть ваши родственники, друзья, коллеги по работе, если система является корпоративной, в общем только свои. Имеется поддержка русского языка, а еще интерфейс на старый Evernote смахивает.
Paperwork написан на PHP, использует в работе MySQL базы данных, управляется серверами Apache или Nginx и сравнительно просто устанавливается, как на свежий сервер, так и на уже используемый. У меня Paperwork работает совместно с MariaDB, сервером Nginx, а также PHP версии 7.1.1 собранным из исходников. Основой является Ubuntu Server 16.04.
Для установки и работы Paperwork необходим следующий набор программ и пакетов.
apt-get update && apt-get install -y npm zip curl wget git nodejs nodejs-legacy
MariaDB и база данных для Paperwork
Начать стоит с MariaDB, здесь я не буду описывать ее установку и настройку, весь процесс подробно описан в отдельной статье.
Допустим что MariaDB уже стоит, в таком случае нам нужно создать базу данных, которую Paperwork будет использовать в своей работе.
Сейчас мы создадим базу данных - paperwork, если имя не устраивает, можно задать свое, изменив его в вводимых командах. То же касается пользователя базы и его пароля, в командах я буду использовать 'username' и 'password' соответственно.
# Войти в консоль mariadb mysql -u root -p # Создаем пользователя базы и пароль create user 'username@localhost' identified by 'password'; # Создаем базу данных - paperwork create database paperwork default character set utf8 collate utf8_general_ci; # Разрешаем пользователю управлять созданной базой данных grant all privileges on paperwork.* to username@localhost identified by 'password' with grant option; # Применяем изменения flush privileges; # Выходим из консоли quit
Запомним эти данные, они нам понадобятся для настройки связи Paperwork с базой данных.
Установка и настройка PHP
Если следовать официальной инструкции по установке Paperwork, то для работы системы необходимо установить следующий набор PHP модулей из репозиториев Ubuntu.
apt-get install php7.0-mysql php7.0-fpm php7.0-cli php7.0-gd php7.0-mcrypt php-xml -y
Если вся система устанавливается с нуля, исключительно под Paperwork, то проще всего установить PHP именно так, из системных репозиториев. Тогда не потребуется вносить никаких дополнительных настроек и правок конфигурационных файлов, как в моем случае, когда PHP был установлен из исходников.
Поскольку я устанавливал Paperwork на уже использующийся сервер, то PHP у меня уже был установлен. Это была версия 7.1.1 собранная вручную из исходников, процесс установки которой описан в этой статье.
Пришлось использовать то что было. Как оказалось, с этим связано несколько небольших, но вполне решаемых проблем. Если кто-то из вас устанавливает Paperwork, также как и я, на уже готовый сервер с кастомным PHP, то данная информация может вам пригодиться. Но обо всем по порядку.
Первое, с чем придется столкнуться, это вероятное отсутствие нужных опций и модулей PHP. Проблема решается простой пересборкой с добавлением нужных опций. Мне пришлось пересобирать PHP несколько раз, пока я не добавил все что нужно.
В моей сборке уже было все, включая поддержку библиотеки GD, не было только поддержки Mcrypt шифрования. Поэтому я добавил к старой конфигурации --with-mcrypt и с чистой совестью пересобрал PHP заново, думая что у меня есть все что нужно. Но как оказалось, этого было мало.
Позже, когда я начал устанавливать Composer, вылезла еще одна недостача. Composer ни в какую не хотел устанавливаться и ругался на опцию --disable-phar, которая отключает поддержку phar модуля, нужного для работы Composer. Надо признаться что тут я ее просто не заметил, хотя знал что phar для Composer-а нужен.
Some settings on your machine make Composer unable to work properly. Make sure that you fix the issues listed below and run this script again: The phar extension is missing. Install it or recompile php without --disable-phar
Я опять пересобрал PHP, выкинув --disable-phar из конфигурации, думая что вот теперь то уже точно все и дальше проблем не будет. Но нет, при выполнении миграции, когда Paperwork связывается со своей базой данных, вылезла еще одна ошибка, сообщающая что у меня нет поддержки PDO_MYSQL драйвера.
[PDOException] could not find driver
Пришлось собирать третий раз, на этот раз добавив --with-pdo-mysql=mysqlnd, включающую поддержку PDO_MYSQL. Хорошо, что все это я проделывал на виртуальной машине. Так повелось, что у меня всегда есть копия VPS на виртуальной машине, с тем же установленным ПО, для подобных тренировок и тестов. Сначала все отрабатывается на ней, а только потом все воспроизводится на рабочем сервере.
Итак, если нужно пересобрать PHP под использование Paperwork, то вам понадобится следующая конфигурация из необходимых опций + добавить ваши из старой конфигурации.
Должно быть: Поддержка GD (насчет нужности ВСЕХ всех директорий не уверен) --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-webp-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr Поддержка Mcrypt --with-mcrypt Поддержка PDO_MYSQL --with-pdo-mysql=mysqlnd Не должно быть: --disable-phar
На всякий случай приведу полную конфигурацию сборки, может из нее еще что нужно, по крайней мере больше ошибок связанных со сборкой PHP не возникало.
./configure --prefix=/usr/local/php7 --with-config-file-path=/etc/php7/conf --with-fpm-user=nginx --with-fpm-group=nginx --enable-fpm --enable-mysqlnd --enable-mbstring --enable-sockets --enable-opcache --enable-zip --enable-exif --enable-calendar --disable-ipv6 --disable-rpath --with-mcrypt --with-mhash --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-webp-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-bz2 --without-sqlite3 --without-pdo-sqlite --without-pear
Отсюда появляются еще несколько моментов. Для сборки PHP вместе с --with-mcrypt, необходимо установить следующие пакеты и библиотеки.
apt-get install libmcrypt-dev libreadline-dev -y
Иначе при конфигурации будет такая ошибка.
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
Поскольку в новой сборке появилась поддержка phar, нужно создать символическую ссылку на файл phar в каталоге /bin. Я делаю это исходя из своего местоположения установки PHP и соответственно файла phar.
ln -s /usr/local/php7/bin/phar /bin/phar
Второе, с чем придется столкнуться, это различные правки конфигурационных файлов PHP, вносимые на протяжении эксплуатации сервера. У меня нашлось два значения несовместимых с Paperwork и ее установкой.
Помимо сборки, Composer ругался на отключенную allow_url_fopen в php.ini.
Some settings on your machine make Composer unable to work properly. Make sure that you fix the issues listed below and run this script again: The allow_url_fopen setting is incorrect. Add the following to the end of your `php.ini`: allow_url_fopen = On
Решается правкой php.ini и выставлением allow_url_fopen в On.
allow_url_fopen = On
Также у меня была еще одна ошибка, связанная с функцией php exec. Но она появилась уже после установки Paperwork и подробно описана в отдельном разделе статьи.
Установка и настройка Nginx
Для управления и обслуживания Paperwork нужен сервер, в моем случае в этой роли выступает Nginx. Его довольно просто установить из системных репозиториев Ubuntu, достаточно выполнить следующую команду.
apt-get install nginx -y
После установки сервер нужно настроить, о том как это сделать можно прочитать здесь и здесь. Под спойлером выкладываю готовый файл nginx.conf.
На данный момент настройка Nginx не доведена до конца, еще не хватает хост-файла для обслуживания Paperwork, его мы напишем немного позже.
Установка Composer
Установим пакетный менеджер Composer, устанавливающий необходимые зависимости для приложений использующих PHP. В нашем случае он нужен для установки зависимостей Paperwork. Composer состоит из одного файла composer.phar, по сути являющимся php-скриптом и распространяющимся в phar архиве.
С помощью Curl скачиваем Composer в текущий каталог, например в /root. Если Curl будет ругаться на сертификаты или невозможность скачать файл по https, то добавьте к команде -k или лучше всего обновите систему. Такое иногда бывает.
curl -sS https://getcomposer.org/installer | php All settings correct for using Composer Downloading... Composer (version 1.4.2) successfully installed to: /root/composer.phar Use it: php composer.phar
Перемещаем файл composer.phar в директорию /usr/local/bin, переименовывая его в composer.
mv composer.phar /usr/local/bin/composer
Теперь Composer может быть вызван следующей командой.
composer
Kоманда покажет список доступных опций.
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.4.2 2017-05-17 08:17:52 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: about Short information about Composer. archive Create an archive of this composer package. browse Opens the package's repository URL or homepage in your browser. clear-cache Clears composer's internal package cache. clearcache Clears composer's internal package cache. config Set config options. create-project Create new project from a package into given directory. depends Shows which packages cause the given package to be installed. diagnose Diagnoses the system to identify common errors. dump-autoload Dumps the autoloader. dumpautoload Dumps the autoloader. exec Execute a vendored binary/script. global Allows running commands in the global composer dir ($COMPOSER_HOME). help Displays help for a command home Opens the package's repository URL or homepage in your browser. info Show information about packages. init Creates a basic composer.json file in current directory. install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. licenses Show information about licenses of dependencies. list Lists commands outdated Shows a list of installed packages that have updates available, including their latest version. prohibits Shows which packages prevent the given package from being installed. remove Removes a package from the require or require-dev. require Adds required packages to your composer.json and installs them. run-script Run the scripts defined in composer.json. search Search for packages. self-update Updates composer.phar to the latest version. selfupdate Updates composer.phar to the latest version. show Show information about packages. status Show a list of locally modified packages. suggests Show package suggestions. update Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file. validate Validates a composer.json and composer.lock. why Shows which packages cause the given package to be installed. why-not Shows which packages prevent the given package from being installed.
Если подобный вывод работает, значит все сделано правильно и можно переходить к следующему шагу.
Установка Paperwork
Переходим к установке Paperwork. Устанавливать будем в каталог /var/www, перейдем в него.
cd /var/www
Клонируем Paperwork с github.
git clone -b 1 https://github.com/twostairs/paperwork.git
Переходим в каталог frontend.
cd ./paperwork/frontend/
Находясь в каталоге frontend запускаем сomposer, он установит все необходимые зависимости.
composer install
Перейдем в каталог /app/storage/config.
cd ./app/storage/config
Нас интересуют default_database.json и default_paperwork.json. Первый файл отвечает за связь Paperwork с базой данных, второй за регистрацию пользователя. Нам нужно переименовать их в database.json и paperwork.json соответственно.
Копируем с переименованием, чтобы сохранить исходные файлы.
cp default_database.json database.json cp default_paperwork.json paperwork.json
Когда мы устанавливали зависимости, то в конце можно было увидеть следующие строки, сообщающие что Paperwork не удалось связаться с базой данных.
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'paperwork'@'localhost' (using password: YES) Please configure your database connection correctly, or use the sqlite memory driver (-M). Skipping \Illuminate\Support\Facades\Password. PDOException: SQLSTATE[HY000] [1045] Access denied for user 'paperwork'@'localhost' (using password: YES) Please configure your database connection correctly, or use the sqlite memory driver (-M). Skipping \Illuminate\Support\Facades\Schema.
По умолчанию Paperwork пытается связаться с базой данных подставляя значения имени и пароля пользователя прописанные в файле database.json, а в нем значится одно и то же - paperwork.
cat database.json { "driver": "mysql", "database": "paperwork", "host": "localhost", "username": "paperwork", "password": "paperwork", "port": 3306
В самом начале мы создавали свою базу данных, а также своего пользователя со своим паролем. Поэтому не удивительно что система не смогла связаться с базой данных. Необходимо отредактировать файл database.json, внеся в него свои значения из начала статьи.
Редактируем database.json.
nano database.json username - заменяем на имя пользователя базы данных password - заменяем на пароль пользователя paperwork - имя базы данных (если назвали по своему) host, port, driver - оставляем по умолчанию "driver": "mysql", "database": "paperwork", "host": "localhost", "username": "username", "password": "password", "port": 3306
В этом же каталоге создадим файл setup, добавим в него цифру 8, после чего сохраним изменения.
nano setup
Это нужно для того, чтобы не заполнять все значения вручную через веб-интерфейс, после первого запуска Paperwork. Когда будем выполнять миграцию, все это будет сделано автоматически и при первом запуске сразу появится форма входа / регистрации. Это так называемая "установка без использования Setup Wizard".
Переходим обратно в каталог /paperwork/frontend.
cd /var/www/paperwork/frontend
Выполняем миграцию для заполнения базы данных. На вопрос Do you really wish to run this command? - вводим "y" и нажимаем Enter.
php artisan migrate
Если все в порядке, то должно быть примерно так.
Migration table created successfully. Migrated: 2014_07_22_194050_initialize Migrated: 2014_07_24_103915_create_password_reminders_table Migrated: 2014_10_08_203732_add_visibility_to_tags_table Migrated: 2015_01_21_034728_add_admin_to_users Migrated: 2015_05_05_094021_modify_tag_user_relation Migrated: 2015_05_22_220540_add_version_user_relation Migrated: 2015_06_15_224221_add_tag_parent Migrated: 2015_06_30_125536_add_sessions_table Migrated: 2015_07_29_130508_alter_versions Migrated: 2016_10_21_224100_fix_timestamps_for_postgres_again
Находясь в каталоге paperwork/frontend, устанавливаем gulp-bower с помощью пакетного менеджера npm (должен быть установлен вместе со всем софтом из начала статьи).
npm install -g gulp bower
Установим нужные зависимости.
npm install
Установим зависимости для bower.
bower install --allow-root
Проводим финальную сборку.
gulp
Должно быть примерно так.
[16:48:09] Using gulpfile /var/www/paperwork/frontend/gulpfile.js [16:48:09] Starting 'compileLessBootstrapTheme'... [16:48:09] Finished 'compileLessBootstrapTheme' after 48 ms [16:48:09] Starting 'compileLessPaperworkThemeV1'... [16:48:09] Finished 'compileLessPaperworkThemeV1' after 9.28 ms [16:48:09] Starting 'compileLessFreqselector'... [16:48:09] Finished 'compileLessFreqselector' after 4.23 ms [16:48:09] Starting 'compileLessTypeahead'... [16:48:09] Finished 'compileLessTypeahead' after 16 ms [16:48:09] Starting 'less'... [16:48:09] Finished 'less' after 66 μs [16:48:09] Starting 'lint'... [16:48:09] Finished 'lint' after 46 ms [16:48:09] Starting 'compileJsBootstrap'... [16:48:09] Finished 'compileJsBootstrap' after 6.91 ms [16:48:09] Starting 'compileJsPaperwork'... [16:48:09] Finished 'compileJsPaperwork' after 31 ms [16:48:09] Starting 'compileJsPaperworkNative'... [16:48:09] Finished 'compileJsPaperworkNative' after 15 ms [16:48:09] Starting 'compileJsAngular'... [16:48:09] Finished 'compileJsAngular' after 27 ms [16:48:09] Starting 'compileJsJquery'... [16:48:09] Finished 'compileJsJquery' after 5.44 ms [16:48:09] Starting 'compileJsTagsinput'... [16:48:09] Finished 'compileJsTagsinput' after 21 ms [16:48:09] Starting 'compileJsLibraries'... [16:48:09] Finished 'compileJsLibraries' after 18 ms [16:48:09] Starting 'compileJsLtIe9Compat'... [16:48:09] Finished 'compileJsLtIe9Compat' after 8.37 ms [16:48:09] Starting 'compileJsLtIe11Compat'... [16:48:09] Finished 'compileJsLtIe11Compat' after 3.11 ms [16:48:09] Starting 'js'... [16:48:09] Finished 'js' after 59 μs [16:48:09] Starting 'concatLibCSS'... [16:48:10] Finished 'concatLibCSS' after 31 ms [16:48:10] Starting 'default'... [16:48:10] Finished 'default' after 21 μs
Осталось создать хост-файл Nginx, для обслуживания Paperwork. Создадим файл paperwork в директории /etc/nginx/sites-available.
nano /etc/nginx/sites-available/paperwork
Минимальная конфигурация будет следующая.
- Имя сайта я указал как paperwork.test.com, вы естественно используете свое имя, например поддомен от основного доменного имени.
- В качестве корневой директории Paperwork выступает frontend/public именно она отвечает за доступ к системе. Поэтому в значении root указываем ее полный адрес /var/www/paperwork/frontend/public.
- Что касается сокета /run/php/php7.0-fpm.sock, то он используется по умолчанию, если PHP устанавливался из системных репозиториев Ubuntu. Соответственно если нужно использовать свой сокет, то указываем его.
server { # Порт который будет слушать nginx listen 80; # Имя сайта server_name paperwork.test.com; # Корневая директория и индексный файл root /var/www/paperwork/frontend/public; index index.php; # Лог-файлы access_log /var/www/paperwork/logs/access.log; error_log /var/www/paperwork/logs/error.log; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_index index.php; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Сразу же создадим символическую ссылку на файл в каталоге sites-enabled, для того чтобы Nginx мог найти данный файл.
ln -s /etc/nginx/sites-available/paperwork /etc/nginx/sites-enabled/paperwork
Создадим указанный в конфигурации каталог для размещения логов, иначе сервер будет ругаться на его отсутствие.
mkdir /var/www/paperwork/logs
Назначим владельца для каталога /var/www/paperwork. В противном случае система будет ругаться на невозможность выполнения служебных файлов.
chown nginx:nginx -R /var/www/paperwork
Перезагружаем Nginx и PHP.
systemctl restart nginx systemctl restart php7.0-fpm
Теперь система будет доступна или по ip-адресу сервера, или по указанному адресу. Остается только зарегистрироваться, выбрать нужный язык и нажать Sign Up.
После чего можно сразу приступать к заметкам.
Ошибки при обращении к Paperwork
Если вдруг, по какой либо причине вы используете PHP версии выше чем 7.0, например 7.1.X, то готовьтесь к возникновению ошибки. Вместо формы входа вы увидите следующую картину.
Система сообщает об устаревшей и не поддерживаемой функции mcrypt_get_iv_size(). Дело в том, что используемая в Paperwork версия фреймворка Laravel 4.2 несовместима с последними версиями PHP выше чем 7.0. В последнем PHP этой функции уже нет, а в фреймворке есть, отсюда и возникает данная ошибка. Согласно официальной документации PHP использовать эту функцию не рекомендуется.
Вылечить можно двумя способами. Первый, это обновление Laravel до 5-ой версии, в нем эта функция тоже убрана. Но этот способ трудный и долгий. Значительно быстрее отредактировать файл app.php находящийся в директории /frontend/app/config.
nano /var/www/paperwork/frontend/app/config/app.php
В начало файла, после открывающего тега <?php, нужно добавить - error_reporting(E_ALL ^ E_DEPRECATED); выражение запрещающее вывод ошибок. После чего сохранить изменения в файле.
Например вот так: <?php error_reporting(E_ALL ^ E_DEPRECATED); return array( /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => true,
Если после правки файла обновить страницу в браузере, то есть два варианта того что вы увидите. Вы можете увидеть форму входа в Paperwork, это значит что все исправлено и можно начинать пользоваться системой.
А можете увидеть ошибку, но уже другую.
Теперь система ругается на отключенную в целях безопасности функцию exec. Может когда-то давно, вы могли отключить ее за ненадобностью. Откройте свой php.ini найдите строчку disable_functions и уберите из ее значения функцию exec.
disable_functions = system, exec, phpinfo Уберите exec disable_functions = system, phpinfo
Перезапустите PHP, перезагрузите страницу в браузере и начинайте пользоваться Paperwork.
Шифрование трафика Paperwork
Выполняя вышеуказанную конфигурацию, сервер предоставляет клиенту не шифрованный трафик, что не есть хорошо с точки зрения безопасности. Ведь изначально все затевалось именно ради безопасности, а тут трафик не шифрованный используется… Непорядок выходит.
Я настоятельно рекомендую использовать HTTPS подключение к Paperwork. Пусть для этого и придется затратить немного больше времени, на получение сертификатов и настройку сервера, но оно того стоит. Хотя шифрование не везде себя оправдывает, например если сервер находится в локальной сети или на виртуальной машине, то тут можно обойтись и без него.
Если вы решили использовать HTTPS соединение с Paperwork, то начинать стоит с получения сертификатов. Быстрее и проще всего получить сертификат можно с помощью программы Certbot от Let’s Encrypt, выдающей бесплатные SSL сертификаты. Как получить сертификат с помощью Certbot подробно описано здесь.
Сертификат нужно включить в конфигурацию Nginx вместе с опциями обеспечивающими поддержку HTTPS протокола и шифрования трафика. О том как настроить Nginx на использование шифрования трафика подробно описано здесь. Ниже я приведу примерную конфигурацию Nginx с поддержкой шифрования и кое какими дополнительными опциями.
### хост-файл paperwork ### server { listen 80; server_name paperwork.test.com; return 301 https://$server_name$request_uri; } server { # Порт который будет слушать nginx listen 443 ssl http2; # Имя сайта server_name paperwork.test.com; # Корневая директория и индексный файл root /var/www/paperwork/frontend/public; index index.php; # Лог-файлы access_log /var/www/paperwork/logs/access.log; error_log /var/www/paperwork/logs/error.log; # Сертификаты и ключи ssl_certificate /etc/letsencrypt/live/paperwork.test.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/paperwork.test.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/paperwork.test.com/chain.pem; # SSL - сессия ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # Используемые протоколы ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Наборы шифров ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; # Приоритет серверных шифров ssl_prefer_server_ciphers on; # Включение HSTS (Strict-Transport-Security)(15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=15768000; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; location ~ /\. { deny all; } location ~ /.well-known { allow all; } location = /favicon.(ico|png) { access_log off; log_not_found off; } location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_index index.php; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # Gzip-сжатие контента gzip on; gzip_comp_level 6; gzip_min_length 512; gzip_buffers 8 64k; # Типы контента для gzip-сжатия gzip_types text/css text/xml text/jav$ text/plain application/xml application/json application/xml+rss application/javascript application/x-javascript gzip_proxied any; gzip_disable "msie6"; # Кэширование файлов location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; access_log off; log_not_found off; } }
На этом все. Благодарю за внимание.