はじめに
この記事では、Docker上でLiteSpeedを使ってLumenを動かすことを目標にします。
Lumen
Lumen
LumenはLaravelが作っている(?)、PHPのWebフレームワークで、Laravelより軽いことをウリにしているフレームワークです。
Lumenのアプリを作成する
# lumen installer のインストール $ composer global require "laravel/lumen-installer" # global require すると ~/.composer/vendor/bin 以下にバイナリが置かれるので、 # PATHを通しておく $ lumen --version Lumen Installer 1.1.1 $ lumen new lumen-litespeed
Lumenのアプリを動作確認してみる。
php -S localhost:8080 -t public
Lumen の質素なページが見られます。
Docker LiteSpeed
LiteSpeed とは
LiteSpeedはApache的なやつです。早いのがウリらしいです。
Docker の LiteSpeed イメージ
今回は https://github.com/phpearth/docker-php の 7.3-lightspeed
というやつを使うことにします。 README には 7.4 にもありそうな書き方がしてありますが、まだ 7.4 はありませんでした。
docker-compose を使います。とりあえず最小構成で。
version: '3' services: app: image: phpearth/php:7.3-litespeed ports: - "7080:7080" - "8088:8088"
- ポート 7080 は Lumen の管理ツールのポート
- ポート 8088 は Lumen の普通のポートです
これで docker-compose up -d
します。
http://localhost:8088/にアクセスするとWebページが見られます。
http://localhost:7080にアクセスするとLumenの管理ツールが見られます。今回はこれは使いません。
Docker LiteSpeed ファイル構造
/etc/litespeed/httpd_config.conf
がおおもとのconfigファイルです。
この中で virtualHost Example
が定義されています。
ここに定義されている通り、
virtualHost Example
に対応する設定ファイルは/etc/litespeed/vhosts/Example/vhconf.conf
vhRoot
が/var/lib/litespeed/Example
になります。
virtualHost Example{ vhRoot $SERVER_ROOT/Example/ allowSymbolLink 1 enableScript 1 restrained 1 maxKeepAliveReq smartKeepAlive setUIDMode 0 chrootMode 0 configFile $SERVER_ROOT/conf/vhosts/Example/vhconf.conf }
/etc/litespeed/vhosts/Example/vhconf.conf
を見ると docRoot $VH_ROOT/html/
とあるので、これがドキュメントルートになります。
これ以外にも色々設定が書いてあります。
Lumen のための設定
まず docker-compose.yml
のようにします。
version: '3' services: app: image: phpearth/php:7.3-litespeed ports: - 7080:7080 - 8088:8088 volumes: - ./lightspeed/vhosts:/etc/litespeed/vhosts - .:/var/lib/litespeed/Example
で、 lightspeed/vhosts/vhconf.conf
に以下のように設定する
# public にアクセスが行くようにする docRoot $VH_ROOT/public/ enableGzip 1 expires { enableExpires 1 } # これはなくてもいいかも indexFiles index.html, index.php errorPage 404{ url /error404.html } errorlog $VH_ROOT/logs/error.log{ logLevel DEBUG rollingSize 10M useServer 1 } accessLog $VH_ROOT/logs/access.log{ compressArchive 0 logReferer 1 keepDays 30 rollingSize 10M logUserAgent 1 useServer 0 } # Lumenでhtaccessを利用する # LiteSpeedはhtaccessがそのまま使える htAccess { accessFileName .htaccess allowOverride 1 } hotlinkCtrl { suffixes gif, jpeg, jpg allowedHosts allowDirectAccess 1 enableHotlinkCtrl 0 onlySelf 1 } # これ忘れないように accessControl { deny allow * } general { enableContextAC 0 }
これでdocker-compose up -d
して http://localhost:8088/ にアクセスすると先程の Lumen のレスポンスが見られます。
まとめ
Docker で phpearth の lightspeed のイメージを利用して Lumen のアプリケーションを動かすまででした。