Drupal глазами разработчика

[РЕШЕНО] настройка Nginx на Digital Ocean под Drupal

Настраиваю сервер Nginx для сайта c Domain Access на Диджитал Оушене.
Есть ли какие-нибудь особенности настройки его под Друпал для максимальной пользы?
----------------------------------------------------------------------------------------------------------------------
Настроил, может кому пригодится, использовал:
каплю — Debian 7 64 php 5.4 NGINX
1. Перенос:
# использовал SCP:
https://www.digitalocean.com/community/articles/how-to-migrate-a-mysql-d...
Но можно и проще (?):
https://www.digitalocean.com/community/articles/how-to-use-sshfs-to-moun...
Вроде неплохая подборка видео по переносу:
http://www.youtube.com/playlist?list=PL91978F0CB6BC302B
2. Установка сервера:
https://www.digitalocean.com/community/articles/how-to-install-drupal-wi...
Написано под Ubuntu 13.04, я ставил в Debian 7, всё норм.
# Сначала ставим всё необходимое:
sudo apt-get update
 
sudo apt-get install mysql-server php5-<a href="http://www.php.net/mysql"   rel="nofollow" ><span style="color: #000066;">mysql</span></a>
 
sudo apt-get install nginx

# Запускаем сервер:
sudo service nginx start

# Устанавливаем PHP:
sudo apt-get install php5-fpm

# Настраиваем PHP:
открываем php.ini
sudo nano <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>php5<span style="color: #66cc66;">/</span>fpm<span style="color: #66cc66;">/</span>php.ini

# Меняем на 0 (для безопасности):
cgi.fix_pathinfo=0

# Далее редактируем конфигурацию php5-fpm:
sudo nano <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>php5<span style="color: #66cc66;">/</span>fpm<span style="color: #66cc66;">/</span>pool.d<span style="color: #66cc66;">/</span>www.conf

# В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:
listen = <span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">var</span><span style="color: #66cc66;">/</span>run<span style="color: #66cc66;">/</span>php5-fpm.sock

# Рестарт php5-fpm:
sudo service php5-fpm restart

# Загружаем друпал:
wget http:<span style="color: #808080; font-style: italic;">//ftp.drupal.org/files/projects/drupal-7.25.tar.gz</span>

7.25 — меняем на актуальную версию.
(я делал драшем)
# Распаковываем:
tar xzvf drupal-7.25.tar.gz

7.25 — меняем на актуальную версию.
## Создаем БД и юзера:
# Заходим:
mysql <span style="color: #66cc66;">-</span>u root <span style="color: #66cc66;">-</span>p

# Создаем БД:
CREATE DATABASE drupal;

вместо drupal — можно любое название
# создаем юзера:
CREATE USER drupaluser<span style="color: #66cc66;">@</span>localhost;

# Устанавливаем пароль нового юзера password
SET PASSWORD <span style="color: #b1b100;">FOR</span> drupaluser<span style="color: #66cc66;">@</span>localhost= PASSWORD<span style="color: #66cc66;">(</span><span style="color: #ff0000;">"password"</span><span style="color: #66cc66;">)</span>;

# Даем юзеру привилегии:
GRANT ALL PRIVILEGES ON drupal.<span style="color: #66cc66;">*</span> TO drupaluser<span style="color: #66cc66;">@</span>localhost IDENTIFIED BY <span style="color: #ff0000;">'password'</span>;

# Обновляем MySQL:
<a href="http://www.php.net/flush"   rel="nofollow" ><span style="color: #000066;">FLUSH</span></a> PRIVILEGES;

# Выходим из MySQL:
<a href="http://www.php.net/exit"   rel="nofollow" ><span style="color: #000066;">exit</span></a>

# Копируем файлы:
Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.
(У меня в Debian 7 в /usr/share/nginx/www/)
# Создаем директорию drupal:
sudo <a href="http://www.php.net/mkdir"   rel="nofollow" ><span style="color: #000066;">mkdir</span></a> <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal

