Настройка Web-сервера на Debian 9 (nginx / php 7.2 / php-fpm / MySQL 5.7)
2018-02-18 11: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
Заходим по ip адресу нашего сервера и видим приветсвенную страниц 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
Устанавливаем 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/
Вот и всё.