Wordpress 搬家笔记

继PC上Ubuntu系统崩溃(鼠标无法使用、网卡无法启动),我的博客也祸不单行地崩了一天(在那小的可怜的虚拟主机上)。于是开始打算着,把博客搬到自己的几块钱一个月ECS(就这便宜货也隔三岔五有人想黑)上,这样怎么说也算掌控在自己手中。搬家开始!!!

在中文官网上有关于搬站的教程。zh-cn:WordPress 博客搬家

而我们属于将WordPress迁移到新的服务器,算是最简单的一种。

只需几个步骤:

  1. 安装一个新的Wordpress博客(可从官网下载)
  2. 进入旧的管理面板,进入工具 > 导出,在菜单”限定作者“中选择”所有作者”。点击下载导出的文件
  3. 在新博客中进入工具 > 导入, 选择 Wordpress 选项
  4. 在接下来的页面中,选择文件导出,点击上传文件然后导入。
  5. 接下来会显示一个页面。在分配作者中,在已存在的使用者中分配一个作者或者创建一个新的。
  6. 点击提交,即完成。

接着我们来细数踩过的坑:

环境安装自然不比多说:Ubuntu 16.04 Apache2.4.18 Mysql5.7.17 PHP7

其中需要注意的是开启Apache rewrite模块:

#Shell输入a2再双击tab可以看到一些有用的命令
a2enmod rewrite

在步骤1安装Wordpress:

首先将解压后的目录放在/var/www下或者其中的/html下也行。

然后开始在Mysql中随便创建一个数据库。之后将这些相应的信息填写到wp-config.php相应的define中(只有wp-config-sample.php?没错就是它,把它改下名即可)。

修改Apapche 相应的配置文件:

/etc/apache2/site-avaliable/defauilt.conf(目录名或文件名有所出入,但大致一样)其中的ServerName改为自己的域名(没域名可不填)、DocumentRoot改为存放Wordpress解压目录的路径,例如:/var/www/html/wordpress

之后重启Apache(逢修改都需操作),访问所在主机地址即可进入安装界面。(如若发生404错误请查看上述路径是否正确)


在步骤3选择Wordpress选项需要ftp密码:

在wp-config.php中添加下列代码:

define("FS_METHOD","direct");

define("FS_CHMOD_DIR", 0777);

define("FS_CHMOD_FILE", 0777);

之后便不会弹出上述FTP问题,但是有时在你安装插件时还是会出现一个问题:无法创建文件

归根结底还是Linux权限问题,为了一劳永逸你可以将网站所在目录权限值修改:

#开放所有用户权限
sudo chmod -R 775 wordpress/
#亦可通过权限组解决(www-data为系统默认)
sudo chown -R root:www-data wordpress/
sudo chmod -R 775 wordpress/

之后照例重启Apache服务器。


导入后能看到主页但是点开文章显示出错:

这是因为Wordpress开启了固定链接功能(利于SEO和静态插件),而你从原来博客上导入的链接现在不可用了。

解决:只需在仪表盘中设置->固定链接->常用设置里改动,并保存修改即可。

刷新你的首页,再点击文章就可看到有效了。

如果还是弹出404错误则需一步步检查,拍错:

  1. 确定步骤一中Apache配置文档DocumentRoot指向的路径无误
  2. 确定已开启rewrite模块
  3. 确定wordpress所在目录权限问题(如上)
  4. AllowOverride Not Enabled,推荐不修改全局配置apache.conf。而是在自己的网站配置文件中添加:
    #路径根据自己网站修改
    <Directory /var/www/html/wordpress>
    Options FollowSymLinks
    AllowOverride All
    </Directory>

80端口遭封,改81端口:

到现在坑应该没了吧,可以愉快的写东西了吧!我当时也这么想的 : )

然而阿里爸爸立马就把我80端口封了!哦不,怎么能这么说封,是被和谐了XD

没事,我们继续折腾。开个81端口接着搞

修改Apache监听端口:

  1. 将文件/etc/apache2/ports.conf中的Listen 80 改成 81
  2. 将文件/etc/apache2/site-avaliable/dedault.conf 中的VirtualHost *:80 也该为81
    之后照常重启,浏览器输入域名或者IP,后面加上:81,可以用啦!

配置HTTPS:

换了端口,加了:81 嫌逼格不够高?没https?

没关系我们接着折腾。先普及证书和CA知识,这是_编程随想_(膜拜)的一篇博文:http://kb.cnblogs.com/page/194742/

此处为cnblog地址,原文地址不翻墙看不到 : (

之后查阅了各种配置博客,但都因时间,版本参差不齐折腾的很痛苦。

总结就是:

  • 知名的免费证书有:StartSSL,Let’s Encrypt,COMODO。郑重严肃地推荐别用StartSSL免费证书,因为已经不被Google、Mozilla信任。(可怜的我折腾半天以为自己错了)。推荐使用Let’s Encrpyt,自动部署无需配置,太爽了!

  • SSL配置文档默认是在/etc/apache2/site-avaliable/default-ssl.config,像上述那样修改DocumentRoot和ServerName。

  • 此外还需修改文档中的一些证书设置(均填绝对路径,证书存放路径无所谓):
     

    SSLCertificateFile–服务器证书(可以是完整证书链,格式可为pem,crt)

    SSLCertificateKeyFile–服务器密钥证书(格式可为pem、key)

    SSLCertificateChainFile–服务器证书链文件(如果1为完整证书链,可省略或和其相同)
    还有一些证书配置,但这三个足以。(一般发送CSR 后CA 会将1 ,3发送给你)

配置好后,照常重启。


HTTPS重定向出错:

如果你和我一样(处于艰难的网络管辖下XD)是通过放弃80端口建立的博客。

那么可能会遇到和我一样的问题。

明明已经配置好https,但是访问时自动跳转成如下地址栏:

#输入的
https://zhongm.in
#自动跳转到(可能你的不是81)
https://zhongm.in:81

结果显示连接失败(非443端口使用https协议肯定失败),为什么会这样呢?

其实还是WordPress固定链接的问题(它将自己的链接转变成https链接时并没有去除其中的:81,所以导致这样的错误跳转)。

解决方法(修改WordPress目录wp-includes/下 link-template.php代码):

//找到代码3419行开始的set_utl_scheme()
//将代码3438行开始的else中内容添加两行,如下
}else{
      if($scheme === 'https')
              $url = str_replace(':81','',$url);
      $url = preg_replace( '#^\w+://#', $scheme . '://', $url );
}

当然,另一种更直接的解决方式就是完全放弃http,强制所有访问都走https。只需在配置文件中添加:

#将其中域名换成自己的
RewriteEngine on
RewriteCond %{SERVER_NAME} =zhongm.in
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

当然在博客中的常规设置中,将网站URL设置成https 也一样的效果

照常重启,就能见到漂亮的URL,和高逼格的https绿色锁。

网上SSL、Apache 配置参差不齐,小伙伴们找准版本。

Apache HTTP 服务器2.4文档:http://httpd.apache.org/docs/2.4/

觉得不错不妨打赏一笔