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

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq  FeedsPub-wdssmq

写在前边

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

起因是有位同学想在路由器里安装 Z-BlogPHP,环境是 lighttpd,然后伪静态没能正确生效;

IIS、Apache、Nginx 姑且都用过,lighttpd 也仅仅是知道其存在而已。

Docker 镜像资源

本想用另一个 ssh-nginx 镜像项目修改下实现,好像没成功,所以 Fork 了一个现成的;

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

https://github.com/wdssmq/alpine-lighttpd-php

过程中遇到的一些小坑:

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"
)

虽然稍加研究便配置成功,并且预置在了上边的镜像构建中。然而怎么解释真心好难。

除了规则定义外,还需要先启用相应的功能「模块」,伪静态对应的模块是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]

爱发电

本文标题:《「折腾」Docker 化部署 lighttpd 并安装 Z-BlogPHP》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20210804429.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

只要梦里出现学校的概念,形式和反抗好像也都不重要了,,天还没亮,骑自行车去上学,没走多远「想起来」并不需要上学的,下来搬起车原地调头然后推回家。。

《K 星异客》里,「青鸟」真的是等来的,或者说是突然出现然后引发改变的外部因素。。。

梦的最后也是又一次意识到教室里的同学只是幻境中的投影,被困住的只有我;虽然也终于总结出,在梦里从来没有和同学的投影有过冲突和争执,甚至还附和我反驳「管理者」身份被进一步放大并不特指某一个人的老师。。

就和大脑会突然播放某一首歌一样,「讨厌自己」这句话也是自己突然就会播放一次,然后频率更高。。

学校,学校,学校,总是梦到学校,,就好像灵魂被诅咒禁固一样。。

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