GeekHub

WordPress爬坑记录

众所周知wordpress是个开源的php博客网站平台,通过wordpress可以大大降低建站的技术门槛,但是我在搭建过程中依然碰到了不少坑,下面我来简单聊聊用wordpress搭建过程中碰到的一些问题:

1. 运行环境:

wordpress运行环境就是传说中的LAMP(Linux+Apache+MySQL+PHP),我平时的工作环境主要是Ubuntu 16.04(因为要用ROS所以放弃了18.04),所以安装的是apache2而不是apache,但是由于个人服务器运行Centos的比Ubuntu的要多很多,网上的一些配置教程大多数都是按照centos的apache来写的,很多和apache相关的配置方法和apache2并不相同,摸索了挺久才搞定了apache2的一些配置(主要就是设置SSL证书)。

(2022年3月15日更新:证书到期了,参考阿里云apache2证书配置教程更新了ssl证书)

后来才知道其实有很多一键安装LAMP或者LNMP(用Nginx代替Apache)的方法,比较有名的就是宝塔面板(https://www.bt.cn/),暂时没有尝试过(我都是编译安装的,苦)。

2. 配置HTTPS:

我的SSL证书是腾讯云上申请的,但是显然腾讯云上对Apache的配置方法都是针对Centos的,网上很多教程也不适合Ubuntu+Apache2,ubuntu用户可以参考这篇教程:https://www.cnblogs.com/shione/p/7267955.html

3. 初次配置无法通过验证:

配置好Wordpress的环境后,就可以登录服务器的IP地址(如果你有域名解析到服务器地址可以直接用域名访问)开始配置wordpress了,然而我第一次配置wordpress时,始终提示我数据库账户或者密码错误,具体原因不明。

解决方法:

直接ssh登录服务器,进入wordpress路径下(我的路径是/var/www/html),将wp-config-sample.php复制为wp-config.php:

cd /var/www/html
sudo cp wp-config-sample.php wp-config.php

根据wp-config.php中的备注信息配置数据库信息:


// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define( 'DB_NAME', 'database_name_here' );

/** MySQL数据库用户名 */
define( 'DB_USER', 'username_here' );

/** MySQL数据库密码 */
define( 'DB_PASSWORD', 'password_here' );

/** MySQL主机 */
define( 'DB_HOST', 'localhost' );

保存修改,重启apache2:

sudo service apache2 restart

4. 开放用户注册:

wordpress配置好后默认是无法让用户自行注册的,因为wordpress本身不含邮件系统,无法发送注册验证邮件,因此要先安装一个插件Easy WP SMTP,在插件的设置页面里配置好邮箱的SMTP服务器地址和端口、账户密码后(插件设置页面里可以验证配置是否生效),登录wordpress仪表盘,将“成员资格”中“任何人都可以注册”勾上,至此成功开放用户注册。

然而,你以为这就完了么,到这里用户申请注册账户后wordpress会给用户发送一封邮件,用户需要点击邮件里的连接转跳到注册页面设置密码,然而!wordpress这里留了一个bug一直没修复:

仔细看连接右边的”>”是蓝色的,是因为”>”被邮箱系统识别为了链接的一部分,所以如果用户直接点击这个链接会提示密码重设链接无效:

解决方法:

方案一:

复制链接到浏览器中打开,这显然不是最优方案,除非你愿意跟每个用户解释一遍;

方案二(推荐):

进入wordpress的路径下(我的路径是/var/www/html),并修改wp-login.php:

cd /var/www/html
sudo vim wp-login.php

找到:

$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

去掉两边的”<“和”>”将其修改为:

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";

保存后,注册用户收到的邮件链接就没有括号了,直接点击链接可正常转跳:

另外,用户选择忘记密码时也会碰到类似问题,解决方案类似,修改wordpress路径下的/wp-includes/pluggable.php,找到:

$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";

将其修改为:

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";

问题解决。

5. WordPress更新提示无法访问XXXX:

wordpress无法更新,提示无法访问XXXX,这个不是配置问题,是由于众所周知的原因,境内的服务器无法访问wordpress的服务器,因此会无法更新。

解决方法:

方案一:

使用境外服务器,一劳永逸;(还可以避免网站备案的麻烦)

方案二:

采用本地安装的方式,在网上找到wordpress最新版的.zip格式的文件,解压后将除了wp-content外的所有文件拷贝到wordpress路径下覆盖;

方案三:

使用wordpress的国内镜像站(如http://wp101.net);

方案四:

在服务器上配置梯子,不推荐,不稳定而且有风险;

6. WordPress更新提示创建目录失败:

这个是权限问题,解决方案:

方案一:

直接修改Wordpress目录的权限,有风险

sudo chmod -R 755 (WordPress的目录)

方案二:

将apache添加到wordpress目录的权限组中,推荐

chown -R apache.apache (WordPress的目录)

刚刚接触WordPress,目前就想到这些,后面有新的心得体会再另外开一篇文章跟大家分享。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注