[РЕШЕНО] настройка 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-mysql

sudo apt-get install nginx

# Запускаем сервер:

sudo service nginx start

# Устанавливаем PHP:

sudo apt-get install php5-fpm

# Настраиваем PHP:

открываем php.ini

sudo nano /etc/php5/fpm/php.ini

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

cgi.fix_pathinfo=0

# Далее редактируем конфигурацию php5-fpm:

sudo nano /etc/php5/fpm/pool.d/www.conf

# В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:

listen = /var/run/php5-fpm.sock

# Рестарт php5-fpm:

sudo service php5-fpm restart

# Загружаем друпал:

wget http://ftp.drupal.org/files/projects/drupal-7.25.tar.gz

7.25 – меняем на актуальную версию.

(я делал драшем)

# Распаковываем:

tar xzvf drupal-7.25.tar.gz

7.25 – меняем на актуальную версию.

## Создаем БД и юзера:

# Заходим:

mysql -u root -p

# Создаем БД:

CREATE DATABASE drupal;

вместо drupal – можно любое название

# создаем юзера:

CREATE USER drupaluser@localhost;

# Устанавливаем пароль нового юзера password

SET PASSWORD FOR drupaluser@localhost= PASSWORD("password");

# Даем юзеру привилегии:

GRANT ALL PRIVILEGES ON drupal.* TO drupaluser@localhost IDENTIFIED BY 'password';

# Обновляем MySQL:

FLUSH PRIVILEGES;

# Выходим из MySQL:

exit

# Копируем файлы:

Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.

(У меня в Debian 7 в /usr/share/nginx/www/)

# Создаем директорию drupal:

sudo mkdir /usr/share/nginx/html/drupal

# Копируем файлы друпала из своей домашней директории:

cd ~ sudo mv drupal-7.25/* /usr/share/nginx/html/drupal/

## Настройка Друпала:

# Копируем default.settings.php и переименовываем в settings.php

sudo cp /usr/share/nginx/html/drupal/sites/default/default.settings.php /usr/share/nginx/html/drupal/sites/default/settings.php

# Даем права на запись:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default/settings.php

# Меняем права для директории:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default

# Устанавливаем php модуль:

sudo apt-get install php5-gd

# Рестартим

sudo service php5-fpm restart

## Настраиваем виртуальные хосты:

# Копируем дефолтный конфиг и переименовываем в drupal (конфиг для нашего сайта):

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/drupal

# Редактируем наш конфиг:

sudo nano /etc/nginx/sites-available/drupal

Как то так:

server { listen 80; root /usr/share/nginx/html/drupal; index index.php index.html index.htm; server_name 162.243.9.129; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/drupal; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$ location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params;   }

Т.е.:

- поменяли 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 /usr/share/doc/nginx-doc/examples/ gunzip drupal.gz

# Активируем конфигурацию:

sudo ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/drupal

# Удаляем дефолтную:

sudo rm /etc/nginx/sites-enabled/default

# Перегружаем сервер:

sudo service nginx restart

# Открываем IP сайта (или домен)/drupal/setup.php и устанавливаем друпал.
——————————————————————————————-

А вот здесь уже готовый конфиг, но немного сложноватый:

https://github.com/perusio/drupal-with-nginx/blob/D7/README.md

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$ { set $no_cache ""; if ($request_method !~ ^(GET|HEAD)$) { set $no_cache "1"; } if ($no_cache = "1") { add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; } if ($http_cookie ~ SESS) { #checks an auth'd user set $no_cache "1"; } #... lots of fastcgi stuff to do the caching }

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:

## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/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…

Короткое, но достойное + APC: http://blog.celogeek.com/201209/202/how-to-configure-nginx-php-fpm-drupa…

PS: Кому что непонятно пишите в коментах, это позволит мне лучше расписать тему.

Источник: http://www.drupal.ru/node/106587

[РЕШЕНО] настройка 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-mysql   sudo apt-get install nginx

# Запускаем сервер:

sudo service nginx start

# Устанавливаем PHP:

sudo apt-get install php5-fpm

# Настраиваем PHP:

открываем php.ini

sudo nano /etc/php5/fpm/php.ini

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

cgi.fix_pathinfo=0

# Далее редактируем конфигурацию php5-fpm:

sudo nano /etc/php5/fpm/pool.d/www.conf

# В нём находим строку listen = 127.0.0.1:9000, и меняем 27.0.0.1:9000 на /var/run/php5-fpm.sock:

listen = /var/run/php5-fpm.sock

# Рестарт php5-fpm:

sudo service php5-fpm restart

# Загружаем друпал:

wget http://ftp.drupal.org/files/projects/drupal-7.25.tar.gz

7.25 – меняем на актуальную версию.

(я делал драшем)

# Распаковываем:

tar xzvf drupal-7.25.tar.gz

7.25 – меняем на актуальную версию.

## Создаем БД и юзера:

# Заходим:

mysql -u root -p

# Создаем БД:

CREATE DATABASE drupal;

вместо drupal – можно любое название

# создаем юзера:

CREATE USER drupaluser@localhost;

# Устанавливаем пароль нового юзера password

SET PASSWORD FOR drupaluser@localhost= PASSWORD("password");

# Даем юзеру привилегии:

GRANT ALL PRIVILEGES ON drupal.* TO drupaluser@localhost IDENTIFIED BY 'password';

# Обновляем MySQL:

FLUSH PRIVILEGES;

# Выходим из MySQL:

exit

# Копируем файлы:

Директория сервера в Ubuntu 13.04 находится в /usr/share/nginx/html/.

(У меня в Debian 7 в /usr/share/nginx/www/)

# Создаем директорию drupal:

sudo mkdir /usr/share/nginx/html/drupal

# Копируем файлы друпала из своей домашней директории:

cd ~ sudo mv drupal-7.25/* /usr/share/nginx/html/drupal/

## Настройка Друпала:

# Копируем default.settings.php и переименовываем в settings.php

sudo cp /usr/share/nginx/html/drupal/sites/default/default.settings.php /usr/share/nginx/html/drupal/sites/default/settings.php

# Даем права на запись:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default/settings.php

# Меняем права для директории:

sudo chmod a+w /usr/share/nginx/html/drupal/sites/default

ИЛИ Есть классный скрипт (https://www.drupal.org/node/244924) который автоматически проставляет везде нужные права :

<pre>#!/bin/bash if [ $(id -u) != 0 ]; then printf "This script must be run as root.\n" exit 1 fi drupal_path=${1%/} drupal_user=${2} httpd_group="${3:-www-data}" # Help menu print_help() { cat <<-HELP This script is used to fix permissions of a Drupal installation you need to provide the following arguments: 1) Path to your Drupal installation. 2) Username of the user that you want to give files/directories ownership. 3) HTTPD group name (defaults to www-data for Apache). Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data HELP exit 0 } # Parse Command Line Arguments while [ $# -gt 0 ]; do case "$1" in --drupal_path=*) drupal_path="${1#*=}" ;; --drupal_user=*) drupal_user="${1#*=}" ;; --httpd_group=*) httpd_group="${1#*=}" ;; --help) print_help;; *) printf "Invalid argument, run --help for valid arguments.\n"; exit 1 esac shift done if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then printf "Please provide a valid Drupal path.\n" print_help exit 1 fi if [ -z "${drupal_user}" ] || [ $(id -un ${drupal_user} 2> /dev/null) != "${drupal_user}" ]; then printf "Please provide a valid user.\n" print_help exit 1 fi cd $drupal_path printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n" chown -R ${drupal_user}:${httpd_group} . printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n" find . -type d -exec chmod u=rwx,g=rx,o= '{}' \; printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n" find . -type f -exec chmod u=rw,g=r,o= '{}' \; printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" cd sites find . -type d -name files -exec chmod ug=rwx,o= '{}' \; printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n" printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n" for x in ./*/files; do find ${x} -type d -exec chmod ug=rwx,o= '{}' \; find ${x} -type f -exec chmod ug=rw,o= '{}' \; done echo "Done settings proper permissions on files and directories"

