Ubuntu
Базовые действия
- Перед обновлением PHP, если Пассворк установлен в облачной/виртуальной среде, создать снимок виртуального состояния ОС для восстановления работоспособности в случае некорректного обновления;
- Получить права
root
и обновить локальную базу данных пакетов:
- shell
sudo -i
apt-get update
Удаление PHP
Определить версию PHP:
- shell
php -v
В зависимости от используемой версии PHP (8.0 или 8.2) используйте следующие команды для удаления устаревшей версии.
Отключить модуль для веб-сервера Apache2:
- 8.2
- 8.0
a2dismod php8.2
a2dismod php8.0
Удалить основной пакет, драйверы и расширения PHP:
- 8.2
- 8.0
apt-get remove -y php8.2 php8.2-*
apt-get remove -y php8.0 php8.0-*
Удалить директорию с вложенными файлами PHP:
- 8.2
- 8.0
rm -rf /etc/php/8.2
rm -rf /etc/php/8.0
Установка PHP
Установить PHP и модули расширений:
- shell
apt install -y php8.3-cli php8.3-bcmath php8.3-fpm php8.3-curl php8.3-gd php8.3-intl php8.3-ldap php8.3-mbstring php8.3-mysql php8.3-opcache php8.3-pgsql php8.3-soap php8.3-zip php8.3-sqlite3 php8.3-xml php8.3-dev php-pear
Установка драйвера PHP MongoDB
Установить драйвер PHP MongoDB:
- shell
pecl install -f mongodb
Создать файлы конфигурации для загрузки и включения PHP MongoDB:
- shell
echo "extension=mongodb.so" | tee /etc/php/8.3/fpm/conf.d/20-mongodb.ini
echo "extension=mongodb.so" | tee /etc/php/8.3/cli/conf.d/20-mongodb.ini
Принудительно включить для Apache2 PHP и переключить альтернативную версию для исполняемых файлов:
- shell
update-alternatives --set php /usr/bin/php8.3
update-alternatives --set phar /usr/bin/phar8.3
update-alternatives --set phar.phar /usr/bin/phar.phar8.3
Изменение обработчика PHP веб-сервера на php-fpm
Убедиться, что служба php8.3-fpm запущена:
- shell
systemctl status php8.3-fpm
Запустить и активировать автозапуск службы, если она остановлена:
- shell
systemctl start php8.3-fpm
systemctl enable php8.3-fpm
Отредактировать виртуальный хост сервера с Пассворком, который настроен на работу по протоколу HTTPS:
- shell
nano /etc/apache2/sites-enabled/default-ssl.conf
Изменить обработчик .php-файлов, указав проксирование запросов к сокету php-fpm:
- shell
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
Проверить, что файл конфигурации виртуального хоста соответствует примеру:
- shell
<VirtualHost *:443>
ServerName passwork:443
DocumentRoot /var/www/public
<Directory /var/www/public>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Включить модули и перезапустить службы:
- shell
a2enmod rewrite proxy_fcgi setenvif
systemctl restart php8.3-fpm
systemctl restart apache2