Настройка nginx php fpm ubuntu

Установка веб сервера NGINX PHP-FPM Ubuntu 20.04

В данной статье описывается установка популярного серверного программного обеспечения, которое необходимо для работы динамических сайтов и web — приложений, работающих на PHP.

Данный стек ПО имеет аббревиатуру Lemp, которая состоит из первых букв, составляющих даное ПО:

Linux, NGINX (engine x), Mysql, PHP. Рассмотрим особенности процесса установки и настройки стека Lemp в операционной системе Ubuntu 20.04.

При установке веб сервера nginx мы будем использовать следующие пакеты:

nginx

Nginx («движок X»)- это высокопроизводительный веб-и-обратный прокси-сервер, созданный Игорем Сысоевым. Он может использоваться как в качестве автономного веб-сервера, так и в качестве прокси-сервера для снижения нагрузки на серверные HTTP-или почтовые серверы. Это пакет зависимостей для установки nginx-full (по умолчанию), nginx-lightt или nginx-extras.

Чем отличаются пакеты nginx-full, nginx-light, nginx-extras

Пакеты отличаются наборами модулей. То есть если ставить nginx, то зависимости потянут за собой nginx-full. Но, если ставить не полную версию, то всегда можно до установить недостающие пакеты.

nginx-extras

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Browser, Empty GIF, FastCGI, Geo, Limit Connections, Limit Requests, Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, UWSGI.

OPTIONAL HTTP MODULES: Addition, Auth Request, Charset, WebDAV, FLV, GeoIP, Gunzip, Gzip, Gzip Precompression, Headers, HTTP/2, Image Filter, Index, Log, MP4, Embedded Perl, Random Index, Real IP, Slice, Secure Link, SSI, SSL,

Stream, SSL Preread, Stub Status, Substitution, Thread Pool, Upstream, User ID, XSLT.

MAIL MODULES: Mail Core, Auth HTTP, Proxy, SSL, IMAP, POP3, SMTP.

THIRD PARTY MODULES: Auth PAM, Cache Purge, DAV Ext, Echo, Fancy Index, Headers More, Embedded Lua, GeoIP2, HTTP Substitutions, Nchan, Upload Progress, Upstream Fair Queue.

nginx-full

Этот пакет — версия nginx с полным набором стандартных модулей (но некоторые модули отсутствуют, которые включены в nginx-extra).

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Browser, Empty GIF, FastCGI, Geo, Limit Connections, Limit Requests, Map, Memcached, Proxy,

Referer, Rewrite, SCGI, Split Clients, UWSGI.

OPTIONAL HTTP MODULES: Addition, Auth Request, Charset, WebDAV, GeoIP, Gunzip, Gzip, Gzip Precompression, Headers, HTTP/2, Image Filter, Index, Log, Real IP, Slice, SSI, SSL, Stream, SSL Preread, Stub Status, Substitution, Thread Pool, Upstream, User ID, XSLT.

MAIL MODULES: Mail Core, Auth HTTP, Proxy, SSL, IMAP, POP3, SMTP.

THIRD PARTY MODULES: Auth PAM, DAV Ext, Echo, GeoIP2, HTTP Substitutions, Upstream Fair Queue.

Nginx-light

пакет очень легкой версии nginx с минимальным набором функций и модулей.

STANDARD HTTP MODULES: Core, Access, Auth Basic, Auto Index, Empty GIF, FastCGI, Map, Proxy, Rewrite, SCGI, uWSGI.

OPTIONAL HTTP MODULES: Auth Request, Charset, Gzip, Gzip Precompression, Headers, HTTP/2, Index, Log, Real IP, lice, SSI, SSL, Stub Status, Thread Pool, WebDAV, Upstream.

THIRD PARTY MODULES: Echo.

mysql-server

MySQL — это быстрый, стабильный, многопользовательский, многопоточный SQLсервер баз данных. SQL (язык структурированных запросов)

php-fpm

Этот пакет предоставляет интерпретатор Fast Process Manager

