博客 Blog

新 WordPress 发布失败的解决办法

在 WordPress 升级更新区块样式的编辑器之后,很多人就会惊喜地发现自己无法更改和发布新的文章了。通过“工具 – 站点健康”的检查可以发现,是 RestAPI 出现了问题,会显示 404 Not found。这两个问题的关联性在于 WordPress 的新的编辑器会使用 RestAPI 来保存文章。

在搜索一番之后,中文博客中记载的解决方法是使用 classic editor 插件,这个插件似乎不会调用到 RestAPI,所以能够正常的发布文章。但是既然 WordPress 更新了这么炫酷的编辑器,为什么不用呢。而且 RestAPI 这个问题放在这里一直会是个问题,现在是编辑器出问题,以后不好说别的地方不会出现问题,所以要从根本解决。

参考 Stack Overflow 上的回答,应该先尝试一线在 404 的 url 前加一个 index.php,以我的域名为例就是 https://www.mrwhoami.com/index.php/wp-json/wp/v2/types/post。如果依然 404,应该先参考这个链接。如果能够访问,那么应该启用 mod_rewrite。

网上的回答就到此为止了,然而就我的网站而言,我已经启用了 mod_rewrite,并且项目目录下的 .htaccess 也很正常。在找不到具体原因的情况下,结合在路径中间增加 index.php 就能访问的事实,我目前的解决方案是在“设置-固定链接”里自定义固定链接,就在中间增加 index.php。这样一来在牺牲了少许链接美观之后,完美的启用了 RestAPI,编辑器也恢复了正常。当然,如果以后发现更好的办法,我还会继续跟进。

搭建使用 Let’s Encrypt 的 Git 服务网站

目标

  • 搭建一个私有的 Git 服务网站用于存放作业等非公开项目
  • 不需要开放注册,最好有 HTTPS
  • 邮件通知最好是有的(其实没有也无所谓)

使用的主要服务及软件

  • Apache2:网站服务器软件
  • Let’s Encrypt:免费 HTTPS 证书源
  • Gogs:Git 服务网站

搭建流程

    1. 参考 Gogs 官方文档搭建好 Gogs 服务,先使用自带的网页服务测试是否能够正常运行 Gogs。
    2. 安装 Apache 2 用于提供网页服务,能显示出来刚装好的示例页面就可以,这里还涉及不到转发。使用 Apache 2 而不是直接利用 Gogs 自带的网页服务的理由主要有两点:
      • 80 端口和 443 端口只能被 root 用户利用,所以使用 git 用户运行的 Gogs 无法直接使用 80 或 443 端口,虽然该问题可通过配置 iptables 转发进行解决,但是转发却无法解决下面的问题;
      • 想要通过 Let’s Encrypt 的 bot 简单直接的获取证书,他的 bot 会注入一个网页来验证网站的所有者,如果使用 Gogs 自带的网页服务需要手动插入一个网页然后再手动验证,十分麻烦,使用 Apache 是最简单直接的方法,全自动一步到位,git 证书到手。
    3. 使用 Let’s Encrypt 的 Bot 为网站获取证书,跟着他官网教程走就好。(在这里我选的是把所有 HTTP 服务重定向到 HTTPS,所以之后修改网页代理我也只修改了 <name>-le-ssl.conf)。
    4. 为 Apache 启用 proxy 和 proxy_http 插件。
    5. 修改虚拟主机的配置,为 Apache 添加反向代理,主要是添加下面四行(7480 是我设置的 Gogs 网页服务的端口,可以根据需求修改):
      ProxyPreserveHost On
      ProxyRequests off
      ProxyPass / http://127.0.0.1:7480/
      ProxyPassReverse / http://127.0.0.1:7480/
      
    6. 修改 Gogs 配置,把涉及端口和协议的部分修改好,主要是下面的几个,域名和端口看情况修改:
      [server]
      PROTOCOL         = http
      HTTP_PORT        = 7480
      DOMAIN           = git.mrwhoami.com
      ROOT_URL         = https://git.mrwhoami.com/
      
    7. (可选)为 Gogs 添加开机启动服务,参考官方 FAQ
    8. 重启 Gogs 服务和 Apache2 服务。

