Debian — это просто. Часть вторая. Установка LEMP стека — Nginx, MariaDB, PHP.
29.04.2015
Почему именно Nginx+MariaDB+php-fpm? Потому, что это наиболее удачный вариант для проектов, которые ограничены мощностью своего сервера. Эта связка требует меньше всего ресурсов для своей работы и при этом показывает хорошие результаты быстродействия. От Apache2 я отказался давно, и не жалею. Хотя он бывает незаменим в некоторых проектах, которые имеют узкую направленность.
Настройки репозиториев Debian
Чтобы иметь всегда свежу версию nginx и php, добавим репозитории самого nginx и проекта dotdeb. А так как на дотдебе уже давно лежит php 7, то его мы и будем устанавливать.
Добавим ключи репозитория:
wget -O - http://nginx.org/keys/nginx_signing.key|apt-key add - wget -O - https://www.dotdeb.org/dotdeb.gpg|apt-key add -
Пропишем репозитории в файле sources.list:
nano /etc/apt/sources.list
Добавив в конце такие строки:
deb http://nginx.org/packages/mainline/debian/ jessie nginx deb-src http://nginx.org/packages/mainline/debian/ jessie nginx deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all
Применим изменения:
apt-get update
Установка LEMP-стека
И так, установим сам стек:
apt-get install nginx php7.0-fpm php7.0 mariadb-server php7.0-mysql
В процессе установки он попросит, чтобы вы установили пароль для root-пользователя базы данных. Вы можете оставить его пустым, но я рекомендую установить пароль.
Настройка nginx
Настроим nginx:
nano /etc/nginx/nginx.conf
Привидем его конфиг к такому содержимому:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
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;
tcp_nodelay on;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
keepalive_timeout 60;
keepalive_requests 100;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
#Настройка сжатия данных
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_buffers 16 8k;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_static on;
#SSL
#ssl_session_cache shared:SSL:20m;
#ssl_session_timeout 10m;
#ssl_prefer_server_ciphers on;
#ssl_stapling on;
#resolver 8.8.8.8;
include /etc/nginx/sites-enabled/*.conf;
}
Теперь нужно сменить главную группу пользователя nginx и настроить права на папку, где будут лежать наши сайты.
mkdir /var/www chown www-data:www-data /var/www chmod 750 /var/www usermod -g www-data nginx
Nginx будет работать с правами nginx и состоять в группе www-data, а PHP работает с правами www-data. При соблюдении такой маски прав, nginx имеет доступ чтения, PHP имеет полный доступ. Если нужно разграничить права PHP между двумя сайтами, то создается другой пользователь под которым будет запускаться spawn-fcgi и добавить nginx в его группу.
Настройка php7.0-fpm
Тут мы только расскоментируем в файле:
nano /etc/php/7.0/fpm/pool.d/www.conf
строки:
listen.owner = www-data listen.group = www-data listen.mode = 0660