(обработчик FastCGI для выполнения PHP скриптов), который работает как демон (программа в ОС семейства Unix, запускаемая системой, и работающая в фоновом режиме без прямого взаимодействия с пользователем) и получает запросы Fast/CGI.

php-gd

модуль GD для PHP с графической библиотекой GD, содержащей функции для работы с изображениями. Это пакет зависимостей, который по умолчанию от Debian версии PHP (в настоящее время 7.4).

php-mysql

модуль MySQL для PHP позволяет получить доступ к функциональности, которую предоставляет MySQL версии 4.1 и выше

Вход в систему по SSH

(на локальной машине этот шаг пропускаем)

Для входа на ваш сервер по SSH, нужно знать публичный IP-адрес вашего сервера.

Также нужен пароль или SSH-ключ учетной записи пользователя root для аутентификации (смотря что вы выбрали).

Для входа в систему как пользователь root введите команду.

(замените выделенную часть команды публичным IP-адресом вашего сервера):

Соглашаемся с подлинностью хоста. В случае использования аутентификации по паролю, нужно ввести пароль root для входа в систему.

При использовании SSH-ключа, защищенного парольной фразой,

вам нужно ввести парольную фразу при первом использовании ключа в каждом сеансе.

Если вы первый раз входите на сервер с паролем, вам также предлагается изменить пароль root.

Пользователь root в Linux — это административный пользователь, обладающий очень широкими привилегиями.

Поэтому не рекомендуется использовать учетную запись root вам на постоянной основе, так как можно легко повредить систему даже случайным образом.

Добавление пользователя на Ваш веб сервер:

Отвечаем на вопросы или пропускаем, используя клавишу enter.

Мы создали учетную запись пользователя с обычными привилегиями.

Дадим привелегии root для нашей обычной учетной записи,(Чтобы каждый раз не входить под root).

Наш новый пользователь сможет запускать команды с правами администратора, ставя слово sudo перед каждой командой.

Для этого нужно добавить пользователя в группу sudo. В Ubuntu по умолчанию разрешено использовать команду sudo пользователям, которые принадлежат к группе sudo. Выполняем в терминале под root (user1 меняем на ваш пользователь)

Настройка файервола UFW

Набираем в терминале:

Установка вышеописанных пакетов

Установка nginx, php, mysql.

Устанавливаем одной командой

​разрешаем трафик в файервол

Как посмотреть список приложений, зарегестрированных в ufw.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntuРис для лок. машины Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

На экране видно, что для Nginx настроено три профиля:

Рекомендуется разрешать только тот трафик, который вы используете.

Если не настроен SSL для веб сервера, то разрешим трафик только для порта 80.

Для проверки работоспособности сервера Nginx вводим в браузере адрес домена или IP

Результат выполнения этой команды покажет, что трафик HTTP разрешен:

Соответсвенно меняя название профиля в команде включаем нужную опцию

Проверим запущен ли NGINX (после установки в Убунту автоматически запускается)

Посмотреть IP-адрес вашего сервера( если не знаете)

В моем случае localhost. Если все нормально, то выводится страница приветствия.

2. Настройка безопасности mysql

Далее можно установить плагин mysql_secure_installation для повышения безопасности Mysql.

На домашнем компьютере можно пропустить.

3. Настройка Nginx для использования PHP

Для работы веб-сервера Nginx необходимо настроить серверные блоки.

По умолчанию в Ubuntu 20.04 включен один серверный блок в директории /var/www/html

Создадим директорию для нашего домена

$ sudo mkdir /var/www/ваш_домен # например test.local и т. д.

Создадим файл конфигурации в директории nginx sites-available с помощью редактора командной строки.

Можно открыть /etc/nginx/sites-available/default скопировать и внести изменения

Вставим в файл /etc/nginx/sites-available/ваш_домен следующее:

сохраняем CTRL-O enter, CTRL-x

Сохраняем и закрываем

Далее нужно включить наш сайт в директории sites-enabled

Проверяем конфигурацию nginx

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Если есть какие-либо ошибки, вернитесь в файл конфигурации и проверьте его содержание перед тем, как продолжить.

