「折腾」Docker 化部署 lighttpd 并安装 Z-BlogPHP
条评论写在前边
在自己可控的前提下,探究「正确」的步骤。——沉冰浮水
起因是有位同学想在路由器里安装 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_电脑网络_沉冰浮水」;
1 | # 创建目录并拉取 Git |
映射端口号为8033
,可自行更改,之后下载 Z-BlogPHP 程序到'/home/www/lighttpd'
目录中即可;
具体命令行见:「下载 Z-BlogPHP - node.md」
关于伪静态
Z-BlogPHP 预置提供的伪静态规则如下;
1 | # Rewrite rules - Z-BlogPHP |
虽然稍加研究便配置成功,并且预置在了上边的镜像构建中。然而怎么解释真心好难。
除了规则定义外,还需要先启用相应的功能「模块」,伪静态对应的模块是mod_rewrite
;
然而事实是,lighttpd 能够解析执行 PHP 同样需要开启其相应的「模块」,模块名是mod_fastcgi
;
就结果来说,以下几种形式都可以;
写在一起:
1 | server.modules = ( |
追加写法 1:
1 | # 显示定义一次 |
追加写法 2:
1 | # 追加并合并,在此之前可能已经定义过 server.modules,也可能没有; |
所以最终「正确」的最简步骤只能是:
在 PHP 本身能够正确执行的前提下,并且已有定义中并末开启mod_rewrite
模块,那么请尝试在原有「lighttpd.conf」文件的最末尾「另起一行」「追加」以下内容以开启伪静态:
1 | # 启用 Rewrite 模块 |
如果仍然无法成功,作为「教程」,并不能预见你实际操作时会犯下的错误,以及实际环境中会影响结果的差异性,从数量意义上,可能性真的太多太多了;
Git 又忘记设置用户信息了
1 | git config --global user.name author #将用户名设为author |
1 | git config user.name nickname #将用户名设为nickname |