Копируешь код данный выше в файл и называешь его, нарример “fix-permissions.sh” и запускаешь: <pre>sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name</pre> т.е. с нашими данными, это примерно так: <pre>sudo bash fix-permissions.sh --drupal_path=/usr/share/nginx/www/директория_нашего_сайта --drupal_user=www-data</pre>

# Устанавливаем php модуль:

sudo apt-get install php5-gd

# Рестартим

sudo service php5-fpm restart

## Настраиваем виртуальные хосты:

# Копируем дефолтный конфиг и переименовываем в drupal (конфиг для нашего сайта):

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/drupal

# Редактируем наш конфиг:

sudo nano /etc/nginx/sites-available/drupal

Как то так:

server { listen 80; root /usr/share/nginx/html/drupal; index index.php index.html index.htm; server_name 162.243.9.129; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/drupal; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$ location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params;   }

Т.е.:

- поменяли 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 /usr/share/doc/nginx-doc/examples/ gunzip drupal.gz

# Активируем конфигурацию:

sudo ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/drupal

# Удаляем дефолтную:

sudo rm /etc/nginx/sites-enabled/default

# Перегружаем сервер:

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$ { set $no_cache ""; if ($request_method !~ ^(GET|HEAD)$) { set $no_cache "1"; } if ($no_cache = "1") { add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; } if ($http_cookie ~ SESS) { #checks an auth'd user set $no_cache "1"; } #... lots of fastcgi stuff to do the caching }

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:

## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/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: Кому что непонятно пишите в коментах, это позволит мне лучше расписать тему.

________________________________________________________________________________________________________________

<<<ПРОДОЛЖЕНИЕ ЗДЕСЬ>>>, т.к. сюда уже не вмещается.

Источник: http://www.drupal.ru/node/106587

Оптимизация Drupal (кеширование и все остальное)

Всем добрый день.

Нашел на одном сайте очень хорошую лекцию по оптимизации Друпал 6. Сделал все как там написано, мой сайт стал просто летать.
В лекцию входят:
Встроенная оптимизация Drupal
Оптимизация Drupal с помощью модулей
Оптимизация конфигурации и обслуживания Drupal
Оптимизация сервера

Некоторые сведения неточны, (например, пути в модуле authcache), но разобраться довольно легко.

Если это не противоречит правилам, то вот ссылка: http://www.intuit.ru/department/internet/algcso/8/2.html

Также рекомендую этот сайт для самообучения, надеюсь они никогда не уберут бесплатный доступ
З.Ы.: сайт не мой, хотя по-моему он на Друпале крутится, его раскрутка меня не интересует, материал выложил для помощи всем нуждающимся.

Источник: http://www.drupal.ru/node/52525

© 2009 Обзор CMS