Debian: установка LEMP – NGINX + PHP-FPM + MariaDB

Автор: | 15/02/2016
 

debian-logo_lenny2Краткий 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]

Проверяем в браузере:


debian_nginx_php_fpm_1

Установка 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: установка MariaDB

CentOS: установка NGINX + PHP-FPM

MySQL/MariaDB: тюнинг производительности #1: thread_cache_size

NGINX: виртуалхост под отдельным пользователем с PHP-FPM

NGINX: настройка сервера и PHP-FPM