记录在网站搭建时遇到的问题。

2021.9.18

今天闲的没事干,就翻了翻本人一个网站的 error_log
好家伙,不翻还好,一翻吓一跳。网站没建多久,错误文件倒是堆起来了。
用 vim 打开一看,是关于 PHP 的 session_start() 的问题。
上网一查,问题大概是由于用户 session 已经被记录后,再次请求引起其重复而导致的。

解决方法很简单,只要添加一个 session 的检测就行。
session_start(); 替换为 if (!session_id()) session_start(); 即可。

2021.9.20

开启 tcp-bbr ,这个很简单,教程一搜一大把。

2021.9.21

修改了一些我的 Anime List 网页。

  • css 文件分离出来
  • 增加 已完结 后时间的删除功能

2021.9.27

这几天忙着修改 Anime List 了,毕竟10月新番马上就开播了。
这次基本等于重新写了个。

本来是想着写个 scss 方便一点,结果发现7月的和10月的放一页就太长了,不方便,整个折叠又不美观。主要是因为10月增加的追番太多了

于是去学习,用 MDUI 来整了个 Material Design 出来。
之前没怎么接触过这种,基本上是模仿着文档一步步弄出来的。
不过手写有个很麻烦的点,就是每个页面的重复部分和不同部分都要注意到,而且要改动都要手动改……
还有就是重复劳动的部分太多了,有点浪费时间……
不过暂且先这样,看以后有空继续搞。这次实在是给我整累了。

2021.12.7

今天仔细审视了下字体,发现 Windows 非高分屏下网页默认字体渲染真令人头疼强迫症发作
于是到网上一搜,发现可以改动的字体挺多,比较简单方便的办法是引入一个 css 文件,利用字体优先级帮助实现各种系统下最合适且安全的字体。
我是直接在 Github 上找了一个别人写好的文件并引入。Github 地址:fonts.css
换了字体后,果然舒服多了~

另外,增加了2022年1月的页面,升级了 MDUI, 更改了html中的链接跳转地址。

2022.4.21

今天 apt upgrade 了一下,顺便看看网站后台。一看,好家伙,Typecho 1.2.0 发布了。
直接手贱更新,VOID 主题直接爆炸。
最近忙,就先用这个原主题吧。反正也没更新来着

2022.7.26

最近打算写自己看番的评价,就在这个 blog 上更新吧。
VOID 一直没更新,但找到了另一个还不错的主题 Cuckco,功能挺完备且最近一直在更新,故先用这个主题。
另添加了 MathJax 的支持,可以直接渲染数学公式了。

前段时间折腾了 HTTP/3 QUIC,但没成功。明明我完全跟别人操作一模一样但就开启不了…只能等官方支持了。

2022.7.28

虽说之前 HTTP/3 没能成功启用,但我这个人就是喜欢折腾。这又来尝试一下是不是编译工具版本较老的原因。
手动编译了最新版的 cmake perl 啥的,重新配置了 golang,甚至在本地编译了 gcc 最新版。结果传上去不好使。
发现 apt 出来的是旧版的原因主要是 Ubuntu 版本 20.04.4 LTS 太老,软件源太老。
升级了 22.04 LTS 以后再 apt upgrade 就能得到较新版本了。
升级的时候还因为 perl 变量配置的原因失败了,吓得我疯狂备份文件直接做好重装的打算了。

好在升级成功了。升级过程中还改变了 tcp-bbr,最好重新配置一下。
之后再重新编译 nginx。编译完发现 php 又不工作了,看来还是升级系统的锅。
又更新 lnmp 脚本到 1.9,安装多 php,再升级 php 到 8.0.21 ,才重新正常工作。
这下再在 nginx 配置里面增加 listen 443 http3 reuseport 和添加 alt-svc 以后,再访问网站,就可以用 HTTP/3 连接了。当然,需要浏览器也开启支持。