Идем в браузер и набираем localhost

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Создайте файл index.html в /var/www/test.local

Вставьте в файл /var/www/test.local/index.html следующее:

теперь наш тестовый домен нужно добавить в файл hosts расположенный по адресу

etc/hosts добавляем строку 127.0.0.1 test.local сохраняем и закрываем

Откроем браузер и введите http://test.local/

Страница будет выглядеть следующим образом:

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Если вы видите эту страницу, это означает, что ваш серверный блок Nginx работает.

Не забудьте потом удалить эту страницу

Тестирование PHP

Создадим файл /var/www/test.local/info.php

Откроем страницу в веб-браузере, набрав доменное имя или IP-адрес, настроенный в файле конфигурации Nginx, добавив /info.php в конце:

В нашем случае http://test.local/info.php

Должна выводится страница, содержащую подробную информацию о вашем сервере:

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Не забудьте удалить страницу, так как она содержит конфиденциальную информацию о вашей среде PHP и о вашем сервере Ubuntu. :

Заключение

Мы запустили и проверили работу PHP приложений используя Nginx в качестве веб-сервера и MySQL в качестве системы управления базы данных.

Далее следуют внести изменения в кофигурационный файл NGINX для корректной работы CMS. В моем случае друпал и wordpress.

А также произвести настройку протокола https, если в этом есть необходимость.

Источник

Настройка Nginx + PHP-FPM и HTTPS от Let’s Encrypt на AWS EC2 с Ubuntu Server 16.04 LTS

Порядок действий для установки PHP 7.1 и разворачивания проекта на PHP на созданном Amazon AWS EC2 instance. Основано на этой статье, с дополнениями отсюда и из других источников. Используется более новая версия PHP, добавлены инструкции по установке HTTPS, и пример настройки проекта на Laravel. Подразумевается, что инстанс используется в режиме разработки.

Сначала приведу код полностью. Это не bash-скрипт, а просто список команд, команды выполняются вручную по отдельности, при необходимости вводятся нужные данные.

Настройка системы

mysql_secure_installation задает несколько вопросов по настройке.

Если у вас будет один пользователь, с которым проект будет подключаться к базе, то есть постоянное создание пользователей не предусматривается, то плагин валидации паролей можно отключить.

Удаленный логин лучше для всех пользователей отключать, для подключения со своего компьютера можно сделать проброс портов через SSH.

PHP 7.1 и 7.2 пока нет в стандартных репозиториях.

Устанавливать необязательно, если вам больше нравится другой редактор и способ передвижения по файловой системе.

Восклицательными знаками отмечены места, где надо поменять.

\.php$ — раскомментировать секцию, поменять название файла с сокетом
— location

/\.ht — раскомментировать секцию для файлов *.htaccess

Проверить правильность конфигурации, если все нормально, перезагрузить ее.

Создать тестовый файл, проверить работу PHP, потом удалить. Выполнять необязательно. 11.22.33.44 обозначает IP-адрес инстанса.

Настройка HTTPS

Настройка HTTPS часто делается после настройки проекта, когда он уже есть и работает по HTTP. Но действия общие, от проекта не зависят, поэтому рассмотрим ее раньше.
Используются бесплатные сертификаты от Let’s Encrypt.

Устанавливаем certbot, он обеспечивает настройку и обновление сертификатов.

Прописываем доменное имя. Оно уже должно быть доступно и указывать на IP сервера. Для этого в настройках домена у регистратора нужно добавить DNS-запись типа A.

Запускаем бота. Он автоматически определит домен по настройкам Nginx, но запросит подтверждение, а также задаст несколько других вопросов. Затем он устанавливает сертификат и обращается по доменному имени для проверки. Настройки Nginx для HTTPS он меняет сам.

Обновление сертификата надо добавить в cron для ежедневного запуска.

Есть специальная команда для проверки, пройдет ли обновление без ошибок.

Настройка проекта

Composer лучше не ставить через apt-get, там старая версия. На сайте Composer есть скрипт для более безопасной установки с проверкой хеша. Можно использовать его, или просто взять оттуда текущий хеш и проверить вручную.

