Здесь я покажу, как поставить 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/