# Копируем файлы друпала из своей домашней директории:
cd ~
sudo mv drupal-<span style="color: #cc66cc;">7.25</span><span style="color: #808080; font-style: italic;">/* /usr/share/nginx/html/drupal/</span>

## Настройка Друпала:
# Копируем default.settings.php и переименовываем в settings.php
sudo cp <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal<span style="color: #66cc66;">/</span>sites<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span><span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span>.settings.php <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal<span style="color: #66cc66;">/</span>sites<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span><span style="color: #66cc66;">/</span>settings.php

# Даем права на запись:
sudo <a href="http://www.php.net/chmod"   rel="nofollow" ><span style="color: #000066;">chmod</span></a> a+w <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal<span style="color: #66cc66;">/</span>sites<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span><span style="color: #66cc66;">/</span>settings.php

# Меняем права для директории:
sudo <a href="http://www.php.net/chmod"   rel="nofollow" ><span style="color: #000066;">chmod</span></a> a+w <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal<span style="color: #66cc66;">/</span>sites<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span>

# Устанавливаем php модуль:
sudo apt-get install php5-gd

# Рестартим
sudo service php5-fpm restart

## Настраиваем виртуальные хосты:
# Копируем дефолтный конфиг и переименовываем в drupal (конфиг для нашего сайта):
sudo cp <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-available<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span> <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-available<span style="color: #66cc66;">/</span>drupal

# Редактируем наш конфиг:
sudo nano <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-available<span style="color: #66cc66;">/</span>drupal

Как то так:
server <span style="color: #66cc66;">{</span>
        listen   <span style="color: #cc66cc;">80</span>;
        root <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal;
        index index.php index.html index.htm;
        server_name 162.243.9.129;
        location <span style="color: #66cc66;">/</span> <span style="color: #66cc66;">{</span>
                try_files <span style="color: #0000ff;">$uri</span> <span style="color: #0000ff;">$uri</span><span style="color: #66cc66;">/</span> <span style="color: #66cc66;">/</span>index.php?q=<span style="color: #0000ff;">$uri</span><span style="color: #66cc66;">&</span><span style="color: #0000ff;">$args</span>;
        <span style="color: #66cc66;">}</span>
        error_page <span style="color: #cc66cc;">404</span> <span style="color: #66cc66;">/</span>404.html;
        error_page <span style="color: #cc66cc;">500</span> <span style="color: #cc66cc;">502</span> <span style="color: #cc66cc;">503</span> <span style="color: #cc66cc;">504</span> <span style="color: #66cc66;">/</span>50x.html;
        location = <span style="color: #66cc66;">/</span>50x.html <span style="color: #66cc66;">{</span>
              root <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>html<span style="color: #66cc66;">/</span>drupal;
        <span style="color: #66cc66;">}</span>
        <span style="color: #808080; font-style: italic;"># pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$</span>
        location ~ \.php$ <span style="color: #66cc66;">{</span>
                <span style="color: #808080; font-style: italic;">#fastcgi_pass 127.0.0.1:9000;</span>
                <span style="color: #808080; font-style: italic;"># With php5-fpm:</span>
                fastcgi_pass unix:<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">var</span><span style="color: #66cc66;">/</span>run<span style="color: #66cc66;">/</span>php5-fpm.sock;
                fastcgi_index index.php;
                <span style="color: #b1b100;">include</span> fastcgi_params;
 
                 <span style="color: #66cc66;">}</span>

Т.е.:
— поменяли root на /usr/share/nginx/html/drupal
— поменяли server_name из localhost на доменное имя твоего сайта или его IP
— поменяли «try_files $uri $uri/ /index.html;» на «try_files $uri $uri/ /index.php?q=$uri&$args;»
!!! Есть более интересный вариант, если установить
sudo apt-get install nginx-doc

то в директории /usr/share/doc/nginx-doc/examples/, уже есть готовый конфиг, заточенный под друпал:
cd <span style="color: #66cc66;">/</span>usr<span style="color: #66cc66;">/</span>share<span style="color: #66cc66;">/</span>doc<span style="color: #66cc66;">/</span>nginx-doc<span style="color: #66cc66;">/</span>examples<span style="color: #66cc66;">/</span> 
gunzip drupal.gz
# Активируем конфигурацию:
sudo ln -s <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-available<span style="color: #66cc66;">/</span>drupal <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-enabled<span style="color: #66cc66;">/</span>drupal

# Удаляем дефолтную:
sudo rm <span style="color: #66cc66;">/</span>etc<span style="color: #66cc66;">/</span>nginx<span style="color: #66cc66;">/</span>sites-enabled<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">default</span>

# Перегружаем сервер:
sudo service nginx restart

# Открываем IP сайта (или домен)/drupal/setup.php и устанавливаем друпал.
-------------------------------------------------------------------------------------------
А вот здесь уже готовый конфиг, но немного сложноватый:
https://github.com/perusio/drupal-with-nginx/blob/D7/README.md
с этим (от perusio) конфигом используем сборку сервера из http://debian.perusio.net/unstable/
3. Настройка мультисайтинга:
https://www.digitalocean.com/community/articles/how-to-enable-multiple-s...
4. настройка DNS:
я просто добавил домены в ДНС на оушене и прописал у регистратора — ns1.digitalocean.com ns2.digitalocean.com ns3.digitalocean.com.
5. Кэширование:
http://www.echoditto.com/blog/more-drop-bucket-drupal-8-nginx-and-microc...
# Микрокэширование
в файле конфига твоего сайта на nginx добавляешь
location ~ \.php$ <span style="color: #66cc66;">{</span>
set <span style="color: #0000ff;">$no_cache</span> <span style="color: #ff0000;">""</span>;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$request_method</span> <span style="color: #66cc66;">!</span>~ ^<span style="color: #66cc66;">(</span>GET|HEAD<span style="color: #66cc66;">)</span>$<span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
set <span style="color: #0000ff;">$no_cache</span> <span style="color: #ff0000;">"1"</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$no_cache</span> = <span style="color: #ff0000;">"1"</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
add_header Set-Cookie <span style="color: #ff0000;">"_mcnc=1; Max-Age=2; Path=/"</span>;
add_header X-Microcachable <span style="color: #ff0000;">"0"</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$http_cookie</span> ~ SESS<span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span> <span style="color: #808080; font-style: italic;">#checks an auth'd user</span>
set <span style="color: #0000ff;">$no_cache</span> <span style="color: #ff0000;">"1"</span>;
<span style="color: #66cc66;">}</span>
<span style="color: #808080; font-style: italic;">#... lots of fastcgi stuff to do the caching</span>
<span style="color: #66cc66;">}</span>

http://valic.me/article/how-configure-nginx-php-fpm-mysql-memcached-apc-...
http://www.accella.net/drupal-7-memcached-apc-nginx-php5-fpm-squeeze-opt...
# Сжатие gzip:
http://stackoverflow.com/questions/15999606/enable-gzip-compression-with...
я просто вот так раскомментировал в конфиге nginx /etc/nginx/nginx.conf:
<span style="color: #808080; font-style: italic;">##</span>
<span style="color: #808080; font-style: italic;"># Gzip Settings</span>
<span style="color: #808080; font-style: italic;">##</span>
gzip on;
gzip_disable <span style="color: #ff0000;">"msie6"</span>;
gzip_vary on;
gzip_proxied any;
gzip_comp_level <span style="color: #cc66cc;">6</span>;
gzip_buffers <span style="color: #cc66cc;">16</span> 8k;
gzip_http_version <span style="color: #cc66cc;">1.1</span>;
gzip_types text<span style="color: #66cc66;">/</span>plain text<span style="color: #66cc66;">/</span>css application<span style="color: #66cc66;">/</span>json application<span style="color: #66cc66;">/</span>x-javascript text<span style="color: #66cc66;">/</span>xml application<span style="color: #66cc66;">/</span>xml application<span style="color: #66cc66;">/</span>xml+rss text<span style="color: #66cc66;">/</span>javascript;

6. Защита:
— связка nginx, logwatch, fail2ban и ufw http://habrahabr.ru/post/153589/
пока только fail2ban поставил, якобы из коробки работает, посмотрим:
http://putty.org.ru/articles/fail2ban-ssh.html
Мэмкеш настроить пока не получилось (php 5.4).
Панель не ставил — но хорошие отзывы по веста.
7. Для внеклассного чтения подробные/детальные руководства/гайды:
Очень неплохое руководства в друпал-nginx группе: https://groups.drupal.org/node/388488
С картинками + защита от атак +SSL: http://dashohoxha.blogspot.ru/2012/10/using-nginx-as-web-server-for-drup...
PS: Кому что непонятно пишите в коментах, это позволит мне лучше расписать тему.
________________________________________________________________________________________________________________
<<<ПРОДОЛЖЕНИЕ ЗДЕСЬ>>>, т.к. сюда уже не вмещается.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.