Установка PHP 8.1.5 на Astra Linux Orel
28 ноября 2022 заканчивается поддержка PHP 7.4. Самое время задуматься о переходе на новую версию.
В предыдущей статье мы рассматривали установку из исходных кодов PHP версии 7.4.
Сегодня мы рассмотрим установку из исходного кода актуальной версии PHP - 8.1.5
Сборка может занять продолжительное время, поэтому лучше производить её на виртуальной машине с несколькими процессорами и минимум 2Гб оперативной памяти!
Обновление системы
Перед тем как устанавливать любые пакеты обновим систему:
sudo apt update && sudo apt upgrade
Установим требуемые пакеты:
sudo apt-get install autoconf build-essential curl libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 libreadline-dev libzip-dev libzip4 nginx openssl pkg-config zlib1g-dev libsqlite3-dev sqlite3 libonig-dev libpq-dev git autoconf bison re2c libpng-dev libldap2-dev libfreetype6-dev libfreetype6 libjpeg-dev
Конфигурирование и сборка
Загрузим исходный код:
wget https://github.com/php/php-src/archive/refs/tags/php-8.1.5.tar.gz
Распакуем
tar -xzvf php-8.1.5.tar.gz
Перейдем в папку с исходным кодом:
cd php-src-php-8.1.5
Запустим:
touch configure.sh chmod +x configure.sh
Создадим файл для конфигурирования:
mcedit configure.sh
С содержимым:
./configure --with-config-file-path=/etc/php/php8.1 \
--sysconfdir=/etc/php/php8.1 \
--enable-mysqlnd \
--with-pdo-mysql \
--with-pdo-mysql=mysqlnd \
--with-pdo-pgsql=/usr/bin/pg_config \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-phpdbg \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-zlib \
--with-curl \
--with-pear \
--with-openssl \
--enable-pcntl \
--enable-gd \
--with-jpeg \
--with-mysqli \
--with-readline \
--with-freetype \
--with-ldap
Запустим:
./buildconf --force
Запустим:
./configure.sh
Дождемся появления строки:
Thank you for using PHP.
Запустим:
make
Дождёмся сообщения:
Build complete. Don't forget to run 'make test'.
Тестирование сборки
Вы можете запустить
make test
Но запускать тест не обязательно. У меня с предупреждением не прошло три теста:
Bug #81577: (Exceptions in interrupt handlers: cleanup_live_vars) [ext/pcntl/tests/bug81577_3.phpt] (warn: XFAIL section but test passes)
Phar: bug #69958: Segfault in Phar::convertToData on invalid file [ext/phar/tests/bug69958.phpt] (warn: XFAIL section but test passes)
FPM: Buffered worker output decorated log with multiple continuous messages (stdout/stderr mixed) [sapi/fpm/tests/log-bwd-multiple-msgs-stdout-stderr.phpt] (warn: XFAIL section but test passes)
Если у вас после теста появятся ошибки или предупреждения, введите
Yes
И свой Email для отправки сообщения с ошибками разработчикам!
Установка
Запустим установку:
sudo make install
Проверим версию:
php -v
PHP 8.1.5 (cli) (built: May 3 2022 22:16:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
/usr/local/sbin/php-fpm -v
PHP 8.1.5 (fpm-fcgi) (built: May 3 2022 22:17:11)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
Проверим конфигурацию:
php-config
Usage: /usr/local/bin/php-config [OPTION]
Options:
--prefix [/usr/local]
--includes [-I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib]
--ldflags [ -L/usr/lib/x86_64-linux-gnu]
--libs [-lcrypt -lresolv -lcrypt -lreadline -ltermcap -lpq -lrt -lldap -llber -lutil -lrt -lm -ldl -lxml2 -lssl -lcrypto -lsqlite3 -lz -lcurl -lssl -lcrypto -lxml2 -lz -lpng16 -ljpeg -lfreetype -lonig -lsqlite3 -lxml2 -lxml2 -lxml2 -lxml2 -lz -lssl -lcrypto -lcrypt ]
--extension-dir [/usr/local/lib/php/extensions/no-debug-non-zts-20210902]
--include-dir [/usr/local/include/php]
--man-dir [/usr/local/php/man]
--php-binary [/usr/local/bin/php]
--php-sapis [ cli fpm phpdbg cgi]
--ini-path [/etc/php/php8.1]
--ini-dir []
--configure-options [--with-config-file-path=/etc/php/php8.1 --sysconfdir=/etc/php/php8.1 --enable-mysqlnd --with-pdo-mysql --with-pdo-mysql=mysqlnd --with-pdo-pgsql=/usr/bin/pg_config --enable-bcmath --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-mbstring --enable-phpdbg --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-zlib --with-curl --with-pear --with-openssl --enable-pcntl --enable-gd --with-jpeg --with-mysqli --with-readline --with-freetype --with-ldap]
--version [8.1.5]
--vernum [80105]
Создадим папку для файлов конфигурации:
sudo mkdir -p /etc/php/php8.1
Скопируем файлы конфигурации:
sudo cp php.ini-development /etc/php/php8.1/php.ini
sudo cp /etc/php/php8.1/php-fpm.conf.default /etc/php/php8.1/php-fpm.conf
sudo cp /etc/php/php8.1/php-fpm.d/www.conf.default /etc/php/php8.1/php-fpm.d/www.conf
PHP 8.1 готов к запуску.
Запускаем php-fpm как сервис
Создадим файл для запуска php-fpm:
sudo mcedit /lib/systemd/system/php-8.1-fpm.service
С содержимым:
[Unit]
Description=The PHP 8.1 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/var/run/php8.1-fpm.pid
ExecStart=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /etc/php/php8.1/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Включим сервис:
sudo systemctl enable php-8.1-fpm.service
Перезапустим:
sudo systemctl daemon-reload
Запустим сервис:
sudo systemctl start php-8.1-fpm.service
Проверим статус:
sudo systemctl status php-8.1-fpm.service
● php-8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php-8.1-fpm.service; enabled; vendor pres
Active: active (running) since Tue 2022-05-03 23:29:05 +11; 19s ago
Main PID: 5465 (php-fpm)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/php-8.1-fpm.service
├─5465 php-fpm: master process (/etc/php/php8.1/php-fpm.conf)
├─5466 php-fpm: pool www
└─5467 php-fpm: pool www
Проверка работоспособности php-fpm
Установим nginx:
sudo apt install -y nginx
Создадим файл:
sudo mcedit /etc/nginx/sites-available/php81_test
С содержимым:
server {
listen 9999 default_server;
listen [::]:9999 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
Создадим символическую ссылку:
ln -s /etc/nginx/sites-available/php81_test /etc/nginx/sites-enabled
Проверим конфигурацию Nginx:
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ошибок нет, так что можно спокойно перезапускать:
sudo service nginx restart
Проверим:
https://192.168.1.42:9999
Страница загружается.
Создадим файл:
echo "<?php echo phpinfo(); ?>" | sudo tee /var/www/html/test.php
Откроем:
https://192.168.1.42:9999/test.php
Как видите, всё работает.
Заключение
Сегодня мы рассмотрели установку PHP 8.1.5 из исходных текстов на Astra Linux Orel.
Установили все необходимые инструменты разработчика для сборки .
Сконфигурировали и запустили сборку проекта.
Установили PHP и создали файлы конфигурации.
Добавили возможность запуска php-fpm в качестве сервиса.
Установили nginx и настроили его для работы с php-fpm
Проверили работоспособность php с помощью phpinfo()
Добавить комментарий