注意事项

  • 每次修改 Apache 2 的配置记得 restart 或者 reload 服务。
  • Email 可以通过配置 SMTP 解决,也是参考 Gogs 官方文档就好,发不出去有可能是VPS 或者 IPS 给屏蔽了,请联系服务提供商。
  • Gogs 配置里的 Protocol 依然是 HTTP,实际 HTTPS 是由 Apache 验证的。Gogs 的本地端口可以通过防火墙限制外来访问,这样外部就只存在 HTTPS 或者 SSH 访问了。

WhoamiBangumi 网站停止服务

今天起Whoami 的中国番组列表正式退出历史舞台了(虽然也没在舞台上站多长时间)。

之所以不再维护这个小网页的原因有下面这几条:

  1. 各个视频网站的网页设计总是会更新,尤其是每一季新番播出的时候,因此每一季都要对网站进行调整,有违我想要将番组获取自动化的初衷;
  2. 我的网页设计能力还很差,和同类网站相比,外观实在是不是很好看;
  3. 我的网页是挂靠在 SAE 上的,也就是要单独收费的,之前 SAE 上还有别的项目,所以就一起付了,现在就只有这一个项目了。

原因主要就是以上这三条吧,综上所述,我这个小服务就此停止维护了,感谢用户(真的有吗)的一直以来支持。

最后作为替代,推荐 https://bgmlist.com/。人家是自己手动编辑的,不知道比我稳定美观到哪里去了😆。

辣鸡阿里云:关于ECS服务器无法发送邮件的原因及解决办法

本来阿里云用的还是挺愉快的,但是今天的这件事让我彻底转变了看法:辣鸡阿里云!

事情是这个样子的,我搭建了一个 WordPress 网站,使用阿里云的 ECS 服务器。这个网站是一个购物网站,那么自然就要有注册用户,注册用户就要发送验证邮件,于是我就开始了我的邮件服务器工程。

首先我想到的是自己搭建一个服务器,使用 Postfix,然而搭建好之后无论如何都发送不出去邮件,显示的是 SMTP 连接超时。上网寻找解决方案,包括反复地检查 Postfix 的配置、检查 iptables 配置、检查阿里云安全组策略(网上有人提到了这个设置,但在这里这并不是关键),尝试后均无果而终,一下午就这样过去了。

然后我决定使用第三方的 SMTP 服务器发邮件,既然我自己搭不起来我就用别人的嘛。但是同样,超时,发不出去,继续搜索解决方案。就在这时,我看到论坛里有人提到遇到这种问题推荐阅读一片标题名字大概是《阿里云无法发送邮件的解决方案的文章》。虽然这个帖子里的链接已经失效了,但我已经发现了解决思路,那就是阿里云有问题

查阅《云平台安全规则》,我发现里面有这样一条:

3、未经阿里云授权报备,不得将云产品用作邮箱服务器或用于连接第三方邮箱服务器。

啊哈,这就是原因了,辣鸡阿里云。具体分析之后发现,阿里云过滤了所有目标地址端口是 SMTP 端口也就是 25 端口的包,并不是封锁了你的出口,所以你更改你自己 Postfix 的出口端口应该是没什么作用的,所以直接设置的第三方 SMTP 也是用不了的。

那么怎么解决呢?也很简单,使用 SSL 登陆第三方 SMTP 服务器即可。具体怎么设置取决于你自己用的什么软件了。

最后总结,辣鸡阿里云!一个网站要发送几封验证邮件和提醒邮件是多么正常且正当的需求,这你都封锁。本地不让搭就算了,第三方还不让用,搞什么啊。不推荐使用阿里云,以上。

又是新的开始 Yet Another Start

我的博客经历了起起落落。

最开始,我的主页是一个静态的网页,简陋,更新困难。

后来啊,我的主页是 WordPress,美观,但是时常会发生数据库错误,令我措手不及。

再后来,我回到了静态主页,这回我自己通过 Git 来维护静态主页,方便了许多,但依然不是很美观,更新也依然稍显复杂。

在这个博客之前,我使用 Github 的主页服务,一开始用的很开心,简约,便于维护,还好升级。但是我怎么会想到,Github 的个人主页居然这样不可靠,把我的主页上的图片链接替换成了别人主页上的图片,这种事情居然也会发生?!这令我非常非常失望。

于是现在,我回到了 WordPress,并且用上了自己在中国的服务器。自己的服务器,自己的域名,现在的我也有了四年服务器维护的经历,相信这回能安稳的持续下去吧。

2017 年 8 月