Настройка Web-сервера на Debian 9 (nginx / php 7.2 / php-fpm / MySQL 5.7)

2018-02-18 12:50:00


Итак, у нас есть сервер с чистой Debian 9.

Установка актуальной версии nginx на Debian 9

Сперва ставим nginx. Узнаём версию ngix в текущем репозитории debian.


nginx:
Installed: (none)
Candidate: 1.10.3-1+deb9u1

Переходим на сайт nginx https://nginx.ru/ru/download.html и видим, что версия 1.10 считается устаревшей. Нам нужно ставить 1.12

Переходим на страницу пакеты для linux и читаем инструкцию по установке в debian. https://nginx.ru/ru/linux_packages.html

Для Debian/Ubuntu, для проверки подлинности подписи репозитория nginx, и чтобы избавиться от предупреждений об отсутствующем PGP-ключе во время установки пакета nginx, необходимо добавить ключ, которым были подписаны пакеты и репозиторий nginx, в связку ключей программы apt. Загрузите этот ключ с нашего веб-сайта и добавьте его в связку ключей программы apt, выполнив команду.

Скачиваем файл командой:

wget https://nginx.ru/keys/nginx_signing.key

Выполняем команду:

apt-key add nginx_signing.key

После чего добавляем в конец файла /etc/apt/sources.list строки:

deb http://nginx.org/packages/debian/ stretch nginx
deb-src http://nginx.org/packages/debian/ stretch nginx

Выполняем команду apt-get update. Затем проверяем,  кандидата на установку:

apt-cache policy nginx

nginx:
Installed: (none)
        Candidate: 1.12.2-1~stretch

Теперь можно приступать запуску и настройке nginx. Проверяем факт установки:

nginx -v
        nginx version: nginx/1.12.2

Запускаем ngixn и проверяем статус

nginx start
        service nginx status

Статус сервиса nginx

Заходим по ip адресу нашего сервера и видим приветсвенную страниц nginx.

Дефолтный html шаблон nginx

Если станица не открылась, возможно порт заблокирован firewall-ом. Выполните команды:

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
        ufw enable

Установка PHP 7.2 на Debian 9

apt-cache policy php

Installed: (none)
Candidate: 1:7.0+49
Version table:
1:7.0+49 500
        500 http://mirror.yandex.ru/debian stretch/main amd64 Packages

Из коробки идёт 7.0. Непорядок!

Выполняем команды:

apt-get -y install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
        sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Далее выполняем:

apt-get update

Проверяем

apt-cache policy php

php:
Installed: (none)
Candidate: 1:7.2+59+0~20180122053946.6+stretch~1.gbp70c3ba
Version table:
1:7.2+59+0~20180122053946.6+stretch~1.gbp70c3ba 500
500 https://packages.sury.org/php stretch/main amd64 Packages
1:7.0+49 500
500 http://mirror.yandex.ru/debian stretch/main amd64 Packages

Отлично! А теперь устанавливаем php через php-fpm:

apt install php-fpm

Проверяем:

php -v
        PHP 7.2.2-1+0~20180205160742.18+stretch~1.gbpb78b58 (cli) (built: Feb 5 2018 16:07:45) ( NTS )

Запускаем php-fpm:

php7.2-fpm start

Проверяем, что всё работает.

Устанавливаем дополнительные расширения для php, если они вам нужны:

apt install php-mbstring
apt install php-mysql
apt install php-gd

Настраиваем php-fpm и взаимодействие с nginx

Редактируем файл

/etc/php/7.2/fpm/pool.d/www.conf

Выставляем:

user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx

listen = /run/php/php7.2-fpm.sock

Создаём файл

/etc/nginx/php72.conf

И вставляем туда следующие строки:

index index.html index.htm index.php;
charset utf8;

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Редактируем файл

/etc/nginx/conf.d/default.conf Удаляем блок location.

Добавляем

root /var/www/default/

(предварительно создайте эту папки и выдайте права пользователю nginx) Создайте файл /var/www/default/index.php с содержимым:

<?php

phpinfo();

и подклюаем созданный ранее конфиг для взаимодействия с php

include php72.conf;

Запускаем, выполнив в консоли команду:

service php7.2-fpm start

Проверяем настройки nginx на корректность

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапускам php-fpm

php7.2-fpm restart

Перезапускаем nginx.

Устанавливаем MySQL 5.7 на Debian 9

apt-cache policy mysql-server

mysql-server:
Installed: (none)
Candidate: 5.5.9999+default
Version table:
5.5.9999+default 500
500 http://mirror.yandex.ru/debian stretch/main amd64 Packages

Непорядок! Версия старая. Редактируем файл:

nano /etc/apt/sources.list.d/mysql.list

Добавляем строки:

deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7
deb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7

Проверяем теперь. Если всё хорошо - устанавливаем:

root@sergeivl39:/etc/apt/sources.list.d# apt-cache policy mysql-server
mysql-server:
Installed: (none)
Candidate: 5.7.21-1debian9

apt install mysql-server

Проверяем статус mysql сервиса:

service mysql status

Статус MySQL сервиса

Устанавливаем PHPMyAdmin

apt-cache policy phpmyadmin
phpmyadmin:
Installed: (none)
Candidate: 4:4.6.6-4
Version table:
4:4.6.6-4 500
500 http://mirror.yandex.ru/debian stretch/main amd64 Packages

Старьё! Актуальная версия 4.7. Скачаем phpmyadmin напрямую и распакуем в нашу рабочую папку Переходим в нашу папку сайта

cd /var/www/default/

Качаем

wget https://files.phpmyadmin.net/phpMyAdmin/4.7.4/phpMyAdmin-4.7.4-all-languages.zip

Распаковываем архив и переименовываем появившуюся папку в pma:

unzip phpMyAdmin-4.7.4-all-languages.zip

Проверяем, открыв в браузере http://ВАШ_IP/pma/

И напоследок изменим владельца webroot на nginx:

chown nginx:nginx /var/www/default/

Вот и всё.