Устанавливаем права на папки специально для Laravel. Подробнее здесь.

Создаем рабочий файл с настройками окружения. Далее все как обычно — создаем, настраиваем, прописываем.

Источник

Установка и базовая настройка nginx и php-fpm для разработки проектов локально в Ubuntu 16.04

Здравствуй, уважаемый пользователь Хабрахабра. Мое повествование будет о том, как подготовить почву для локальной веб-разработки проектов в операционной системе Ubuntu 16.04.1 LTS.

В данной статье хочется развеять и разъяснить возможные трудности связанные с установкой и настройкой ПО, которое требуется для современной веб-разработки, с которыми возможно сталкиваются начинающие разработчики и не только.

Технологии которые будут использованы в статье: nginx, php-fpm.

Перед началом повествования, хочу отметить, что я проделывал все эти действия на «голой» системе.
Я буду работать с пакетным менеджером aptitude. Так же рекомендую обновить индекс пакетов и сами пакеты перед установкой ПО. В статье мы проделаем эти действия вместе.

Установка пакетного менеджера aptitude, обновление индекса и пакетов

Обновляем пакеты (команда обновит все пакеты, для которых есть новые версии, если потребуется удаление пакетов, то оно будет выполнено).

Установка и настройка nginx (версия >= 1.10.0)

Проверяем версию, чтобы убедиться что не установили старую, то есть ниже 1.10.0.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Установку и запуск произвели, теперь пойдем в каталог туда куда установлен наш nginx и посмотрим на его структуру. Каталог nginx находится по такому пути:

Наc интересуют в данный момент два каталога, которые вы видите на скриншоте. Это каталоги sites-available и sites-enabled.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Давайте перейдем в каталог sites-available и начнем конфигурировать наш виртуальный хост (сайт).

Перед началом создания конфигурационного файла, проверим что лежит у нас в данном каталоге. В моей случае каталог не пустой, в нем уже есть конфигурационные файлы, я их затер, чтобы не вводить вас в заблуждение.

В случае установки nginx «с нуля», именно «с нуля», так как при удалении nginx командой
или конфигурационные файлы остаются и если вы вдруг будете не понимать, почему nginx не работает и захотите его переустановить (обычно к такому прибегают начинающие пользователи Linux), то и после переустановки он не будет корректно работать, из-за того что в старых конфигурационных файлах (они не удаляются после удаления командой remove) прописаны неверные настройки, их придется удалить, либо настроить верно, только тогда nginx заработает.

В этом каталоге будет по умолчанию один файл, с названием default. В нем будет конфигурационный файл с примером, с комментариями, его вы можете изучить на досуге, а можете и вовсе удалить (всегда можно обратиться к официальной документации).

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Создадим свой конфигурационный файл, который будет соответствовать названию домена нашего локального сайта (или реального, если уже знаете его название). Это удобно, в будущем, когда будет много конфигурационных файлов, то это избавит вас от путаницы в них. У меня этот файл будет называться project.local.

Посмотрим что получилось.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Теперь откроем его в редакторе, я открою его в nano.

Видим что он у нас пустой. Теперь перейдем к формированию нашего файла. Нужно привести конфигурацию к такому виду, как написано ниже. Я опишу только жизненно важные директивы этого файла, описывать остальное не буду, так как это не является на данный момент важным, все-таки у нас тема базовой настройки. Этих настроек с «горкой» хватит для разработки проектов локально, не только мелких, но и довольно крупных. В следующих статьях опишу отдельно каждые использованные директивы (именно так называются строки, например server_name) этого файла.

Смотрите комментарии прям в конфигурационном файле.

Сохраняем файл. Теперь нам надо проверить, нет ли в нем ошибок. Сделать мы это можем командой.

