
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