LNPP 架构搭建 Typecho 新家简单记录

来新家玩呀

由于服务器上 PostgreSQL 和 Nginx 已经稳定运行了非常久,所以经过一段时间的考虑决定使用 Linux + Nginx + PostgreSQL + PHP 的架构。

安装 php

Nginx 需要 FastCGI 的加持来解析 PHP 页面,这里安装 php-fpm 。

sudo apt-get update
sudo apt-get install php-fpm

此时 Debian11 上的 PHP 版本为 php7.4 。

配置 Nginx

初次配合 Typecho 配置 Nginx 往往会忽略掉 pathinfo 和 伪静态化 ,所以可以参考参考 Typecho 官方文档

注意 FastCGI 不见得像文档所说监听在 127.0.0.1:9000 ,比如我的环境下就是 .sock 文件,所以 fastcgi_pass 需要按实际情况修改。这里放上我的配置供参考:

# /etc/nginx/sites-available/blog

server {
    listen 443;
    listen [::]:443;

    ssl_certificate_key /path/blog.inuyasha.love.key;
    ssl_certificate /path/blog.inuyasha.love.pem;

    root    /srv/blog;
    index    index.html index.htm index.php;

    server_name blog.inuyasha.love;

    limit_rate_after 2M;
    limit_rate 100k;

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }

    location ~ .*\.php(\/.*)*$ {
        include fastcgi.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }

    access_log /var/log/nginx/blog_access.log combined;
    error_log /var/log/nginx/blog_error.log;
}

确认配置完成后将其软链接到 sites-enabled ,测试后让 Nginx 重载配置:

$ sudo ln -s  /etc/nginx/sites-available/blog  /etc/nginx/sites-enabled/blog
$ sudo nginx -t
$ sudo nginx -s reload

如果配置正确,这时候访问域名应该就可以进入它的安装页面即 install.php

在 Step 1 起始的阶段, Typecho 会自动检测缺失的模块和目录的可读写性,有需要写权限的(如上传文件用的 uploads )将所有者改为 www-data (这是默认的 php-fpm 用户)就行,其他目录没有必要给写权限。

由于我们使用 PostgreSQL ,还需要单独安装驱动,所以我这里额外安装了这两个模块:

$ sudo apt-get install php-mbstring php-pgsql

连接 PostgreSQL

Typecho 的 Step 2 需要设置数据库。咱是本地连接,数据库密码留空即可,我只修改了端口号和数据库名,其他都留了默认。

直接连肯定是连不上的,需要修改 PostgreSQL 的 pg_hba.conf 最后添加一行:

local   blog-typecho    www-data        scram-sha-256

这里 blog-typecho 是指定的数据库名,和 Typecho 配置一致,注意 www-data 是运行 php-fpm 的用户名而不是 postgres 。具体可以参考手册。

创建 blog-typecho 数据库,11451 改为你自己端口号,当然默认端口不需要指定:

$ createdb -p 11451 -U postgres blog-typecho

重启 PostgreSQL 就再在 Typecho 中连接数据库就可以成功了,如果还不行就看日志吧。

$ sudo systemctl restart postgresql

完成 Typecho 配置

连接数据库后就没啥难度了,按提示键入你自己的用户密码即可,登录上以后就可以进行个性化配置了。

个性化

主题本来尝试跟两年前用得一样,使用 Material ,但是发现最新的 master 分支依然对最新的 Typecho 支持不是很好,于是放弃。

如果想尝试,要使用最新的 master 分支而不是从 release 下,另外安装一个依赖的模块:

$ sudo apt-get install php-xml

已知 bug 有搜索 bug :

Argument 1 passed to Utils\AutoP::parse() must be of the type string, null given, called in /srv/blog/var/Widget/Base/Contents.php on line 938

换了新的主题 Cuckoo 以及和它配套的友链插件

注意 Cuckoo 并不支持 PostgreSQL ,其友链插件也无法配合 PostgreSQL 使用,所以需要对 500 Database Query Error 等 bug 进行修复。

对 Cuckoo 主题的修复查看我fork中的提交,我尝试提 PR 但是并不知道会不会合并。

友链插件解压到 usr/plugins 下后,将我的 Pgsql.sql 放到插件根目录中,就可以正常在在 Typecho 后台启用这个插件。

顺便放上我使用版本的 Cuckoo ReleaseLinks plugin

其他配置遵循官方的文档就好了。创建一个独立页面,将自定义模版设置为“Links”,点击“发表页面”即可完成友链的创建。

友链头像防盗链

因为 Cuckoo 的友链页面是支持图像链接的,设置以后发现有些图片链接总是无法正常显示。这往往都是因为 referrer ,浏览器 F12 看一下就可以发现。

如果确定是这个原因,那么手动修改一下就好了:在 functions.php 第 455 行 img 标签中添加 referrerpolicy='no-referrer'

by SDUST weilinfox

posted @ 2022-07-29 16:15  桜風の狐  阅读(566)  评论(0编辑  收藏  举报