最近在找一款轻便型的 CMS 系统,看能不能给产品搭建个尽管简陋,但还兼具基本功能的站点。WordPress 略微有点重,要是没有数据库依赖就最好了。于是发现有人推荐 Grav。
虽说不依赖数据库,不过它是 PHP 应用,懒得在 Windows 原生环境里配置了,而且还得搞 Web Server,所以决定在本地的 WSL 里面试验一下。下载前不知道在哪个页面瞟了一眼,需要 PHP 7.2+。巧了,现成的 WSL 版的 Ubuntu 18.04 里用 php -v
查看,刚好是 7.2。用 apt 安装了 php7.2-fpm,还有 nginx-core,一通操作和配置执行下来之后,浏览器里的 Grav 显示了一行字:需要 PHP 7.3.6+。对于一个懒人来说,够郁闷。升级 PHP 到 7.4,看着就麻烦,官方仓库不提供,需要添加第三方仓库源,试了一下,发现那玩意儿貌似是和 Apache 相关联的。在网上看到 Ubuntu 20.04 中,PHP 7.4 是有官方包的,要么执行个 do-release-upgrade
把 Ubuntu 升级到 20.04?试了一下,不知道哪儿的问题,失败了(但 Microsoft 商店里 Ubuntu 18.04 的描述中明确写的是可以的)。
不能再懒了。回家后把电脑重启切到 Ubuntu 20.04,执行这一系列的操作:
apt install nginx-core php7.4 php7.4-fpm
;- 对应修改
/etc/nginx/nginx.conf
以及/etc/php/7.4/fpm/php-fpm.conf
,使得 socket 通信畅通:- 先查看默认生效的 php-fpm 的配置文件(
/etc/php/7.4/fpm/pool.d/www.conf
),其中的监听语句为listen = /run/php/php7.4-fpm.sock
;到/etc/nginx/sites-enabled
目录下,将default
复制一份(如为grav
)编辑之,将其中 php 节内 fastcgi_pass 相关语句放开(要特别记住把 snippet 那一行有的话也放开,否则可能解析传递不到 php-fpm),sock 文件名改为与上面一致的 /run/php/php7.4-fpm.sock 即可;为了避免冲突,把default
删除(反正也就是个软链接)
- 先查看默认生效的 php-fpm 的配置文件(
- 启动 php7.4-fpm 和 nginx 服务;
可以执行个 curl localhost
检测一下,接下来部署 grav:
- 把 grav 的安装包解压至
/var/www
(生成的子目录为grav-admin
); - 修改
grav-admin
目录的属主为www-data
; - 前文中由
default
复制而来的grav
站点文件中的默认 www 根目录是/var/www/html
,把www
改为grav-admin
;并把index.php
也加到默认文档列表中; - 此时尝试访问 grav,会先要求安装 php 的 mbstring扩展,安装后再试,会继续要求 curl、gd、xml、zip 这几个扩展,安装后就好。
至此 Grav 的首页应该可以正常打开了,但是,一旦要访问其它页面(例如它首页右上的那个 Typography),就会显示 404。首页一开始就有一段红字说明此问题可能会出现,还给了一个解决问题的引导链接,看了看也没有什么用处,反正我没改好。而且,从 Ubuntu 20.04 重启切回 Windows,在 WSL 新安装了 Ubuntu 20.04 又来了一遍,也一切依然。