Давно мечтал настроить сервер nginx для друпала с специально заточенной под Друпал конфигурацией Perusio (António P. P. Almeida), человека который хорошо разбирается в nginx и друпале и пожалуй это лучшая конфигурация из доступных.
Почему конфигурация Perusio? Что она дает?
Основные фичи:
- Использование пары серверных директив для рерайта доменов, обычно для переадресации www.example.com в example.com или наоборот. Как рекомендуется для nginx на странице Wiki Pitfalls.
- Поддержка чистых URL.
- Контроль доступа к cron.php. Его можно запустить только с IP, который ты пропишешь. Это для без драшевой версии.
- Поддержка мультисайтинга.
- Поддержка Boost модуля.
- Поддержка виртуальных хостов (файл конфигурации example.com.conf).
- Поддержка Sitemaps RSS лент.
- Поддержка для Filefield Nginx Progress модуля для полосы загрузки (upload progress bar).
- Использование non-capturing регулярных выражений для всехдиректив, которые не перезаписываются, что требуется для использования URI компонентов.
- Поддержка IPv6 и IPv4.
- Поддержка использования приватных файлов в друпале.
- Поддержка hot link protection (защита от показа изображений на других сайтах используя ссылку на твой сайт) imagecache генерируемых изображений.
- Заканчивание expensive 404s , что обычно Друпал управляет используя апачевский default.htaccess.
- Возможность использования Апачи как бэкенд для работы с PHP. Имеется ввиду использование Nginx как reverse proxy.
- Поддержка Advanced Help модуля.
- Поддержка Advanced Aggregation модуля.
- Поддержка микрокэширования и для анонимных и для аутентифицированных пользователей.
- Поддержка escaped URI.
- Поддержка ETag.
- Поддержка для drupal 8.
- Поддержка для file_force модуля.
+ SSL
+ меры безопасности
Но её не так просто установить. На digitalocean (далее DO) этого не удалось, т.к. под свою конфигурацию perusio использует свою сборку nginx, которая хорошо у меня встала только на testing ветку debian, о чем пишет и сам perusio: "This is packaged for Debian unstable or testing". Недавно я заметил небольшое движен продвинутых пользователей от DO в сторону подобного сервиса VULTR.
Его даже называют убийцей DO. Так вот у него можно ставить дистрибутив с любой кастомного образа + цены у них дешевле + бесплатная защита от DDoS.
Итак начнем.
1. Регистрация.
Регистрируемся на VULTR.com.
2. Закачка образа.
Переходим в раздел ISO, закачиваем образ: в поле "Remote URL:" вставляем ссылку на testing Debian http://ftp.ie.debian.org/debian-cd-weekly/amd64/iso-cd/debian-testing-am..., нажимаем кнопку Upload и вуа-ля образ закачался.
3. Установка образа.
Переходим на вкладку "Deploy" и выбираем "Custom" в разделе "Operating System" и выбираем наш образ, остальные опции на этой странице на твой вкус и жмем "Place order"
и ждем пока проинсталлит.
Когда закончит инсталяцию, то придет письмо: Vultr.com: Subscription Activated.
Вместо "Installing" появится ссылка "Manage", нажимаем её.
4. Установка системы.
Нажимаем "View console"
В консоле увидим начало установки системы, устанавливаем систему.
Когда дойдет до шага установки софта "Software selection", оставляем звездочку только "SSH server" и "standart system utilities".
!!!! На последнем шаге "Finish the installation" нажимаем "
5. Теперь можно зайти по SSH на наш сервер.
Заходим не из под root (не пустит), а из под пользователя.
Когда зайдем, то меняем пользователя на root:
~$ su
6. Закоменнтим CD источник для пакетов nano /etc/apt/sources.list:
# deb cdrom:[Debian GNU/Linux testing _Jessie_ - Official Snapshot amd64 CD Binary-1 20150413-06:58]/ jessie main
и добавим репозиторий perusio:
deb http://debian.perusio.net unstable/
deb-src http://debian.perusio.net unstable/
Добавляем ключ:
apt-key adv --recv-keys --keyserver keys.gnupg.net add 4D722217
Обновляем источники:
aptitude update
Устанавливаем nginx:
aptitude -t unstable install nginx
проверяем версию, модули nginx:
nginx -V
должно быть так:
built by gcc 4.9.1 (Debian 4.9.1-19) <br />
TLS SNI support enabled<br />
configure arguments: --conf-path=/etc/nginx/nginx.conf --with-cc-opt=-fPIC --with-ld-opt=-pie --with-pcre-jit --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-ipv6 --with-file-aio --with-http_secure_link_module --with-http_mp4_module --with-http_image_filter_module --with-http_spdy_module --with-http_auth_request_module --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/nginx-upstream-fair --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/nginx-upload-progress-module --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/lua-nginx-module --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/ngx_http_delay_module --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/ngx_devel_kit --add-module=/home/appa/C/nginx/nginx-1.7.9/modules/ngx_cache_purge
А теперь наконец-то пришло время начать установку конфигурации Perusio!
Установка конфигурации Perusio
-
Переместим старую директорию
/etc/nginx
в/etc/nginx.old
. -
Клонируем гит репозиторий с гитхаба:
git clone https://github.com/perusio/drupal-with-nginx.git /etc/nginx
Редактируем конфигурационный файл
sites-available/example.com.conf
соответственно свои требованиям. Заменяешь example.com твоим доменом. -
Настраиваем PHP FPM в директории
/etc/php5/fpm
.-
Клонируем гит репозиторий:
git://github.com/perusio/php-fpm-example-config
. -
Проверяем
tcp
ветку, если она тебе подходит больше:git checkout -b tcpЕсли тебе больше подходят
unix
сокеты , то пропускаешь этот шаг и сразу переходишь к следующему. -
Меняем содержимое файлов
php-fpm.conf
иpool.d/www.conf
как тебе нравится. Добавь любой pool какой хочешь, если потребуется. -
Скопируй файлы в директорию назначения:
cp php5-fpm.conf /etc/php5/fpm
cp -a pool.d /etc/php5/fpm
-
(Пере)запускаем
php5-fpm
с помощьюservice php5-fpm restart
илиservice php5-fpm start, если первый запуск
. -
Проверяем, что unix сокеты правильно созданы и прослушиваются.
netstat --unix -l
или TCP сокеты:
или sudo netstat -t -l -p
Тогда покажет PHP CGI сокеты.
Имей ввиду, что по-умолчанию тип сокета UNIX и в конфиге настраиваем на прослушивание
unix:/var/run/php-fpm.sock
usingphp-fpm
и также ты должен соответственно настроитьupstream_phpcgi.conf
.
-
Клонируем гит репозиторий:
-
Создаем директорию
/etc/nginx/sites-enabled
и включаем виртуальный хост. - Перезагружаем конфиг Nginx:
-
/etc/init.d/nginx reload
- Проверяем, что наш сайт работает в браузере.
-
Удаляем директорию
/etc/nginx.old
. - Пока всё.
Полная версия с картинками и обновлениями: Настройка сервера на Digital Ocean под Друпал