后来再想,也许之前就已经支持开启了,只不过我老是在那里纠结 QUIC。
不知为何 QUIC 协议是无法开启的,这个还是看等等官方支持吧。
另外由于使用 BoringSSLOSCP Stapling 是无法开启的。需要用大佬制作的补丁对源码进行修补。
不过开启还是挺麻烦的,又要用密钥生成文件又要设置定时任务,摸了(。

升级 php 还产生了一个问题。php8 以上版本对于函数参数的限制更加严格了,导致本人一个网站直接罢工,状态码 500。
那行,打开 php 的错误显示,在 php.ini 里面修改 display_errors 参数为 on
再重启 php-fpm 就生效了。再次访问就能看到错误报告了。
修改出错的文件以后就能正常访问了。

另外还搞了搞 zshoh my zsh,弄了点美化和插件。

还有一个问题很奇怪。因为 reuseport 只能用一次,我就在我的主站的配置文件里用了。
此时在别的配置文件里添加 alt-svc 后,会导致访问非主站的网站跳转到主站。大概是这样的吧。
这个问题不知道是我配置问题还是怎么的,反正这东西尝鲜也就图一乐,累了,懒得再折腾了,直接非主站不用 HTTP/3 就完事了。

这几天搞这个都没看番。终于把问题修得差不多了。

2022.11.01

其实之前就有把 VOID 乱改了改,适配了 Typecho 1.2.0,提交了 PR 并且过了。
今天搬出来用用,感觉没啥大问题。
换回来这个是因为这个的列表显示要美观的多,而且现在也没那么需要花里胡哨的功能了(。
而且 VOID 的黑幕真的大赞。

2023.2.8

今天照着网上的教程,给 VPS 添加了 ipv6 支持。
使用的是 HE.net 的 Tunnel Broker 服务。
起初有点点问题,双向都访问不上。然后不知道怎么整的又行了。
于是给 DNS 解析加上了 v6 地址,在 nginx 开启了 v6 监听,不过只有主站。
就可以使用 v6 访问了。不过浏览器喜欢优先 v6 访问,先看看有没有问题。

2023.2.12

昨天和今天,搞了一堆东西。可以说的,简单介绍一下。
主要是用 Docker,上了 Umami 和 Uptime-Kuma,顺便把反代配置上。
其实有点心动 Cloudflared 和 Zero Trust,这样直接在本地开服务,不用反代,只需要简单设置一下。
而且据说很安全?
另外就是给博客增加了站点地图。
有空再新编译下 nginx,并且考虑以后整体迁移入 Docker。

2023.3.5

上周日成功迁入 Docker 了。
其实做了挺多时间的,先把 MySQL 和 Nginx 迁入,因为比较简单。
上周日才把 PHP 也弄好,解决工作目录和数据库访问的一系列问题。
考虑之后记录一下迁移的一些细节。
至于目录挂载什么的,基本沿用以前的,保证配置文件的目录大致不变。
如此一来,迁移起来就很方便了。
不过我放这里两年了也没迁移过就是了。

刚刚顺便修了一个写入权限的问题,届时一起写到细节里。

2023.4.6

前几天 VPS 维护,升级了点配置还换了 IP。
感觉速度比以前快了,就是要全部改 DNS 解析。
能用 Traceroute 了,ipv6 也没问题了。

2023.8.4

好久没记了,简单说说这段时间做了啥。
之前那个 VPS 维护换 IP 纯粹是虚晃一枪,之后又改回来了,属于是我没看清楚。
不过这个机子现在重启一下,网络设置就会全部还原,还有 cron 也是。
这就有点麻烦的,因为 cron 里有更新证书的安排,甚至之前证书过期了我才发现。
网络还原的话,ipv6 又要每次设置。
凑合用吧。

然后更新了 Nginx 到最新版本,虽然我用的是个人修改的 Docker 镜像,但是现在 Nginx 官方已经合并了 QUIC 分支,也就是说现在官方支持 http3 了。
当然我还是用的上面的镜像,因为好用啊,各种模块都整合好了,也还在更新的。
Nginx 的 conf 配置文件需要做一些修改,具体在分离出了 http2 on; 和给每个网址的配置添加了 listen 443 quic;。此时只需要在一个配置文件中写 reuseport 即可。当然现在所有网址开 http3 也没任何问题了。另外就是修改 alt-svc,不多赘述。

还有一个改变是把域名的 DNS 解析迁移到了 Cloudflare。为什么要这么做呢,因为 cf 解析,生效实在是太快啦。还有就是也可以利用上 Cloudflare Pages 自定义域名。
因为这个改变,还要更新一下 acme.sh,顺便还增添了 RSA 证书,作为原 ECC 证书的补充。这里因为是申请的泛域名证书,所以必须要 DNS Challenge。为了方便于是用 DNS API。不得不说 cf 生效快真的方便,acme.sh 都不用等,很快啊。
另外也修改了 Nginx 的 ssl_ciphers。虽然之前就达到 A+ 评级了,但是改一改,抛弃一些相对不安全一点点的加密方式,感觉舒服一点。

其他的更改,就是部署了 RSSHub,Chatgpt-Next-Web,以及两个自己写的 Telegram Bot。

最后还有一个有意思且抽象的问题,当然现在已经解决了,这里简单记录一下。
这几个月以来,本 Blog 的页面底部的上线累计时长,都是有问题的。具体的说,就是是从 1970.1.1 开始计时的。
这个原因真的十分抽象。因为我之前有一篇文章,只写了开头,存了个草稿。这个草稿,因为尚未发布,他在数据库内的 create 也就是发布时间,是 0。
0 是什么意思,unixtime 的 0,不就是,1970.1.1 吗。
然后获取这个建站时间的函数,原理就是找到最早一篇文章的发布时间,然后输出出来用于计算。
这个最早一篇文章,本应是第一篇文章对吧,但是,因为这个 0 的存在,现在就变成这个 0 了。
于是我终于理解了这一切。
零门。
这个问题真找了我挺久了,没想到啊。

2023.8.24

记个笔记。

进入容器,改变加载命令:
docker run --rm -it --entrypoint=/bin/bash image-name

查看容器信息:
docker inspect image-name