WordPress搬家全攻略

零、前言

我自己有两个博客,一个是你看到的这个,专门用来写我的技术文章;另一个是我自己的心情记录博客,专门记录和技术无关的东西。

之前我的心情记录博客一直放在openshift上面,这是redhat官方搞的一个云平台。好处是一键就可以搞定博客的部署,非常方便。但是使用了一段时间之后发现了两个问题:固定的https以及网络问题。

固定的https是什么意思呢?就是只能通过https访问,如果是http就无法访问。我Google了N多方法,最后还是解决不了这个问题。

网络问题主要是不稳定。毕竟是国外的云平台,大家都懂的,国内访问速度慢就不说了,还经常上不去,发一篇文章卡半天。。。

最终让我决定搬家的一件事:放假回家之后居然彻底上不去了。

忍无可忍无需再忍!我决定把博客搬家到我的vps上。

一、原理介绍

我自己也是新手,怕搞坏影响到vps上的其他站,所以非常小心,百度了超多文章,确定自己搞清楚原理才正式操作。这里我简单总结一下原理,不感兴趣的可以直接跳过了。

先说下环境吧:

Ubuntu12.04 + Nginx + PHP + spawn-fcgi + WordPress + MySQL

原理其实很简单:

Nginx是整个vps的代理,负责把外来的访问请求转发到各个“下家”,在本例中下家就是PHP。虽然PHP本身有php-cgi,但是因为不太健壮,作为服务器部署不够,所以我们使用spawn-fcgi来代替php-cgi。spawn-fcgi的作用简单说就是“保姆”,它负责保证PHP的正常运行,同时它代替PHP成为Nginx的“下家”。

因为WordPress就是用PHP写的,所以对WordPress的访问其实最终是对PHP的访问。

上面说的大家可能有点混乱,下面我们举个例子:

当我在浏览器访问http://for-never.name时,会有一条请求发送到我的vps,到达vps之后首先是Nginx接收,Nginx一看,哦,你是找for-never.name,那么就把你转发给wordpress,然后wordpress的页面需要PHP解析,同样会发一条请求给Nginx,Nginx一看,哦,你找PHP,那么就转发给spawn-fcgi,然后spawn-fcgi接收请求之后让PHP处理,处理结果返回Nginx,Nginx再返回给WordPress,然后WordPress再返回给Nginx,Nginx再返回给外部请求,也就是我发起的那个请求,这样我的浏览器里就会显示出来网页了。

有点乱,大家稍微理解一下就懂了。

下面就是实战了,分为两部分,博客搭建以及数据转移。

二、博客搭建

上面已经介绍了原理,大家可能会问,那Nginx怎么知道什么请求发给谁呢?这个就是我们要做的工作了,对Nginx进行配置,告诉它不同请求对应的不同“下家”。

首先我们先把需要的东西都安装好:

安装nginx:
sudo apt-get install nginx
安装PHP和php-cli:
sudo apt-get install php5 php5-cli
安装spawn-fcgi:
sudo apt-get install spawn-fcgi
安装WordPress:
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz

注意:

1、很多教程里说不能直接安装spawn-fcgi,其实是可以的。

2、大家记一下wordpress解压后(也就是tar命令执行之后)的路径,这里假设为/wordpress/wordpress/ 。

3、这里我没有介绍安装MySQL的方法,因为我的vps之前就已经安装过MySQL,所以我这次搬家并没有安装MySQL。大家可以自己去搜索一下Ubuntu安装及配置MySQL。

好了,现在我们已经安装完成了,下面进行配置。

首先,我们先用“保姆”spwan-fcgi把PHP运行起来:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

注意:

1、-p是端口,你可以自己更改,但是一定要记住是什么端口。

接下来配置Nginx:

首先找到你的nginx.conf文件,我的是在/etc/nginx/下面。

在同目录下创建一个文件,名字叫fastcgi-params,文件内容为:

fastcgi_param    QUERY_STRING        $query_string;
fastcgi_param    REQUEST_METHOD        $request_method;
fastcgi_param    CONTENT_TYPE        $content_type;
fastcgi_param    CONTENT_LENGTH        $content_length;

