アイネクシオWebサイトドクター

WebサイトやWebシステムの悩みを解決します

スキル

  • PHP
  • Python
  • C#
  • Java
  • Swift
  • Dart
  • HTML(CSS
  • Javascript
  • MySQL
  • PostgreSQL
  • Sqlite
  • Access
  • Redhat系 Linux
  • Debian系 Linux
  • CodeIgniter
  • fuelPHP
  • CakePHP
  • flutter
  • CLIP STUDIO PAINT

Ubuntu18.04 LTS に PHP8.3をインストール

2024/04/19 2024/04/19

Category:PHP, Ubuntu, 開発環境 Tag:,

Ubuntu18.04 LTS の環境で、PHP8.3の環境が必要になったので準備します。
パッケージがPPAにまだ含まれていないので(2024.04.19 時点)、ソースからビルドします。

ツールとライブラリをインストール

sudo apt install build-essential libxml2-dev libsqlite3-dev

PHPソースをダウンロードして展開

wget https://www.php.net/distributions/php-8.3.0.tar.bz2
tar -xvjf php-8.3.0.tar.bz2
cd php-8.3.0

オプション指定でコンフィグレーション

./configure --enable-fpm --with-mysqli --with-pdo-mysql --with-sqlite3

ビルドとインストール

make
sudo make install

Apacheの設定

sudo vi /etc/apache2/sites-available/000-default.conf

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>

PHP-FPMのサービスファイル作成

sudo vi /etc/systemd/system/php8.3-fpm.service

[Unit]
Description=The PHP 8.3 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/run/php8.3-fpm.pid
ExecStart=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

PHP-FPMの設定ファイルの作成

sudo vi /usr/local/etc/php-fpm.conf

[global]
pid = /run/php8.3-fpm.pid
error_log = /var/log/php8.3-fpm.log
include=/usr/local/etc/php-fpm.d/*.conf

PHP-FPMのプール設定

sudo vi /usr/local/etc/php-fpm.d/www.conf

[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

PHP-FPM、Apacheの再起動

sudo systemctl daemon-reload
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl restart apache2

ここまでだとサーバーを再起動した場合、/run/php が失われてしまうため、以下の設定を追加します。

サービスファイル作成

sudo vi /etc/systemd/system/php-fpm-prestart.service

[Unit]
Description=Create /run/php directory for PHP-FPM
Before=php8.3-fpm.service

[Service]
Type=oneshot
ExecStart=/bin/mkdir -p /run/php
ExecStart=/bin/chown www-data:www-data /run/php
ExecStart=/bin/chmod 755 /run/php
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

サービスの有効化

sudo systemctl enable php-fpm-prestart.service
sudo systemctl start php-fpm-prestart.service
sudo systemctl daemon-reload
sudo systemctl restart php8.3-fpm

これでどうでしょうか、うまくいくと思います。

アバター画像
プログラマーとして存在しています。 コーヒーとヌーノ・ベッテンコート、リッチーコッツェンが大好き。ボクシングも大好き。家族も音楽も好き。仕事もそれなりに好き。仕事ください。

https://lit.link/grooveline

執筆者:TAKAHIRO