備忘録:古いUbuntu14環境でhttp2対応 caddy & spawn-cgi で作るPHP環境 Roundcubeの設置
2019年12月17日Linux Tips, テクニカル, トピックス, ノウハウ
指定された環境(Ubuntuだけど)がバージョンが古くphp7.xとかApache2.4.17以降がパッケージインストールできない。以前はダウンロードできたのに今は何故かレポジトリ追加してもリストされない。ということでphpソースコンパイル&spawn-fcgiで対応することにした。最終的にWEBメールのRoundcubeの設置リクエストがあったのでセットアップしましたがすんなり簡単に終わりました。めでたし!
php7.1をダウンロード&コンパイル。
最新のphpソースだとライブラリー関連で時々エラーや警告で痛い目に合うので、無難にphp7.1だといけるかな!?ってことでphp7.1をダウンロードしてコンパイルすることにしました。もっと上のバージョンでも成功するかもしれないので是非ご覧なっている方はチャレンジしてみてください。
1 2 3 4 5 6 7 8 9 10 |
# cd /usr/local/src # wget --no-check-certificate https://www.php.net/distributions/php-7.1.22.tar.bz2 # tar xvfj php-7.1.22.tar.bz2 # cd php-7.1.22 #./configure --prefix=/usr/local/lib/php7.1 --enable-mbstring --with-pdo-mysql ¥ --with-gd --with-jpeg-dir=DIR --with-png-dir=DIR --with-openssl ¥ --with-libxml-dir --enable-xml --enable-zip --with-bz2 --with-zlib ¥ --with-mysqli --with-libdir=lib64 --with-mcrypt # make # make install |
FAST CGI環境を構築しPHPが実行できるように整える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# apt install spawn-fcgi # vi /usr/local/sbin/php-fcgi ----/usr/local/sbin/php-fcgi --- #!/bin/bash /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9099 -u caddy -C 4 -f /usr/local/lib/php7.1/bin/php-cgi ----/usr/local/sbin/php-fcgi --- # vi /etc/init.d/fastcgi ----/etc/init.d/fastcgi --- #!/bin/bash PHP_SCRIPT=/usr/local/sbin/php-fcgi RETVAL=0 case "$1" in start) echo "Starting fastcgi" $PHP_SCRIPT RETVAL=$? ;; stop) echo "Stopping fastcgi" killall -9 php-cgi RETVAL=$? ;; restart) echo "Restarting fastcgi" killall -9 php-cgi $PHP_SCRIPT RETVAL=$? ;; *) echo "Usage: php-fastcgi {start|stop|restart}" exit 1 ;; esac exit $RETVAL ----/etc/init.d/fastcgi --- # chmod 755 /usr/local/sbin/php-fcgi # chmod 755 /etc/init.d/fastcgi |
Caddyの設定を行う
caddyのインストールは省きます。過去の記事から参照ください。caddy設定のところのみ掲載します。またroundcubeの設定も割愛します。あくまでもroundcubteの動作確認まで。phpコンテンツの作りによってrewrite設定が必要なケースが様々あるので今後ご紹介して行こうと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
email.example-case.red:443 { tls /etc/letsencrypt/live/email.example-case.red/fullchain.pem /etc/letsencrypt/live/email.example-case.red/privkey.pem root /var/www/roundcube gzip log /var/log/caddy/caddy-accesslog { rotate_size 50 rotate_age 5 rotate_keep 4 rotate_compress } errors /var/log/caddy/caddy-errors { rotate_size 50 rotate_age 5 rotate_keep 4 rotate_compress } header / { Strict-Transport-Security "max-age=31536000; includeSubdomains" } #Roundcubeの場合、シンプルに以下だけfastcgi向けの設定すれば問題ありません。phpmyadminもこれだけでOK。 fastcgi / 127.0.0.1:9099 php } |
サーバ起動
FASTCGIでPHP処理を待機させ、caddyを起動します。
1 2 |
# service fastcgi start # service caddy start |