fastcgi_param    SCRIPT_FILENAME        $request_filename;
fastcgi_param    SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param    REQUEST_URI        $request_uri;
fastcgi_param    DOCUMENT_URI        $document_uri;
fastcgi_param    DOCUMENT_ROOT        $document_root;
fastcgi_param    SERVER_PROTOCOL        $server_protocol;

fastcgi_param    GATEWAY_INTERFACE    CGI/1.1;
fastcgi_param    SERVER_SOFTWARE        nginx/$nginx_version;

fastcgi_param    REMOTE_ADDR        $remote_addr;
fastcgi_param    REMOTE_PORT        $remote_port;
fastcgi_param    SERVER_ADDR        $server_addr;
fastcgi_param    SERVER_PORT        $server_port;
fastcgi_param    SERVER_NAME        $server_name;

fastcgi_param    HTTPS            $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param    REDIRECT_STATUS        200;

保存。

然后打开nginx.conf文件,在http{}段里面添加:

server {  
            listen 80;  
            server_name www.for-never.name for-never.name;  
            server_name_in_redirect off;  
            root /wordpress/wordpress;  
            index index.php index.html index.htm;  
      
            location / {  
                    try_files $uri $uri/ /index.php?q=$uri&$args;  
            }  
      
            location ~ .php$ {  
                    include fastcgi_params;  
                    fastcgi_pass 127.0.0.1:9000;  
            }  
    }  

注意:

1、 server_name 就是你的域名。

2、root 就是上文提到的,WordPress的解压路径。

3、fastcgi_pass 就是上文提到的spawn-fcgi那条命令里面的ip和端口。

好了,配置完之后重启nginx:

/usr/sbin/nginx -s reload

然后访问网站,发现已经出来WordPress的安装界面了。

大家先别着急安装,还有最后一步:

chown -R www-data /wordpress/wordpress/
chown -R www-data /wordpress/wordpress/*
chgrp -R www-data /wordpress/wordpress/
chgrp -R www-data /wordpress/wordpress/*
chmod +x /wordpress/wordpress/
chmod +x /wordpress/wordpress/*

 这步的作用:

1、将wordpress目录下的所有文件的所有者更改为www-data。这个www-data是nginx使用的用户,大家可以查看一下nginx.conf里面的user项,如果不一样就改过去。这条命令如果不运行的话,后面使用WordPress时候会出现权限问题。

2、chmod是给wordpress目录下所有文件添加执行权限,这条也是为了防止权限问题。

 

好了,现在可以安装了。

安装完之后更改wp-config.php,把define("WPLANG", ""); 这句改成define("WPLANG", "zh_CN"); 然后保存,在后台就可以升级为中文版了。

如果大家不需要转移数据的话那就可以开始使用了。

三、数据转移

我之前的博客是使用wp-db-backup这个插件进行备份的,备份的是sql文件。

数据转移其实很简单,就是把这个sql文件导入到wordpress的数据库里。运行

mysql -uroot -p

命令,输入密码进入MySQL,然后输入:

use wordpress;

进入wordpress数据库,大家的库如果名字不一样记得修改。然后输入:

source /xxx/xxx/backup.sql;

这样就会把backup.sql的内容写入wordpress数据库。

我导入数据之后本来以为已经搞定了,但是打开页面发现是一片空白。这是怎么回事呢?

仔细研究sql文件之后发现,原来这个sql文件不仅包含之前的数据,也包含之前网站的配置,比如域名什么的。所以我们打开sql文件(使用文本编辑器就可以),把之前的域名都替换成现在的域名,然后重新导入——搞定!

下面就是进行各种个性化设置了,大家自由发挥吧~

四、后记

搬家大概搞了两天才搞定,中间遇到了不少困难。在此记录下来以供大家参考。

如果有什么写错的地方欢迎大家指出!文笔不好,多多谅解!

谢谢~

原文地址:https://www.cnblogs.com/numbbbbb/p/3259478.html