一开始为了拥有自己的博客网站也是够折腾的,从起初的 hexo 到后面的 typecho,中间还折腾过不少次 wordpress 呢。奈何折腾来折腾去总是有些东西不满意,一开始最求花里胡哨的主题,在乎一些有的没的的东西。现在看来,当初就是不能安心写东西,以为把这些东西弄好之后才可以。现在看来真的太 naive 了啊。

起因

言归正传,这次不知如何又觉得 nginx 不好了,要换一个更轻量的 web 服务器来托管博客。之前使用的别人写好的 Docker 镜像,里面集成了 nginx 和 php-fpm 环境。而我就是闲的蛋疼,觉得要把 nginx 换成一个我认为的更轻量的 web 服务器。为啥要更轻量?可能我觉得 nginx 启动分成了 master 和 worker 进程,我觉得不需要这样,这样有点浪费。我需要一个只启动一个进程的服务器,选来选去就看中了 lighttpd。

为此,专门在网络查看相关的评测文章,结果找来了一篇 9 年前的文章。

对比的结果就是,lighttpd 相比于 nginx 根本没啥有啥啊,选了个寂寞看来。

支持 lighttpd

进过一番折腾和调试,结果就在👆了。顺便借着这个机会,又学习了一波 Dockerfile 的构建过程,这算是意料之外的收获了吧。下面要记录一下学习过程,不然过几天就忘记了可就亏大了。

配置 lighttpd

但凡是需要许多配置的东西,都是非常劝退人。我刚开始接触 linux 的时候,以为配置一个 ftp 服务器应该是非常简单的事情啊,就像 windows 一样,用鼠标点一点就配置好了。但是我错了,看了网上的安装 vsftp 的教程,真的非常劝退。

不过随着时间的推移,当你理解了这套思想后,就可以慢慢的接受了。下面来看看 lighttpd 的一下配置。

  • 修改 RootDocument
# {{{ variables
var.basedir  = "/var/www"  # fix: shorten path
var.logdir   = "/var/log/lighttpd"
var.statedir = "/var/lib/lighttpd"
# }}}

这里就是见文生意了,“basedir”就是我们的 RootDocument 啦。

  • 支持 php-fpm

php-fpm 是 fastcgi 的一种实现方式,与传统的 cgi 协议不同,fastcgi 是通过创建 daemon 进程通过 socket 进行通讯,相比于传统启动 cgi 进程的方式,这样显然可以节省许多系统调用方面的开销。

server.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
                    ( "localhost" =>
                        (
                            "host" => "127.0.0.1",
                            "port" => "9000"
                        )
                    )
                )

这里的配置看起奇奇怪怪,很容易就把括号给弄乱了。

  • 日志输出到控制台
# {{{ mod_accesslog
# accesslog.filename   = "/dev/pts/0"
accesslog.filename   = "/dev/stdout"
# }}}

这里默认是“/dev/pts/0”也就是假控制台,需要容器启动的时候携带 “--tty” 的参数才可以,不然直接报错(文件不存在)。

  • rewrite 重写路径

这个路径的重新可以帮助我们隐藏掉“.php”的小尾巴,可以让 url 看起来非常舒服。

# {{{ mod_rewrite
# see rewrite.txt
#
url.rewrite-if-not-file = (
    "^(.*)$"  =>  "/index.php$1"
)
# }}}

语法看起来奇奇怪怪,但是又好像非常的自然。神奇)

配置完成这些后,该踩的坑基本上都踩好了。

总结

看似做的工似乎无用,但是这个过程中还是学到了不少的东西的,比如说 alpine 构建的注意事项啦。最后勉强达到我想要的结果吧,以后基于 Docker Swarm 配上 RDS 可以很方便的进行水平扩展。

Last modification:August 9th, 2021 at 12:02 am
要饭啦~