两天半 Typecho 折腾记录


By 阅读:133

文章目录

文章标签

none

好像没什么变化,新网站有何特别之处?新网站各处充斥着的Typecho是什么东西?我在部署Typecho中遇到了哪些问题又是如何解决的?有没有什么常用的实用命令?我们来挨个过一遍。

以及现在是三天整了(悲)

什么是Typecho?

Typecho 读作 /taɪpˌ'ekoʊ/

对于有需要的读者,您大可自己前往Typecho官方网站了解。对于“太长不读”的读者,Typecho是一个博客框架,它可以建立统一管理文章和页面的数据库,并将评论、账号等一并包括在内。感谢Typecho是因为它给我们建站提供了太多便利,至于麻烦事那是下一章才会聊到的。

上一个网站我就不贴在这里了,对我的黑历史感兴趣的可以去我的GitHub主页看一看,如果还能点点Star就更好了,谢谢各位。

这个新网站因为有了后端,各种评论、注册、登录都变得可行;缺点就是需要一直开着一台电脑,节假日出去玩就得停服咯。此外,由于家宽建站一直以来都不受运营商待见,所以为了端口通畅,还要用Cloudflare加一层防护。这导致在国内,网站访问速度变得非常慢,甚至有些地区直接无法访问。但鉴于网站访问量不大,购买云服务器性价比太低,就暂时先这样吧……

同样的,由于Typecho自带了一个后端数据库,所以文件管理似乎更方便了一点。当然了,因为电脑就在我手里,传文件什么的非常简单,所以Typecho自带的文件管理也不那么必要。而且上传文件还要加cid不是吗?我是不喜欢文章只有3篇,cid已经飙到15的感觉的……

让我们聊聊部署Typecho遇到的问题吧。

部署Typecho疑难杂症

通用安装

介绍

我使用了一台老MacBook Air作为服务器机器,系统停留在macOS Big Sur,不受Homebrew支持但自带一份PHP 7.3,还没装Docker(懒)。Web服务器使用Nginx,数据库选择SQLite后续还装了PHP 8.3

我折腾明白最重要的一点,各种服务器软件安装能用包管理器就用包管理器。各种软件之间相互依赖,路径不对$PATH没有就报错。

Nginx

Nginx很好装,使用brew install nginx就能一键安装。开机自启使用brew services start nginx,重载使用nginx -s reload,但是停止要用brew services stop nginx,不能用nginx -s stop,否则Homebrew那里会有点问题。(2025年1月3日更新:Homebrew用不了,就直接nginx -s stop吧。)

Nginx的location {}字段下定义的路径一定要分清是绝对路径还是相对路径。绝对路径不是以配置文件为根目录。

因为Typecho需要使用PHP,记得把类似下面的内容取消注释。

location ~ .*\.php(\/.*)*$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
    include        fastcgi_params;
}

注意,SCRIPT_FILENAME不是变量,无需调整。$fastcgi_script_name前需要改写到index.php所在的目录,比如/usr/local/var/www$fastcgi_script_name,注意$fastcgi_script_name前没有/

除了PHP,我们还需要配置伪静态。我个人的理解,就是把直接访问的链接,比如/about重定向到/index.php/about这样便可以调用PHP解析数据库里的页面,否则Nginx会直接检查网页根目录里的静态页面,找不到就是404。这同时也缩短了链接,可以满足“我想访问/index.php/welcome/9-Welcome但只想输入/welcome/9-Welcome”的需求。我的Nginx伪静态配置如下:

nginx.conf里,粘贴如下配置。注意自行合并和删除重复内容。

location / {
    root  /usr/local/var/www/home/test;
    index  index.html index.htm index.php;
    try_files $uri $uri/ /index.php?$args;
}

[!NOTE]

如果你在配置上面这段代码时出现问题,尝试使用这份旧代码。它们实际作用应该是相同的。

location / {
    root  /usr/local/var/www/home/www;
    index  index.html index.htm index.php;
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php) {
        rewrite (.*) $1/index.php;
    }
    if (!-e $request_filename) {
        rewrite (.*) /index.php;
    }
}

(现在AI这么发达,有啥不懂的,尽管把代码发给AI解释)

如果真的发生了404,不用担心,有Typecho兜底呢!404页面可以在usr/themes/<主题名>/404.php修改(如果没有就新建)。

Typecho 与 SQLite

安装Typecho,首先要安装数据库。我原本选择了MySQL,但是Homebrew安装xz的时候脚本有问题,装不下去了,就换成了SQLite。根据用途来说,SQLite更为合适,但我同样需要提醒各位,很多插件只支持MySQL不支持SQLite,如果你有严重的插件依赖,请想办法安装MySQL。据我所知,MySQL很乱也不一定免费。

Typecho下载好之后在根路径下新建一个文件夹,把Typecho扔进去就好了。记得使用php-fpm启动php FastCGI进行端口监听。随后打开install.php,按步骤一步一步走就OK了。

十分有用的链接:Typecho官方-常见问题

如果只有首页能打开,其它页面打不开,那么检查

  1. Nginx的location {}是不是设为了location ~ .*\.php(\/.*)*$
  2. php.inicgi.fix_pathinfo = 1(虽然我测试认为影响不大)。
  3. /usr/local/etc/php-fpm.d/www.confsecurity.limit_extensions = (空值)。(我也认为影响不大)

如果以上都没用,请自行查找/usr/local/var/log/nginx/error.log以确定自己的错误类型,然后搜索。

在macOS 11 Big Sur上安装PHP 8.3

体验后认为和PHP 7.3没什么区别。但还是用了新版本。

https://www.php.net/downloads 上下载最新版本PHP,解压,进入解压后的文件夹然后输入./configure --help获取完整的可用配置选项。一定要看完、理解、敲好再进行下一步!每次构建的时间都很长,大约在15分钟以上。如果构建完成再想修改,恕我见识短浅,只能重新跑一遍,所以尽量一遍过。如果你已经配置好了,跟随PHP官方安装步骤继续即可。我使用的方案为

./configure --enable-fpm --with-openssl --enable-calendar --enable-exif --enable-ftp --with-imap-ssl --with-iconv=/usr/local/opt/libiconv --enable-mbstring

配置过程中缺啥就用Homebrew下啥,大多数就是直接复制包名然后brew install <包名>即可,省去brew search省一些时间。

此外,执行make后命令行会提示执行make test进行检查。这完全没问题,但需要多花费5分钟左右的时间。我们可以根据官方文档直接执行make install,据我测试一般来说都没有问题。

新版本PHP和PHP-FPM位于/usr/local/bin/php/usr/local/bin/php-fpm,旧版本PHP和PHP-FPM位于/usr/bin/php/usr/sbin/php-fpm。新版本php.ini位于/usr/local/lib/。其他信息输入php -i查看。

十分有用的链接:PHP官方文档-Unix 系统下的 Nginx 1.4.x

Typecho 设置实用命令

我会在这里放一些实用工具。不仅方便我,同时也给所有配置Typecho甚至配置服务器的人一些工具。

查看端口占用

PHP-FPM端口号默认为9000。

lsof -i:<端口号>

启动PHP监听

php-fpm

终止正在运行的PHP监听

kill -s QUIT <进程PID>

发表评论

无需登录,电子邮件地址不会被公开。*为必填。

姓名 *
电子邮件*
站点
评论*