继PC上Ubuntu系统崩溃(鼠标无法使用、网卡无法启动),我的博客也祸不单行地崩了一天(在那小的可怜的虚拟主机上)。于是开始打算着,把博客搬到自己的几块钱一个月ECS(就这便宜货也隔三岔五有人想黑)上,这样怎么说也算掌控在自己手中。搬家开始!!!
在中文官网上有关于搬站的教程。zh-cn:WordPress 博客搬家
而我们属于将WordPress迁移到新的服务器,算是最简单的一种。
只需几个步骤:
- 安装一个新的Wordpress博客(可从官网下载)
- 进入旧的管理面板,进入工具 > 导出,在菜单”限定作者“中选择”所有作者”。点击下载导出的文件
- 在新博客中进入工具 > 导入, 选择 Wordpress 选项
- 在接下来的页面中,选择文件导出,点击上传文件然后导入。
- 接下来会显示一个页面。在分配作者中,在已存在的使用者中分配一个作者或者创建一个新的。
- 点击提交,即完成。
接着我们来细数踩过的坑:
环境安装自然不比多说: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错误则需一步步检查,拍错:
- 确定步骤一中Apache配置文档DocumentRoot指向的路径无误
- 确定已开启rewrite模块
- 确定wordpress所在目录权限问题(如上)
- AllowOverride Not Enabled,推荐不修改全局配置apache.conf。而是在自己的网站配置文件中添加:
#路径根据自己网站修改 <Directory /var/www/html/wordpress> Options FollowSymLinks AllowOverride All </Directory>
80端口遭封,改81端口:
到现在坑应该没了吧,可以愉快的写东西了吧!我当时也这么想的 : )
然而阿里爸爸立马就把我80端口封了!哦不,怎么能这么说封,是被和谐了XD
没事,我们继续折腾。开个81端口接着搞
修改Apache监听端口:
- 将文件/etc/apache2/ports.conf中的Listen 80 改成 81
- 将文件/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/