Краткое руководство по минимальной настройке веб-сервера в связке nginx, СУБД MariaDB (MySQL) и PHP на ОС OpenBSD 6.9.
Установка сервера баз данных
В первую очередь устанавливаем СУБД MariaDB. Как это делается, можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-openbsd-6-9/
Установка HTTP-сервера
Теперь установим пакет nginx
# pkg_add nginx
Запускаем службу nginx и добавляем её в автозагрузку
# rcctl start nginx # rcctl enable nginx
Путь по умолчанию к файлам сайта /var/www/htdocs/. Создадим там файл index.html
# touch /var/www/htdocs/index.html
откроем его
# vi /var/www/htdocs/index.html
и вставим:
<html> <head> <title>nginx test</title> <body> <p align="center">Welcome to nginx / OpenBSD 6.9</p> </body> </head> </html>
На другой машине в сети в адресной строке браузера вводим:
http://IP-адрес-сервера
Если страница появилась, значит nginx работает.
Установка и настройка PHP
Затем устанавливаем пакеты для работы PHP:
# pkg_add php-7.4.21p0 php-mysqli-7.4.21p0 php-pdo_mysql-7.4.21p0 php-zip-7.4.21p0 php-bz2-7.4.21p0 php-gd-7.4.21p0 php-curl-7.4.21p0
Запускаем службу php74_fpm и добавляем её в автозагрузку
# rcctl start php74_fpm # rcctl enable php74_fpm
После этого открываем файл /etc/php-7.4.ini
# vi /etc/php-7.4.ini
и в нём после строки
;cgi.fix_pathinfo=1
запишем такую:
cgi.fix_pathinfo=0
Далее открываем файл /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
и в нём раскомментируем такой кусок конфига:
location ~ \.php$ { try_files $uri $uri/ =404; fastcgi_pass unix:run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Перезапускаем службы php74_fpm и nginx
# rcctl restart php74_fpm # rcctl restart nginx
После этого можно проверить работу PHP. Для этого в директории /var/www/htdocs/ создадим файл info.php
# touch /var/www/htdocs/info.php
в нём запишем такие строчки:
<?php phpinfo(); ?>
На другой машине в сети в адресной строке браузера вводим:
http://IP-адрес-сервера/info.php
и должны будем увидеть страницу с настройками PHP
Настройка виртуальных хостов
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/.
Открываем файл /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
и для создания виртуальных хостов перед последней закрывающей скобкой подключим файл /etc/nginx/vhosts.conf:
include /etc/nginx/vhosts.conf;
Затем создадим этот файл
# touch /etc/nginx/vhosts.conf
откроем его
# vi /etc/nginx/vhosts.conf
и в нём пропишем конфигурации хостов ws60.local и test.ws60.local
server { listen 80; server_name ws60.local; root /var/www/ws60.local; location / { root /var/www/ws60.local; index index.php index.html index.htm; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 80; server_name test.ws60.local; root /var/www/test.ws60.local; location / { root /var/www/test.ws60.local; index index.php index.html index.htm; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Перезапускаем службу nginx для активации изменений
# rcctl restart nginx
Теперь создадим необходимые каталоги для хранения файлов сайтов
# mkdir /var/www/{ws60.local,test.ws60.local}/
и в них — файл index.html
# touch /var/www/{ws60.local,test.ws60.local}/index.html
Откроем файл index.html для ws60.local
# vi /var/www/ws60.local/index.html
и запишем туда:
<html> <head> <title>ws60.local</title> </head> <body> <p align="center">Welcome to ws60.local webserver</p> </body> </html>
А также для test.ws60.local
# vi /var/www/test.ws60.local/index.html
<html> <head> <title>test.ws60.local</title> </head> <body> <p align="center">Welcome to test.ws60.local webserver</p> </body> </html>
Если страницы отличаются, значит настройки работают правильно.