这两天更换了服务器,目前博客已经全部迁移成功!
以前的配置:
Apache/2.4.17 (Win32) + OpenSSL/1.0.2d + PHP/5.6.21
现在的配置:
Nginx/1.10.0 (Ubuntu) + OpenSSL/1.0.2g + PHP/7.0.8
为什么原来打算用Windows做服务器呢?
因为曾经尝试过一些Linux系统,但是不知道是自己配置出了什么问题,运行在上面的服务总是奔溃,然后就只能重启Apache,一直都是这样,所以我就只能暂时放弃了,另外Windows还有一个好处,我可以很方便的备份或者更新代码,所谓的备份就是压缩一下,然后留着……(不会告诉你使用Windows的一个目的是用来刷慕课)😃
那为什么又打算换Linux系统呢?
只有1G的内存装了Windows Server 2012之后运行起来还会剩余多少内存空间呢?好少呀!并且有时候操作好卡。
好了,说一下迁移的过程吧!
因为原来站点安装目录并不是虚拟服务器的目录,所以第一步打算做的就是更改虚拟服务器目录,不过修改这个便意味着原来博客里面的静态内容的url全部变化,虽然一些配置信息是可以自动更新的,但是文章内容是存储在数据库中的,需要修改的便是文章中所有图片的链接。
原安装目录:/htdocs/queue/*
虚拟服务器根目录:/htdocs/*
WordPress本身并没有提供在更改站点目录的时候替换数据库中的所有链接,所以这一步便只能手动替换啦!
幸好万能的mysql提供了replace,否则更改虚拟服务器目录的代价好大的。😣
UPDATE wp_posts SET post_content = replace(post_content,'原地址','现地址');
当然,评论中的表情链接也是这么替换的咯!
因为博客有开启SSL,以前为了解决多说表情不支持SSL的问题用到了反向代理,然后昨天突然发现多说的表情与头像都可以通过HTTPS访问了,o(≧v≦)o~~好棒!😊
于是果断撤掉反向代理,表情加载速度果然提高了不少,修改完数据库,修改完代码中所有相关的绝对路径,一切测试正常~
接下来便是新服务器中的配置了(这个服务器不算新的啦,因为千千一直都同时拥有这两个😝)
当时为选择Apache或Nginx纠结了好久,根据网上说到的,Apache处理动态请求强,但对高强度的静态请求容易阻塞,而Nginx抗并发能力强,可以很好的处理静态请求,可是我的所有静态文件都在了镜像存储中怎么办😫,但还是阻挡不住我想用Nginx的心,因为简洁、轻便。
对于PHP的版本呢,想尝试一下新的版本(7.0),毕竟WordPress已经支持这个版本了。
当然mysql还是要安装的。
wget http://***/queue.zip
wget http://***/queue.sql
获取到原来所备份的文件,然后解压,一切正常(如果压缩包中含有中文文件请加参数 -O CP936)
unzip queue.zip
导入数据库,一切正常
source queue.sql
访问首页,正常
点击任意链接,404(因为Nginx中没有Apache的rewrite
功能,所以只能手动添加规则咯),具体如下:
location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
搞定了Nginx
的伪.htaccess(Apache)
部分,进入后台,除了左边的菜单栏以外什么也没有😖,发生了什么…
点击菜单是有效的,但是右边内容会一闪而过,隐隐约约看见了WP-Super-Cache的错误信息,于是百度……
因为插件的配置路径有问题,C:\**
在Linux
中怎么会有呢!😃
改完之后终于可以正常访问后台了,但是发现主题,插件等上传部分都只能通过ftp
的方式,一定是目录权限的问题。
sudo chmod -R 755 [需要修改的文件夹名称]
另外还需要往wp-config.php
中添加
/*
* 禁止出现ftp上传
* by Qianqian 2016.12.17
*/
define('FS_METHOD', 'direct');
成功解决~
对于WP Super Cache这个插件,如果想要在Nginx下使用mod_rewrite
缓存模式,还需要在配置文件中加入这些(替换掉location /{...}
即可)
# WP Super Cache rules.
# Designed to be included from a 'wordpress-ms-...' configuration file.
set $cache_uri $request_uri;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $cache_uri 'null cache';
}
if ($query_string != "") {
set $cache_uri 'null cache';
}
# Don't cache uris containing the following segments
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
set $cache_uri 'null cache';
}
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
set $cache_uri 'null cache';
}
# START MOBILE
# Mobile browsers section to server them non-cached version. COMMENTED by default as most modern wordpress themes including twenty-eleven are responsive. Uncomment config lines in this section if you want to use a plugin like WP-Touch
# if ($http_x_wap_profile) {
# set $cache_uri 'null cache';
#}
#if ($http_profile) {
# set $cache_uri 'null cache';
#}
#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
# set $cache_uri 'null cache';
#}
#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
# set $cache_uri 'null cache';
#}
#END MOBILE
# Use cached or actual file if they exists, otherwise pass request to WordPress
location / {
try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;
}
静态缓存插件也就这样配置好咯!
以前用的Verycloud CDN加速,缓存所有的静态内容,但是站点常常出现无法连接的情况,刷新过好多次,都没有用😭。
很想很想很想换掉它,但是支持SSL的CDN很难找哎,咦,腾讯好像也支持SSL了……
CNAME到第三方的站点中,因为每一次的动态请求都会多花费一点时间,然而就是这多花费的一点点时间,可能会因为网络阻塞,中间服务器出错等情况而让我们等待很久。
所以最好的策略还是直接使用自己的服务器处理动态请求,而静态文件从CDN中获取,可是哪一个服务商提供这样的要求呢。
当然有七牛云的镜像存储啦!正确配置robots.txt之后便不会影响到源站的SEO,至于配置嘛,也很简单的啦!这里就不说咯!
还有还有,千千的网站终于迎来了久违的绿色,撒花o(≧v≦)o~~
Last but not least!
今天的英语四级考试,怎么办😭,结果未知,生死未卜……
期末了 可能真的有点儿忙 今天平安夜 愿你平平安安 一生幸福
你也是,平安夜快乐~