Здесь я покажу, как поставить Nginx+PHP-FPM+Memcache+MariaDB на сервер с Debian 7.0.
Начнем!
У нас есть чистая Debian 7.0:
Debian GNU/Linux 7 \n \l
Для начала добавим репозиторий nginx и mariadb. Добавляем в /etc/apt/sources.list:
deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx
deb http://mariadb.mirror.nucleus.be//repo/5.5/debian wheezy main
deb-src http://mariadb.mirror.nucleus.be//repo/5.5/debian wheezy main
Обновляем информацию о пакетах и текущее ПО в системе:
apt-get update && apt-get upgrade
Далее ставим Nginx, PHP-Fpm, MariaDB, Memcache:
apt-get install nginx mariadb-server php5-fpm php5-mysql php5-memcache memcached php5-cli php5-gd
Первоначальная установка завершена. Начинаем настройку.
Сначала будем настраивать nginx. Файл настроек находится в /etc/nginx/nginx.conf
Количество воркер процессов, как правило, должно равняться количеству процессоров в системе. Узнать это количество можно командой
grep -c processor /proc/cpuinfo
У меня их 8. Поэтому ставлю
worker_processes 8;
Файлы виртуальных хостов у нас будут лежать в /etc/nginx/sites-available, а включенных хостов — в файле /etc/nginx/sites-enabled.
Создадим эти директории
mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
Подключим файлы в nginx.conf в блоке http:
include /etc/nginx/sites-enabled/*.conf;
Таким образом, nginx.conf вида:
user nginx;
worker_processes 8;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr — $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Сайты у нас будут храниться в /var/www/SITE_NAME.
Создадим директорию домена для site.com:
mkdir -p /var/www/site.com
А так же пустой файл конфигурации виртуального хоста:
touch /etc/nginx/sites-available/site.com.conf
Начинаем конфигурацию site.com. Открываем файл /etc/nginx/sites-available/site.com.conf и приводим к виду:
server{
server_name site.com www.site.com;
access_log /var/log/nginx/site.com.access.log;
error_log /var/log/nginx/site.com.error.log;
root /var/www/site.com;
location ~ \.php$ {
try_files $uri = 404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /
{
index index.php index.html index.htm;
}
}
Включаем наш сайт:
ln -s /etc/nginx/sites-available/site.com.conf /etc/nginx/sites-enabled/site.com.conf
И перезапускаем nginx:
invoke-rc.d nginx restart
Попробуем вывести phpinfo():
echo '' > /var/www/site.com/php.php
Если открыть наш site.com/php.php должен вылезть phpinfo.
Настройка PHP
Файл php.ini Находится здесь: /etc/php5/fpm/php.ini, а файл конфигурации php-fpm: /etc/php5/fpm/pool.d/www.conf Изменим user и group на nginx
pm.max_children = 8 #Равно количеству процессоров
Более полное описание по ссылке:
http://www.php.net/manual/ru/install.fpm.configuration.php
В файле /etc/php5/fpm/php.ini ставим cgi.fix_pathinfo=0 и перезапускаем сервис:
invoke-rc.d php5-fpm restart
Если нужен показ ошибок, то выставляем display_errors в On.
Выставляем корректные права и владельца:
chown -R nginx:nginx /var/www/site.com && chmod 750 /var/www/site.com
Настройка Memcached
Файл настроек находится в /etc/memcached.conf
В целом, менять ничего не требуется. Увеличим только размер памяти, выделяемой под memcached в 2 ГБ
-m 2048
И перезапустим memcaced
service memcached restart
Отличная тулза для просмотра статистики:
https://code.google.com/p/phpmemcacheadmin/