Если видим такую информацию как на скриншоте, значит у нас все верно, может продолжать настройку. Если вы получаете какие-либо ошибки, стоит перепроверить конфигурационный файл.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Теперь нам надо активировать конфигурационный файл, в каталоге /etc/nginx/sites-enabled/ необходимо создать симлинк (символическая ссылка). Если у вас nginx был установлен «с нуля», то в этом каталоге есть симлинк на файл default, про который рассказывалось выше, его можно удалить, если он вам не требуется. Переходим в нужный каталог.

Посмотрим на наш созданный симлинк.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Чтобы убедиться что мы делаем еще все верно опять запустим команду.

Если все ок, едем дальше.

Файл hosts

Этот файл находится по пути /etc/hosts. Наличие в нем записей, позволяет запускать nginx с использованием в качестве домена localhost. В этом файле можно присваивать альтернативные псевдонимы, например для нашего проекта project.local, мы присвоим домен project.local.

Открываем файл в редакторе nano.

У вас в этом файле будет и другая информация, просто игнорируйте ее. Вам всего лишь нужно добавить строку как на моем скриншоте.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Не забываем сохранить файл. На этом настройка файла hosts закончена.

Установка php-fpm (>=7.0)

Проверяем установленную версию, на всякий случай, хотя в Ubuntu 16.04.1 в репозиториях лежит именно 7.0 версия.

Настройка nginx php fpm ubuntu. Смотреть фото Настройка nginx php fpm ubuntu. Смотреть картинку Настройка nginx php fpm ubuntu. Картинка про Настройка nginx php fpm ubuntu. Фото Настройка nginx php fpm ubuntu

Убеждаемся что все ок. Стартуем php-fpm.

Если будете править конфиги, то не забывайте рестартовать демон. Это делает так. Но нам это не потребуется.

На этом установка и настройка php-fpm закончена. Правда, это все. Это не магия, путь до сокета php-fpm у нас уже был прописан в конфигурационном файле. Конечно, вам могут понадобиться какие-либо расширения php для разработки личных проектов, но их вы можете поставить по мере того как они будут требоваться.

Теперь пойдем для в каталог с нашим проектом, у меня он лежит по такому пути.

Поднимемся на каталог выше и сделаем права 777 (то есть мы будем делать полные права каталогу с нашим проектом project.local). В будущем это избавим нас от лишних проблем.

На этом настройка ПО завершена, давайте создадим тестовый файл в нашем рабочем каталоге project.local и убедимся что все работает. Я создам файл index.php с таким содержанием.

Идем в браузер и видим что у нас все прекрасно работает! Интерпретатор php в том числе.

Источник

Веб-сервер на основе Nginx и PHP-FPM

Содержание

Установка

Сервер «Nginx» поставляется в одноименном пакете «nginx» и его установка производится, например, командой в терминале

Установку же «PHP-FPM» можно произвести, например, командой

Безопасность

Наряду с уязвимостями присущими ПО сервера, присутствуют также те, что обусловлены неосторожностью администратора сервера. Для их устранения следует соблюдать меры предосторожности:

Настройка

Настройка состоит из двух этапов — настройки «Nginx» и «PHP-FPM». Для начала необходимо остановить процессы (демоны) «Nginx» и «PHP-FPM», например, командами

Настройка PHP-FPM

Прежде всего, следует открыть файл «/etc/php5/fpm/php.ini» для редактирования, например, командой

после чего, найти строчку содержащую «cgi.fix_pathinfo», которая по-умолчанию выглядит так (закомментирована)

и привести её к виду

Это призвано устранить опасность неправильно трактования (и возникающей уязвимости) запросов вида «/image.gif/foo.php» (см. Don’t trust the tutorials: check your configuration!, Nginx 0day exploit for nginx + fastcgi PHP).

Описывать конфигурацию сайта в одном файле не очень удобно, для увеличения читабельности конфигурационного файла и гибкости настройки можно воспользоваться директивой «include» позволяющей указать «Nginx», что следует загрузить другой конфигурационный файл и затем продолжить чтение текущего. Создадим в папке «/etc/nginx/» каталог «common», где будут хранится общие настройки для сайта, которые затем будут подгружаться из основного конфигурационного файла «/etc/nginx/sites-available/example.com» с помощью директивы «include»

