🐳
超高速Webサーバー「LiteSpeed」をDockerで試してみる
この記事は、MacBook Air M1 に、Docker版のOpenLiteSpeed Arm版をインストールした奮闘記である。
LiteSpeedとは?
概要は、以下の記事に移動しました。
Debianへのインストール奮闘記は、以下の記事に移動しました。
LiteSpeedのセットアップ
Dockerのインストール
sudo port install docker
Dockerイメージのダウンロード
docker pull litespeedtech/litespeed
ダウンロード済のイメージの確認
docker images
LiteSpeedの起動
docker run -d --name litespeed -p 8088:8088 -p 7080:7080 litespeedtech/litespeed
プラットフォームが違うというエラーが表示される
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
72942972456e4a8d5df58dcede0656f895a9428af6471f2ba0b734a5e6ae44ef
ARM用のイメージを取得する
docker pull --platform linux/arm64/v8 litespeedtech/litespeed
すると、以下のエラーが表示される
Using default tag: latest
latest: Pulling from litespeedtech/litespeed
Digest: sha256:384043d7fa8f0ece3cc743fcc58ef69d68e5547358f1af6be0a231aff547ee08
Status: Image is up to date for litespeedtech/litespeed:latest
image with reference docker.io/litespeedtech/litespeed:latest was found but does not match the specified platform: wanted linux/arm64/v8, actual: linux/amd64
arm64には対応していないらしい。はい、終了。解散。
LiteSpeedのDockerイメージを削除する
イメージを削除する
- イメージのIDを調査
docker images
- イメージのIDを指定して削除ランニング中なので削除できない
docker rmi [イメージID]
Error response from daemon: conflict: unable to delete 503dbb5dd11c (cannot be forced) - image is being used by running container 72942972456e
- ランニング中のイメージを調査
docker ps
- イメージの停止
docker stop [コンテナーのIDかコンテナーの名前]
- イメージの削除
rmiは、ReMoveImageの略。イメージが停止していても、コンテナーでまだ使用されているため削除できない。docker rmi [イメージID]
停止しているコンテナーを削除するか、イメージを強制削除する。Error response from daemon: conflict: unable to delete 503dbb5dd11c (must be forced) - image is being used by stopped container 3ebe0212a56c
- コンテナーの削除
docker rm [コンテナーのIDかコンテナーの名前]
- イメージの削除
docker rmi litespeedtech/litespeed
公式ドキュメントにarm64用のダウンロード先があった
コメントで教えて貰いました。(ありがたい)
- arm64用のイメージをダウンロードする
docker pull ghcr.io/ndigitals/openlitespeed:latest
- 起動する既に他のWebサーバーが起動していると、80番や443番のポートが使用されているため、エラーになるかもしれない。
docker run --name openlitespeed -p 7080:7080 -p 80:80 -p 443:443 -it ghcr.io/ndigitals/openlitespeed:latest
コンテナ名をdocker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:443 -> 0.0.0.0:0: listen tcp 0.0.0.0:443: bind: address already in use.
litespeed
で作成したので、次回はコンテナ名の指定で起動できる。docker start litespeed
- sshでログイン
docker exec -it openlitespeed /bin/bash
- 管理画面にアクセスするユーザー名は
http://[IPアドレス or ホスト名]:7080
admin
だが、パスワードが未設定なのでログインできない。 - パスワードを設定する
- コンテナーにログインする:
docker exec -it openlitespeed /bin/bash
- パスワードの設定:
/usr/local/lsws/admin/misc/admpass.sh
- コンテナーにログインする:
- 再度管理画面にアクセスする
LiteSpeedの管理画面の使い方
詳細は以下の記事に移動した。エディターは、vi
もnano
もインストールされていないので、apt install nano
などでインストールしておくとよい。
.htaccess
Apacheで使っている.htaccess
をそのまま使っても動かない。具体的には、
-
RewriteBase
を認識していない(これはサポートして欲しい❗️) -
DirectoryIndex
、ErrorDocument
、RedirectMatch
はエラーなる -
<IfModule>
、<File>
、<FilesMatch>
、<Directorymatch>
もエラーになる
エラーログ /usr/local/lsws/logs/error.log
をチェックして、動かない理由を潰す必要がある。ちなみにエラーログには、こいつ大丈夫か?と思うくらい大量にエラーが出力される。
-
Server Configuration
からGeneral
タブを選択 -
Rewrite Control
のAuto Load from .htaccess
をYes
にしただけではダメ🙅 -
Virtual Hosts
から仮想ホストの設定を編集する必要がある - 仮想ホストの設定から
Rewrite
タブを選択しAuto Load from .htaccess
をYes
にする - LiteSpeedを再起動する
Rewrite(mod_rewrite)
URLのRewriteだけなら、.htaccess
を使わずに、LiteSpeed標準の Rewrite を使った方が良いかもしれない。
ApacheのRewrite Ruleの完全互換ではない。
-
RewriteBase
を認識していない(これはサポートして欲しい❗️)
設定方法
- 仮想ホストの設定から
Rewrite
タブを選択する -
Enable Rewrite
をYes
にする -
Rewrite Rules
に リライトルールを書く - LiteSpeedを再起動する
PHPのバージョンを7.4から8.3に変更する
以下の記事を参照。
デフォルトページをindex.htmlからindex.phpに変更する
- Server Configuration > General を選択
-
Index Files
を変更する
最後に使ってみた感想
めちゃくちゃいい❗️❗️
感動するので是非使ってみて下さい❗️❗️
Discussion
惜しい!!
公式 にある
にたどりついてほしかったです
貴重な情報ありがとうございます!