Краткая инструкция по быстрой установке и настройке веб-сервера в связке Debian GNU/Linux 10.10, HTTP-сервер nginx, PHP и MariaDB (MySQL).
Установка сервера баз данных
Для начала необходимо установить MariaDB (MySQL) сервер. В подавляющем большинстве веб-сайтов это — один из главных шагов, без которого нет смысла запускать проект.
Ниже приведены несколько команд, которые помогут запустить сервер БД на начальном этапе:
# apt install mariadb-client mariadb-server # /usr/bin/mysql_secure_installation # systemctl status mariadb
Состояние должно быть в активном режиме.
Более подробно об установке сервера БД MariaDB (MySQL) можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-debian-10-9-i-ubuntu-server-21-04/
Установка HTTP-сервера nginx, PHP 7.3 и php-fpm
Устанавливаем nginx и проверяем его статус
# apt install nginx # systemctl status nginx
Состояние должно быть в активном режиме.
Проверяем.
На другой машине в сети в адресной строке браузера вводим http://IP-адрес-сервера
Должна появиться страница по умолчанию:
Теперь устанавливаем PHP 7.3 с расширениями и php-fpm
# apt install php php-common php-gd php-mysql php-xml php-mbstring php-fpm
Проверяем статус службы php7.3-fpm
# systemctl status php7.3-fpm
Служба должна быть активна и работать
Настройка виртуальных хостов nginx
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/
Далее создадим необходимые каталоги для хранения файлов сайтов
# mkdir /var/www/{ws30.local,test.ws30.local}/
После этого создадим файлы конфигураций сайтов ws30.local и test.ws30.local и в них впишем:
# touch /etc/nginx/sites-available/ws30.local # nano /etc/nginx/sites-available/ws30.local
server { listen 80; root /var/www/ws30.local/; server_name ws30.local; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_index index.php; } }
# touch /etc/nginx/sites-available/test.ws30.local # nano /etc/nginx/sites-available/test.ws30.local
server { listen 80; root /var/www/test.ws30.local/; server_name test.ws30.local; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_index index.php; } }
Для активации сайтов создадим символические ссылки в каталоге /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/ws30.local /etc/nginx/sites-enabled/ # ln -s /etc/nginx/sites-available/test.ws30.local /etc/nginx/sites-enabled/
Проверяем конфиг nginx
# /usr/sbin/nginx -t
если всё нормально, то перезапускаем службу nginx
# systemctl restart nginx
Затем для каждого сайта создадим файл index.html и впишем в него такую информацию, чтобы можно было понять, что файл предназначен именно для определённого сайта
# touch /var/www/ws30.local/index.html # nano /var/www/ws30.local/index.html
<html> <head> <title>ws30.local start page</title> </head> <body> <p align="center">Welcome to ws30.local</p> </body> </html>
# touch /var/www/test.ws30.local/index.html # nano /var/www/test.ws30.local/index.html
<html> <head> <title>test.ws30.local start page</title> </head> <body> <p align="center">Welcome to test.ws30.local</p> </body> </html>
Настройка PHP 7.3 и php-fpm
Открываем файл /etc/php/7.3/fpm/php.ini
# nano /etc/php/7.3/fpm/php.ini
и после закомментированной строки
;cgi.fix_pathinfo=1
запишем такую:
cgi.fix_pathinfo=0
Перезапускаем службу php7.3-fpm
# systemctl restart php7.3-fpm
и на всякий случай nginx
# systemctl restart nginx
Теперь проверим работу PHP на сайте ws30.local. Для этого создадим файл /var/www/ws30.local/info.php
# touch /var/www/ws30.local/info.php
откроем его
# nano /var/www/ws30.local/info.php
и впишем такие строчки:
<?php phpinfo(); ?>
Проверяем.
На другой машине в сети в адресной строке браузера введём:
http://ws30.local/info.php
Должна появиться страница с информацией о настройках PHP на сервере:
Если появилась, значит PHP работает.
Подключение SSL-сертификатов
Один из самых эффективных способов настройки SSL-сертификатов — это через специализированные сервисы. Например — Certbot — https://certbot.eff.org/lets-encrypt/debianbuster-nginx
Там находится инструкция по установке и настройке сертификатов для Debian 10.
В файлах виртуальных хостов в секции server необходимо будет вписать прослушивание 443 порта:
listen 443;
а также пути к сертификатам сайтов.