沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「折腾」Docker 化部署 lighttpd 并安装 Z-BlogPHP

本文原始リンクは以下の通りです:

「折腾」Docker 化部署 lighttpd 并安装 Z-BlogPHP

https://www.wdssmq.com/post/20210804429.html

写在前面#

在自己可控的前提下,探究「正确」的步骤。—— 沉冰浮水

起因は、ある学生がルーターに Z-BlogPHP をインストールしようとしましたが、環境が lighttpd で、パーシャル静的が正しく機能しませんでした。

IIS、Apache、Nginx は試したことがありますが、lighttpd は存在を知っているだけです。

Docker イメージリソース#

別の ssh-nginx イメージプロジェクトを変更して実装しようとしましたが、うまくいかなかったので、既存のものをフォークしました。

wdssmq/alpine-lighttpd-php: Lighttpd and PHP running on Alpine Linux in a Docker image:

過程で遭遇したいくつかの小さな問題:

Call to undefined function simplexml_load_string()

解決策:

php-xmlはインストールされていましたが、php-simplexmlを追加でインストールする必要があります。

また、php-mysqliを追加しましたが、「lighttpd.conf」のルールで定義されているmimetypeは不十分でした。

構築と使用#

データベースとnet_webは事前に作成されており、「【折腾】Docker 化安装 Z-BlogPHP_电脑网络_沉冰浮水」を参照してください。

# ディレクトリの作成とGitのクローン
mkdir -p /root/Git/
cd /root/Git/
git clone [email protected]:wdssmq/alpine-lighttpd-php.git

# イメージのビルド
cd /root/Git/alpine-lighttpd-php
docker build -t wdssmq/lighttpd-php .

# コンテナのデプロイ
DIR_lighttpd='/home/www/lighttpd'
PORT_lighttpd=8033
mkdir -p $DIR_lighttpd
cd ${DIR_lighttpd}
docker rm --force lighttpd-php
docker run --name lighttpd-php \
 --net=net_web \
 -p ${PORT_lighttpd}:80 \
 -v $(pwd):/var/www \
 -d wdssmq/lighttpd-php

# 「デバッグ」ログの表示
docker logs lighttpd-php

# 「デバッグ」コンテナに入る
docker exec -it lighttpd-php /bin/sh

ポート番号は8033にマッピングされていますが、必要に応じて変更してください。その後、Z-BlogPHP プログラムを'/home/www/lighttpd'ディレクトリにダウンロードしてください。

具体的なコマンドは、「下载 Z-BlogPHP - node.md」を参照してください。

パーシャル静的について#

Z-BlogPHP のデフォルトのパーシャル静的ルールは次のとおりです。

# Rewrite rules - Z-BlogPHP
url.rewrite-if-not-file = (
  "^/(zb_install|zb_system|zb_users)/(.*)" => "$0",
  "^/(.*.php)" => "$0",
  "^/(.*)$" => "/index.php/$0"
)

少し研究して設定に成功し、上記のイメージビルドにプリセットされています。しかし、それを説明するのは本当に難しいです。

ルールの定義以外にも、PHP を実行できるようにするためには、対応する「モジュール」を有効にする必要があります。パーシャル静的に対応するモジュールはmod_rewriteです。

しかし、事実は、lighttpd が PHP を解析・実行できるためには、それに対応する「モジュール」も有効にする必要があります。モジュールの名前はmod_fastcgiです。

結果的に、次のいずれの形式でも問題ありません。

一緒に書く:

server.modules = (
  "mod_fastcgi",
  # "mod_xxxx", # 他の有効または無効のモジュール、順序は理論的に重要ではありません
  "mod_rewrite"
)

追加の書き方 1:

# 明示的に定義する
server.modules = (
  "mod_fastcgi", # 最後の項目として「,」があってもなくても明確ではありません
  # "mod_xxxxx", # 他の有効または無効のモジュール、順序は理論的に重要ではありません
)

# 他の定義、コメント、または何もないかもしれません

# 追加してマージ
server.modules += ("mod_rewrite")

追加の書き方 2:

# 追加してマージする場合、server.modulesがすでに定義されているかもしれません
server.modules += ("mod_fastcgi")

# 他の定義、コメント、または何もないかもしれません

# 追加してマージ
server.modules += ("mod_rewrite")

したがって、最終的に「正しい」最も簡単な手順は次のとおりです。

PHP 自体が正しく実行され、定義済みの中でmod_rewriteモジュールが有効にされていない場合、以下の内容を元の「lighttpd.conf」ファイルの最後の行に「新しい行で」「追加」してパーシャル静的を有効にしてください。

# Rewriteモジュールを有効にする
server.modules += ("mod_rewrite")
# Rewrite rules - Z-BlogPHP
url.rewrite-if-not-file = (
  "^/(zb_install|zb_system|zb_users)/(.*)" => "$0",
  "^/(.*.php)" => "$0",
  "^/(.*)$" => "/index.php/$0"
)

それでもうまくいかない場合、この「チュートリアル」では、実際の操作で犯す可能性のあるエラーや、実際の環境で結果に影響を与える可能性のある差異を予測することはできません。数的には、可能性が本当に多すぎます。

Git のユーザー情報を再設定する#

git config --global user.name author #ユーザー名をauthorに設定
git config --global user.email [email protected] #ユーザーメールアドレスを[email protected]に設定
git config user.name nickname #ユーザー名をnicknameに設定
git config user.email [email protected] #ユーザーメールアドレスを[email protected]に設定
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。