SEO対策とセキュリティで企業をバックアップします。

ITエンジニアの技術力UPをお約束します。

備忘録:古いUbuntu14環境でhttp2対応 caddy & spawn-cgi で作るPHP環境 Roundcubeの設置

備忘録:古いUbuntu14環境でhttp2対応 caddy & spawn-cgi で作るPHP環境 Roundcubeの設置


指定された環境(Ubuntuだけど)がバージョンが古くphp7.xとかApache2.4.17以降がパッケージインストールできない。以前はダウンロードできたのに今は何故かレポジトリ追加してもリストされない。ということでphpソースコンパイル&spawn-fcgiで対応することにした。最終的にWEBメールのRoundcubeの設置リクエストがあったのでセットアップしましたがすんなり簡単に終わりました。めでたし!

php7.1をダウンロード&コンパイル。

最新のphpソースだとライブラリー関連で時々エラーや警告で痛い目に合うので、無難にphp7.1だといけるかな!?ってことでphp7.1をダウンロードしてコンパイルすることにしました。もっと上のバージョンでも成功するかもしれないので是非ご覧なっている方はチャレンジしてみてください。

# 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が実行できるように整える。

# 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設定が必要なケースが様々あるので今後ご紹介して行こうと思います。

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を起動します。

# service fastcgi  start
# service caddy  start

タグ: , , , , ,