新しいWebサービスを開発したいと思い、今回はWebサーバをLiteSpeedでやってみることにしました。
が、新しいことはおおよそハマるので、結局調査開始からLaravel稼働まで1週間ほど費やしてしまいした・・・
目次
Dockerfileとdocker-composeについて
Docker Composeを利用して仮想サーバを管理します。
どちらのファイルも以下のGitHubから取得可能です。
今回のディレクトリ構成は、以下のような感じです。

Docker buildからlaravelを動かすまで
イメージのビルド
docker-compose.ymlファイルがあるディレクトリへ移動し、以下のコマンドでイメージのビルト、コンテナの起動を行います。
$ docker-compose build
$ docker-compose up -d
litespeed管理画面へのログイン
コンテナが無事に起動したら、コンテナにログインし、初期パスワードを確認します。
$ winpty docker-compose exec web bash
[root@6c71de6daed0 lsws]# cat /usr/local/lsws/adminpasswd
初期パスワードを確認したら、以下のURLから管理画面にログインします。
https://localhost:7080/login.php
初回アクセス時、SSL証明書の警告が表示されますが、自身の開発サーバなので構わずアクセスします。

php7.4のインストール、バーチャルホスト、リスナーの設定
デフォルトでphp7.3が入っていましたが、せっかくなのでphp7.4のバイナリをインストールします。
Dockerfileでは、php7.4バイナリのインストールに必要なパッケージも同時にインストールしています。
具体的な手順は、下記画像を参照してください。




phpのコンパイルシェルはセキュリティの関係でターミナルから実行してくれとのこと。
といっても、親切に実行シェルがフルパスで書いてあるので、コンテナに接続後、コピペしてエンターを押せばよいだけです。

上記表示になればコンパイル終了です。画面的にはあと1ステップ残ってそうですが、作業はこれで終わりです。
バーチャルホストの作成
laravel実行用にバーチャルホストを作成します。下記画像を参照してください。


画面に映っている部分以外はすべてデフォルトです

保存時にファイルがないエラーが出ますが、CLICK TO CREATE をクリックしファイル作成後に再度保存すれば大丈夫です。
リスナーの作成
ユーザーからのアクセスを受け付けるためのリスナーを作成します。設定は画像をば・・・





バーチャルホストで利用するphpバージョンを指定
デフォルトでphp7.4を利用するように設定を変更します。



設定を保存し、以下のURLにアクセス。
http://localhost:8088/
Test PHPでバージョンが7.4.3になっていることが確認できます。

Laravelを動かす
設定ファイル系をlaravel用に書き換えます。
(GUIからの変更方法がわからなかったので、ターミナルから直接編集しました)
Example バーチャルホストを参考に、以下の設定を挿入
編集ファイルは「/usr/local/lsws/conf/vhosts/laravel/vhconf.conf」です。
docRoot $VH_ROOT/public
context / {
allowBrowse 1
location $DOC_ROOT/
rewrite {
RewriteFile .htaccess
}
}
.htaccessにlaravel公式のリライト設定を挿入します。
ファイルの場所は「/var/www/laravel/public/.htaccess」ですね。
litespeedはapacheのリライトと互換性があるとのことで、apache用の設定がそのまま使えます。
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
ファイル設定後はGUIから再起動を行います。

後は、laravelプロジェクトを作成し、ホスト側のlaravelアプリケーションディレクトリにファイルを設置します。
今回はlaravel 配下に設置すればOK
やっとLaravelのデフォルト画面が拝めます
以上の設定でlitespeedでlaravelアプリが動くはずです。以下のURLにアクセスし、画面が表示されるか確認します。
http://localhost:8080/

やっとlaravelアプリが動きました! 隙間時間とはいえ、調査に1週間、この記事を書くのに3時間・・・長かった。
でも、使うかどうかはわかりません
まだ解決していない問題として、「サーバ設定の永続化」が残っています。
Dockerはご存じの通り、コンテナを破棄すれば内部のデータは消えてしまいます。そのためにVolumeなどを設定しデータの永続化を行いますが、litespeedはどこを永続化すればよいのかいまだにわからず・・・
今回行った設定も、コンテナを破棄したときに一緒に消えてしまうのです。
もうしばらく調べて、わからなかったらnginx続投かな・・・