Настройка сервера Nginx с конфигурацией Perusio под Drupal

Главные вкладки

Аватар пользователя ttenz ttenz 10 мая 2015 в 14:27

Давно мечтал настроить сервер 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" нажимаем "", закрываем окно консоли, останавливаем сервер (кнопка "Stop"), переходим на вкладку "Custom ISO" и удаляем образ "Remove ISO".

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

должно быть так:

nginx version: nginx/1.7.9<br />
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

  1. Переместим старую директорию/etc/nginx в /etc/nginx.old.
  2. Клонируем гит репозиторий с гитхаба:
    git clone https://github.com/perusio/drupal-with-nginx.git /etc/nginx

    Редактируем конфигурационный файл sites-available/example.com.conf соответственно свои требованиям. Заменяешь example.com твоим доменом.

  3. Настраиваем 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 сокеты:

        netstat -t -l

      или sudo netstat -t -l -p

      Тогда покажет PHP CGI сокеты.

      Имей ввиду, что по-умолчанию тип сокета UNIX и в конфиге настраиваем на прослушивание unix:/var/run/php-fpm.sockusing php-fpm и также ты должен соответственно настроить upstream_phpcgi.conf.

  4. Создаем директорию /etc/nginx/sites-enabled и включаем виртуальный хост.
  5. Перезагружаем конфиг Nginx:
  6. /etc/init.d/nginx reload
  7. Проверяем, что наш сайт работает в браузере.
  8. Удаляем директорию /etc/nginx.old.
  9. Пока всё.

Полная версия с картинками и обновлениями: Настройка сервера на Digital Ocean под Друпал