Некоторые запросы «Nginx» будет перенаправлять к «PHP-FPM», который в данном случае называется сервером выгрузки данных (upstream). Укажем как следует это делать. Создадим файл конфигурации с описанием серверов выгрузки данных

и откроем его для редактирования

и добавим в него строчки

где «php-fpm» – название для сервера выгрузки данных, для удобства.

Редактируем файл «/etc/nginx/sites-available/example.com». Добавляем строчку

для загрузки созданого выше конфигурационного файла. Как можно видеть – допускается указание относительного пути к файлу.

иначе, можно опустить эти строчки.

Начинаем описывать конфигурацию сайта

Сетевой порт для приема соединений: 80 — обычный HTTP ; 443 — HTTPS (см. выше)

Корневая директория сайта работающего на данном сервере

Возможные имена индексных файлов (их «Nginx» пытается открыть если он получил запрос вида «example.com/», вместо явного «example.com/index.html»)

Имя сервера – обычно доменное имя Вашего сервера

Шифрование

Необходимо наличие сертификата «*.crt» или «*.pem» и приватного секретного ключа «*.key» (см. Сертификаты). Самоподписанный сертификат можно сгенерировать командой в терминале (см. man openssl, man req)

При этом программа запросит данные, среди них «commmon name» — следует указать доменное имя сервера. Можно использовать шаблон, если необходимо учесть домены нижнего уровня, например, «*example.com». Иначе могут возникнуть проблемы с некоторыми программами, например, «davfs2» (см man davfs2.conf).

Но можно пойти дальше и воспользоваться сервисом «StartSSL» где выдают бесплатные сертификаты для личного пользования (см. startssl.com и Получение и установка бесплатного SSL-сертификата), но сам приватный ключ (который нельзя никому показывать) лучше сгенерировать самому, например, так

затем сформировать файл запроса на подпись (при этом прийдётся вводить те же данные что и для генерации самоподписанного сертификата, но это не важно, т.к. сервис «StartSSL» проигнорирует все кроме публичного ключа)

открыть полученный файл текстовым редактором

и скопировать его содержимое в текстовое поле на сайте «StartSSL» для запроса сертификата (см. ссылки на подробные инструкции выше). Файл *.csr больше не нужен. Затем загружаем подписанный сертификат (например, файл называется signed.crt) и объединяем его с сертификатом того кто этот сертификат подписал

Файл «signed.crt» можно удалить.

Копируем секретный ключ в системную папку и выставляем права доступа

И в соседнюю папку сам сертификат

Для пущей надежности можно сгенерировать ключ Диффи-Хеллмана (тоже секретный файл который очень долго генерируется)

Продолжаем редактировать конфигурационные файлы.

Для удобства описываем настройки шифрования во внешнем файле «/etc/nginx/common/ssl»

Редактируем файл «/etc/nginx/common/ssl»

Файлы сертификатов для «HTTPS»

Дополнительные параметры требуемые для «HTTPS»

На этом настройки «SSL» в «Nginx» завершены, сохраняем и закрываем файл. После завершения описания конфигурации (см. ниже) можно будет проверить надежность сервисом «SSLLabs»

Продолжаем редактировать файл «/etc/nginx/sites-available/example.com». Подгружаем созданный выше конфигурационный файл с описанием настроек SSL

Прочие настройки

Указание максимального размера запроса – необходимо если сервер будет использоваться для загрузки больших файлов (например, для построения небольшого облачного хранилища на основе «ownCloud», эта строчка по сути делает то же что и указанные выше при настройке «PHP-FPM», только теперь для «Nginx»)

Безопасность

Опишем настройки безопасности в отдельном файле

Сохраним и закроем файл, а затем подключим его строкой

Сжатие

Для экономии трафика лучше включить сжатие (иногда со влючённым сжатием могут возникать проблемы, например, у «ownCloud», см. ниже). Опишем настройки сжатия в отдельном файле

Следует сохранить, закрыть и затем подключить этот файл срочкой

Директории сайта

