PHP+Nginx

Материал из BSD Howto
Перейти к навигации Перейти к поиску

Подготовка клетки для PHP+Nginx

Перед использованием этой статьи рекомендуется пройти по ссылке Qjail.

Создание отдельной файловой системы для клетки с PHP+Nginx в ZFS:

# zfs create zroot/usr/jails/www

Создание клетки c именем "www" и IPv4-адресом "192.168.0.104", запуск и управление клеткой:

# qjail create -4 192.168.0.104 www
# qjail start www
# qjail console www

Установка lang/php84

PHP - язык сценариев общего назначения с открытым исходным кодом, который особенно подходит для веб-разработок.

Подробная информация на сайте https://www.php.net/

Перед использованием этой статьи рекомендуется пройти по ссылке PKG.

Установка из пакета:

# pkg install php84
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 6 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        indexinfo: 0.3.1_1
        libargon2: 20190702_1
        libxml2: 2.11.9
        pcre2: 10.45
        php84: 8.4.5_1
        readline: 8.2.13_2

Number of packages to be installed: 6

The process will require 41 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/4] Fetching libxml2-2.11.9.pkg: 100%  872 KiB 893.4kB/s    00:01
[2/4] Fetching php84-8.4.5_1.pkg: 100%    5 MiB   5.0MB/s    00:01
[3/4] Fetching libargon2-20190702_1.pkg: 100%   69 KiB  70.2kB/s    00:01
[4/4] Fetching pcre2-10.45.pkg: 100%    1 MiB   1.5MB/s    00:01
Checking integrity... done (0 conflicting)
[1/6] Installing indexinfo-0.3.1_1...
[1/6] Extracting indexinfo-0.3.1_1: 100%
[2/6] Installing libargon2-20190702_1...
[2/6] Extracting libargon2-20190702_1: 100%
[3/6] Installing pcre2-10.45...
[3/6] Extracting pcre2-10.45: 100%
[4/6] Installing readline-8.2.13_2...
[4/6] Extracting readline-8.2.13_2: 100%
[5/6] Installing libxml2-2.11.9...
[5/6] Extracting libxml2-2.11.9: 100%
[6/6] Installing php84-8.4.5_1...
[6/6] Extracting php84-8.4.5_1: 100%

Проверка установки PHP:

# pkg version -v | grep php
php84-8.4.5_1                      =   up-to-date with remote

Копирование файла настроек:

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Установка часового пояса и т.д. в /usr/local/etc/php.ini:

date.timezone = Europe/Moscow
date.default_latitude = <ваше значение>
date.default_longitude = <ваше значение>

Установка автозапуска php_fpm в /etc/rc.conf:

# sysrc php_fpm_enable="YES"
php_fpm_enable:  -> YES

Запуск PHP-FPM:

# service php_fpm start
Performing sanity check on php-fpm configuration:
[28-Apr-2025 16:30:56] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
Starting php_fpm.

Проверка PHP-FPM:

# sockstat -l | grep php-fpm
www      php-fpm     1322 8   tcp4   127.0.0.1:9000        *:*
www      php-fpm     1321 8   tcp4   127.0.0.1:9000        *:*
root     php-fpm     1320 7   tcp4   127.0.0.1:9000        *:*

Установка www/nginx

Nginx - отличный web-сервер.

Подробная информация на сайте https://nginx.org/

Установка из пакета:

# pkg install nginx
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        nginx: 1.26.3_2,3
        pcre2: 10.45

Number of packages to be installed: 2

The process will require 9 MiB more space.
558 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching nginx-1.26.3_2,3.pkg: 100%  558 KiB 571.2kB/s    00:01
Checking integrity... done (0 conflicting)
[1/2] Installing pcre2-10.45...
[1/2] Extracting pcre2-10.45: 100%
[2/2] Installing nginx-1.26.3_2,3...
===> Creating groups
Using existing group 'www'
===> Creating users
Using existing user 'www'
[2/2] Extracting nginx-1.26.3_2,3: 100%
=====
Message from nginx-1.26.3_2,3:

--
Recent version of the NGINX introduces dynamic modules support.  In
FreeBSD ports tree this feature was enabled by default with the DSO
knob.  Several vendor's and third-party modules have been converted
to dynamic modules.  Unset the DSO knob builds an NGINX without
dynamic modules support.

To load a module at runtime, include the new `load_module'
directive in the main context, specifying the path to the shared
object file for the module, enclosed in quotation marks.  When you
reload the configuration or restart NGINX, the module is loaded in.
It is possible to specify a path relative to the source directory,
or a full path, please see
https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/ and
http://nginx.org/en/docs/ngx_core_module.html#load_module for
details.

Default path for the NGINX dynamic modules is

/usr/local/libexec/nginx.

Проверка установки Nginx:

# pkg version -v | grep nginx
nginx-1.26.3_2,3                   =   up-to-date with remote

Установка автозапуска Nginx в /etc/rc.conf:

# sysrc nginx_enable="YES"
nginx_enable:  -> YES

Запуск Nginx:

# service nginx start
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.

Проверка Nginx:

# sockstat -l | grep nginx
www      nginx       1544 6   tcp4   *:80                  *:*
root     nginx       1543 6   tcp4   *:80                  *:*