Краткая инструкция по быстрой установке и настройке веб-сервера в связке FreeBSD 13.0, HTTP-сервера nginx, PHP и MariaDB (MySQL).
Установка сервера баз данных
Для начала необходимо установить MariaDB (MySQL) сервер. Как это делается, можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-freebsd/
Установка веб-сервера
Теперь устанавливаем HTTP-сервер nginx
# pkg install nginx
Открываем файл /etc/rc.conf
# vi /etc/rc.conf
и в нём запишем строчку:
nginx_enable="YES"
Далее запускаем службу nginx
# service nginx start
На другой машине в сети в адресной строке браузера введём IP-адрес сервера:
http://IP-адрес-сервера
и увидим страницу nginx по умолчанию:
Установка и настройка PHP
Теперь установим PHP с расширениями, а также php-fpm
# pkg install php74 php74-mysqli php74-pgsql php74-pdo php74-zip php74-bz2 php74-gd php74-curl php74-json php74-session php74-fileinfo php74-opcache php74-mbstring php74-openssl php74-extensions
После этого скопируем файл /usr/local/etc/php.ini-production с именем php.ini
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
открываем его
# vi /usr/local/etc/php.ini
под закомментированной строчкой
;cgi.fix_pathinfo=1
напишем
cgi.fix_pathinfo=0
Также зададим файлу php.ini необходимые права
# chmod u+w /usr/local/etc/php.ini
Теперь откроем файл /usr/local/etc/php-fpm.d/www.conf
# vi /usr/local/etc/php-fpm.d/www.conf
исправим строчку
listen = 127.0.0.1:9000
на
listen = /var/run/php-fpm.sock
а также раскомментируем и при необходимости исправим такие строчки:
listen.owner = www listen.group = www listen.mode = 0660
Снова откроем /etc/rc.conf
# vi /etc/rc.conf
и добавим строчку:
php_fpm_enable="YES"
Далее запустим службу php-fpm
# service php-fpm start
Затем откроем файл /usr/local/etc/nginx/nginx.conf
# vi /usr/local/etc/nginx/nginx.conf
в секции server после строк
listen = 80; server_name = localhost;
добавить строчку:
# root /usr/local/www/nginx;
также находим строчки
location ~ \.php$ { ... }
и приводим к такому виду:
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
После этого перезапускаем службу nginx
# service nginx restart
Далее проверим работу PHP. Для этого создадим файл /usr/local/www/nginx/info.php и откроем его:
# touch /usr/local/www/nginx/info.php # vi /usr/local/www/nginx/info.php
в него запишем такие строчки:
<?php phpinfo(); ?>
На другом компьютере в строке браузера введём http://IP-адрес-сервера/info.php и должны будем увидеть страницу с настройками PHP
Настройка виртуальных хостов
Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/.
Для виртуальных хостов создадим файл /usr/local/etc/nginx/vhosts.conf
# touch /usr/local/etc/nginx/vhosts.conf
Затем откроем файл /usr/local/etc/nginx/nginx.conf
# vi /usr/local/etc/nginx/nginx.conf
и для создания виртуальных хостов перед последней закрывающей скобкой подключим файл /usr/local/etc/nginx/vhosts.conf:
include /usr/local/etc/nginx/vhosts.conf;
Теперь создадим каталоги для хранения файлов сайтов ws45.local и test.ws45.local, и выдадим права пользователю www группы www
# mkdir /var/www/ # chown -R www:www /var/www/ # mkdir /var/www/{ws45.local,test.ws45.local} # chown -R www:www /var/www/{ws45.local,test.ws45.local}
Открываем файл /usr/local/etc/nginx/vhosts.conf
# vi /usr/local/etc/nginx/vhosts.conf
и в него запишем следующие строчки:
server { listen 80; server_name ws45.local; root /var/www/ws45.local; location / { root /var/www/ws45.local; index index.php index.html index.htm; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/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.ws45.local; root /var/www/test.ws45.local; location / { root /var/www/test.ws45.local; index index.php index.html index.htm; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Затем перезапустим службу nginx
# service nginx restart
После этого создадим файл index.html в директории сайта ws45.local и откроем его
# touch /var/www/ws45.local/index.html # vi /var/www/ws45.local/index.html
и для проверки внесём в него строчки:
<html> <head> <title>ws45.local</title> </head> <body> <p align="center">Welcome to ws45.local webserver</p> </body> </html>
Также поступим и с сайтом test.ws45.local
# touch /var/www/test.ws45.local/index.html # vi /var/www/test.ws45.local/index.html
<html> <head> <title>test.ws45.local</title> </head> <body> <p align="center">Welcome to test.ws45.local webserver</p> </body> </html>
На другой машине в адресной строке браузера откроем
http://ws45.local
а также:
http://test.ws45.local