Запуск nginx + MariaDB + PHP на OpenBSD

Краткое руководство по минимальной настройке веб-сервера в связке 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>

Если страницы отличаются, значит настройки работают правильно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *