PHP7.4を使うならApache2.4はソースインストールしたほうがいい@Ubuntu20.04なさくらのVPS

sudo apt install apache2 &&php2 …でインストールしたらphpファイルがダウンロードされるばかりで動かないよ、という壁にぶち当たった。どうもApache2.4系はfast-cgiを入れないといけないらしい。そしてapt installでインストールしたものにはモジュール追加に必須なmod_so.cが入っていない。ソースインストールしたほうがいいですね。

Apache2.4のソースをDLしてくる

必要なもの…Apache2.4本体、apr、apr-util
取ってこれる場所…本体:http://httpd.apache.org/download.cgi
         apr、apr-util:http://apr.apache.org/download.cgi

それぞれ

sudo wget url

解凍する。

sudo tar zxvf httpd-バージョン.tar.gz

Apache2.4のインストール

本体を解凍するとその中にsrclibというディレクトリがある。aprとapr-utilはsrclibの中に解凍して、mvでバージョン番号を消したものにリネームする。

sudo mv apr-バージョン apr 
sudo mv apr-util-バージョン apr-util

Apache2.4ディレクトリに戻ってconfigureする。

sudo ./configure --enable-so --prefix=/etc/apache2
sudo make
sudo make install

PCREっていうのがなくても怒られるのでその時はhttp://pcre.org/からDLしてインストールしとく。

sudo wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
sudo tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
sudo ./configure
sudo make
sudo make install

起動

sudo systemctl start apache2

mod_fcgidとfast-cgiの追加

http://httpd.apache.org/download.cgiから取ってくる。

sudo wget https://downloads.apache.org//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
sudo tar zxvf mod_fcgid-バージョン.tar.gz -C /usr/local/src/
cd /usr/loacl/src/mod_fcgid-バージョン
sudo ./configure.apxs     
sudo make     
sudo make install

configureでこける場合はapxsが入っていない。ので、こうする。

sudo apt-get install apache2-dev

fastcgiについてはhttps://qiita.com/Dr_Sin1/items/e26e2f1ffaa5ea6eebd2を参照。引用しとくと

#アーカイブからダウンロード&解凍
curl -O -k -L https://github.com/FastCGI-Archives/FastCGI.com/raw/master/original_snapshot/fcgi-2.4.1-SNAP-0910052249.tar.gz
tar xf fcgi-2.4.1-SNAP-0910052249.tar.gz
# #インストール
cd fcgi-2.4.1-SNAP-0910052249
./configure –prefix=/usr/local
# #fcgio.cppのインクルードがないとmakeに失敗するため追加
mv libfcgi/fcgio.cpp /tmp/original
echo “#include <stdio.h>” > libfcgi/fcgio.cpp
cat /tmp/original >> libfcgi/fcgio.cpp
rm /tmp/original
#
make sudo make install

FastCGI Libraryのインストール

最初の行は sudo wget urlでOK。
次の行はsudo tar zxvf ファイル名でOK。

php-7.4fpmのインストール

sudo apt install php7.4-fpm

ERROR: [pool www] cannot get uid for user ‘nginx’: Success (0) とか
ERROR: [pool www] cannot get uid for user ‘apache’: Success (0) のエラーが出る場合は

/etc/php/7.4/fpm/pool.d/www.confの47,48行目付近を

listen.owner  = www-data
listen.group = www-data

にすると上手くいく場合がある。

モジュールの有効化

sudo a2enmod

必要っぽいものを選ぶ。fastcgiとか。あとはうまくいくまでApacheを再起動、トライ&エラーする。
構文チェックはapache2 -tで。再起動はsudo systemctl restart apache2で。