Далее указание директорий сайта и правил работы с ними с использованием директив «location». Данная директива может обрабатывать регулярные выражения «Perl» (см. Регулярные выражения (шаблоны))

К примеру, если хочется построить сайт на основе «WordPress», то можно описать корневую директорию так

Соответственно сам сайт должен размещаться в каталоге «/var/www/wordpress/»

Директории можно описывать по одной в этом же файле, но это не удобно и не наглядно. А можно указать строчку

которая укажет «Nginx», что нужно подключить все файлы в директории «/etc/common/locations/» которые соответствуют шаблону «*.inc», таким образом, если один из файлов нужно будет временно отключить, то его можно просто переименовать убрав расширение в имени. Создадим директорию где будут хранится эти файлы

Некая директория «/var/www/restricted» доступная только авторизованным пользователям сервера. Создадим для неё файл конфигурации «/etc/nginx/common/locations/restricted.inc»

» указывает, что при совпадении здесь директивы «location» ниже проверяться не будут.

Этот конфигурационный файл подключится автоматически, за счёт шаблона (см. выше).

WordPress

Для более полной информации по настройке «Nginx» для «WordPress» следует обратиться к официальной документации (см. codex.wordpress.org/Nginx и wiki.nginx.org/WordPress)

Натройки «Wordpress», который, в данном примере, находится в папке «/var/www/wordpress» будут описаны в файле «/etc/nginx/common/locations/wordpress.inc»

Указываем виртуальную директорию (используется для удобства и читабельности) в которую будут перенаправляться запросы при необходимости

Аналогично примеру выше предотвращаем обработку остальных директив «location»

Сохраняем и закрываем этот файл. Опять же, он будет подключён автоматически.

ownCloud

Для наиболее полной информации следует обратится к официальному руководству «OwnCloud» (см. Nginx Configuration). К примеру, «ownCloud» находится в папке «/var/www/owncloud».

Создадим файл настроек для «ownCloud» и отредактируем его

Многое аналогично примеру для «Wordpress»

Начиная с версии «ownCloud» 8 появился отдельный файл для переопределения некоторых настроек «PHP-FPM» взамен указанных в «/etc/php5/fpm/php.ini». Открыть его можно командой

и в нем найти строчки

и поменять значения на требуемые.

Базовые ограничения

Выше была написана строчка для подключение файла «/etc/nginx/common/deny»

рассмотрим его содержание. В нём идет запрет доступа к некоторым стандартным файлам. Создадим этот файл

Следует переписать все файлы «.htaccess» в директивы «Nginx». Найти эти файлы среди файлов сайта можно, например, командой

Вызов PHP-FPM

В примерах выше использовался файл «/etc/nginx/common/php-fpm» — в нём идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM»

Кеширование

Выше, в примерах, был упомянут файл «/etc/nginx/common/cache»

Сайт работает значительно лучше когда часть контента сохранена на стороне клиента с прошлого посещения сайта. Не все файлы можно кешировать. Поэтому описание кеширования производится в самом конце (т.е. эти настройки будут иметь наименьший приоритет и есть шанс что это не повлияет на правильную работу сайта). Создадим файл с параметрами для кеширования

Окончание

Закрываем фигурные скобки директивы «server» в «/etc/nginx/sites-available/example.com»

На этом правка файла «/etc/nginx/sites-available/example.com» завершена. Убедитесь в том, что все фигурные скобки «< >» закрыты корректно и части файла верно вложены друг в друга («location» внутри «server» и т.п.).

Сохраняем все изменённые файлы.

Теперь можно перезапустить демоны

Проверка

Проверить свой сайт можно создав файл «info.php» с содержанием

затем скопировав его, например, в «/var/www/wordpress/wp-content/uploads/», затем открыв адрес в браузере «http://example.com/wordpress/wp-content/uploads/info.php», если он выполнится вместо того чтобы просто сохранится — то что-то настроено неправильно, в этой директории php файлы выполняться не должны ни в коем случае (она доступна для загрузки)

Проверить свой сайт на скорость и прочее можно тут:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *