Краткое руководство по быстрой установке и настройке веб-сервера в связке Ubuntu Server 21.04, lighttpd, PHP и MariaDB (MySQL).
Установка сервера баз данных
Для начала необходимо установить MariaDB (MySQL) сервер. В подавляющем большинстве веб-сайтов это — один из главных шагов, без которого нет смысла запускать проект.
Ниже приведены несколько команд, которые помогут запустить сервер БД на начальном этапе:
# sudo apt install mariadb-client mariadb-server # sudo /usr/bin/mysql_secure_installation # sudo systemctl status mariadb
Состояние должно быть в активном режиме.
Более подробно об установке сервера БД MariaDB (MySQL) можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-debian-10-9-i-ubuntu-server-21-04/
Установка веб-сервера Lighttpd
Устанавливаем lighttpd и проверяем его статус
# sudo apt install lighttpd # sudo systemctl status lighttpd
Состояние должно быть в активном режиме.
Проверяем.
На другой машине в сети в адресной строке браузера вводим http://IP-адрес-сервера
Должна появиться страница по умолчанию Apache…
Страница по умолчанию lighttpd спрятана по адресу http://IP-адрес-сервера/index.lighttpd-debian.html
Эти страницы находится в каталоге /var/www/html/
Установка и настройка PHP, php-cgi и php-fpm
Устанавливаем необходимые пакеты
# sudo apt install php php-common php-gd php-mysql php-xml php-mbstring php-cgi php-fpm
и проверяем состояние службы php7.4-fpm
# sudo systemctl status php7.4-fpm
Затем открываем файл /etc/php/7.4/fpm/php.ini
# sudo nano /etc/php/7.4/fpm/php.ini
находим и раскомментируем там строку:
cgi.fix_pathinfo=1
Потом откроем файл /etc/php/7.4/fpm/pool.d/www.conf
# sudo nano /etc/php/7.4/fpm/pool.d/www.conf
и изменим строку
listen = /run/php/php7.4-fpm.sock
на
listen = 127.0.0.1:9000
В Ubuntu Server вместе с PHP обычно подтягивается и Apache. Его необходимо остановить и удалить из автозагрузки
# sudo systemctl stop apache2 # sudo systemctl disable apache2
Далее перезапустим службу php7.4-fpm
# sudo systemctl restart php7.4-fpm
После этого открываем /etc/lighttpd/conf-available/15-fastcgi-php.conf
# sudo nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
удаляем строчки:
"bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket",
и вместо них запишем такие:
"host" => "127.0.0.1", "port" => "9000",
Включаем модули fastcgi и fastcgi-php и перезапускаем службу lighttpd
# sudo /usr/sbin/lighty-enable-mod fastcgi # sudo /usr/sbin/lighty-enable-mod fastcgi-php # sudo systemctl restart lighttpd
Проверим работу PHP. Для этого создадим файл /var/www/html/info.php
# sudo touch /var/www/html/info.php
откроем его
# sudo nano /var/www/html/info.php
и запишем в нём такие строчки:
<?php phpinfo(); ?>
На другой машине в сети в адресной строке браузера введём http://IP-адрес-сервера/info.php и должна появиться страница с настройками PHP:
Настройка виртуальных хостов
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/
Создадим файл конфигурации виртуальных хостов /etc/lighttpd/vhosts.conf
# sudo touch /etc/lighttpd/vhosts.conf
Теперь откроем /etc/lighttpd/lighttpd.conf
# sudo nano /etc/lighttpd/lighttpd.conf
в самом конце файла добавим такую строчку:
include "/etc/lighttpd/vhosts.conf"
Затем откроем файл /etc/lighttpd/vhosts.conf
# sudo nano /etc/lighttpd/vhosts.conf
и пропишем в нём 2 виртуальных хоста — ws40.local и test.ws40.local:
$HTTP["host"] == "ws40.local" { server.document-root = "/var/www/ws40.local/" server.errorlog = "/var/log/lighttpd/ws40.local-error.log" } $HTTP["host"] == "test.ws40.local" { server.document-root = "/var/www/test.ws40.local/" server.errorlog = "/var/log/lighttpd/test.ws40.local-error.log" }
Для использования SSL в файл конфигурации виртуального хоста необходимо будет добавить:
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/ws40.local/web.pem" # Combined Certificate ssl.ca-file = "/etc/letsencrypt/live/ws40.local/chain.pem" # Root CA server.name = "ws40.local" # Domain Name OR Virtual Host Name server.document-root = "/var/www/ws40.local/" # Document Root server.errorlog = "/var/log/lighttpd/ws40.local_error.log" accesslog.filename = "/var/log/lighttpd/ws40.local_access.log" }
После этого перезапустим службу lighttpd
# sudo systemctl restart lighttpd
создадим директории для хранения файлов сайтов
# sudo mkdir /var/www/{ws40.local,test.ws40.local}/
и в каждой — файл index.html
# sudo touch /var/www/{ws40.local,test.ws40.local}/index.html
Открываем файл /var/www/ws40.local/index.html
# sudo nano /var/www/ws40.local/index.html
и впишем туда следующее:
<html> <head> <title>ws40.local start page</title> </head> <body> <p align="center">Welcome to ws40.local / lighttpd</p> </body> </html>
Также и /var/www/test.ws40.local/index.html
# sudo nano /var/www/test.ws40.local/index.html
<html> <head> <title>test.ws40.local start page</title> </head> <body> <p align="center">Welcome to test.ws40.local / lighttpd</p> </body> </html>
Как видим, виртуальные хосты также настроены корректно.