Краткий HowTo по ручной установке NGINX + PHP-FPM + MariaDB на Debian 8.
Система:
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.1 (jessie) Release: 8.1 Codename: jessie
Обновляем список пакетов:
[simterm]
# apt-get update
[/simterm]
Содержание
Установка NGINX
Добавляем официальный репозиторий NGINX для Debian:
[simterm]
# wget http://nginx.org/keys/nginx_signing.key # apt-key add nginx_signing.key OK # echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list # echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
[/simterm]
Устанавливаем NGINX:
[simterm]
# apt-get update && apt-get install nginx # systemctl enable nginx Synchronizing state for nginx.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d nginx defaults Executing /usr/sbin/update-rc.d nginx enable
[/simterm]
Проверяем:
[simterm]
# service nginx status ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled) Active: active (running) since Sat 2016-02-13 09:21:49 UTC; 7s ago Main PID: 2195 (nginx) CGroup: /system.slice/nginx.service ├─2195 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─2196 nginx: worker process ├─2197 nginx: worker process ├─2198 nginx: worker process └─2199 nginx: worker process
[/simterm]
Порт:
[simterm]
# netstat -anp | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2195/nginx -g daemo tcp6 0 0 :::80 :::* LISTEN 2195/nginx -g daemo
[/simterm]
Страницу:
[simterm]
# curl localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> ...
[/simterm]
Установка PHP и PHP-FPM
Устанавливаем PHP и PHP-FPM:
[simterm]
# apt-get install php5 php5-mysql php5-fpm php5-curl
[/simterm]
Находим пользователя, под которым работает NGINX:
[simterm]
# ps aux | grep -E 'nginx.*worker' | grep -v grep | cut -d" " -f 1 nginx
[/simterm]
Редактируем файл /etc/php5/fpm/pool.d/www.conf
и меняем владельца сокета:
[simterm]
... listen.owner = www-data listen.group = www-data ...
[/simterm]
на пользователя NGINX:
[simterm]
listen.owner = nginx listen.group = nginx
[/simterm]
Запускаем:
[simterm]
# service php5-fpm start
[/simterm]
Проверяем:
[simterm]
# netstat -anp | grep php unix 2 [ ACC ] STREAM LISTENING 19353 5625/php-fpm.conf) /var/run/php5-fpm.sock
[/simterm]
Добавляем в автозапуск:
[simterm]
# systemctl enable php5-fpm Synchronizing state for php5-fpm.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d php5-fpm defaults Executing /usr/sbin/update-rc.d php5-fpm enable
[/simterm]
Настраиваем NGINX на работу с PHP-FPM.
Создаем каталог для файлов сайта:
[simterm]
# mkdir -p /var/www/vhosts/rtfm/aws-test.rtfm.co.ua
[/simterm]
Создаем файл phpinfo.php для проверки работы NGINX + PHP-FPM
:
[simterm]
# echo "<?php echo phpinfo(); ?>" > /var/www/vhosts/rtfm/aws-test.rtfm.co.ua/phpinfo.php
[/simterm]
Настраиваем NGINX:
server { listen 80; root /var/www/vhosts/rtfm/aws-test.rtfm.co.ua; server_name aws-test.rtf.co.ua; index index.php error_page 500 502 503 504 /50x.html; location / { try_files $uri $uri/ /index.php; } location = /50x.html { root /usr/share/nginx/html; } location ~ /.ht { deny all; } location ~ .php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Проверяем и перезапускаем:
[simterm]
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # service nginx restart
[/simterm]
Проверяем в браузере:
Установка MySQL/MariaDB
Выполняем:
[simterm]
# apt-get install mariadb-server
[/simterm]
Проверяем:
[simterm]
# mysql --version mysql Ver 15.1 Distrib 10.0.23-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# service mysql status ● mysql.service - LSB: Start and stop the mysql database server daemon Loaded: loaded (/etc/init.d/mysql) Active: active (running) since Sat 2016-02-13 10:23:01 UTC; 1min 4s ago CGroup: /system.slice/mysql.service ├─7489 /bin/bash /usr/bin/mysqld_safe ├─7490 logger -p daemon.err -t /etc/init.d/mysql -i ├─7628 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-log-error --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 └─7629 logger -t mysqld -p daemon.error
# netstat -anp | grep mysql tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 7628/mysqld
[/simterm]
Добавляем в автозапуск:
# systemctl enable mysql Synchronizing state for mysql.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d mysql defaults Executing /usr/sbin/update-rc.d mysql enable
На этом, в целом все.
Ссылки по теме
CentOS: установка NGINX + PHP-FPM
MySQL/MariaDB: тюнинг производительности #1: thread_cache_size
NGINX: виртуалхост под отдельным пользователем с PHP-FPM
NGINX: настройка сервера и PHP-FPM