零、前言

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

之前我的心情记录博客一直放在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  -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 ;

保存。

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

server {
listen ;
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:;
}
}

注意:

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文件(使用文本编辑器就可以),把之前的域名都替换成现在的域名,然后重新导入——搞定!

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

四、后记

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

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

谢谢~

WordPress搬家全攻略的更多相关文章

  1. Linux 服务器配置、运行、不用敲命令(新手必备!) - 宝塔全攻略建站一条龙

    Linux 服务器配置.运行.不用敲命令 WordPress 建站攻略 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整 ...

  2. CSS Grid网格布局全攻略

    CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...

  3. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  4. 生成 PDF 全攻略【2】在已有PDF上添加内容

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...

  5. 从小工到专家 ——读《Java程序员职场全攻略》有感

    从小工到专家 ——读<Java程序员职场全攻略>有感   <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...

  6. Android屏幕适配全攻略 (转载)

    http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...

  7. Moon.Orm3.8技术全攻略

    Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...

  8. TestLink安装全攻略

    TestLink安装全攻略 此文章转自该链接--http://www.cnblogs.com/Tcorner/archive/2011/07/26/2117296.html 安装前准备 需要下载xam ...

  9. 取代奶瓶Minidwep-gtk破解WPA 全攻略

    取代奶瓶Minidwep-gtk 破 WPA 全攻略  目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...

随机推荐

  1. SRM 514 DIV1 500pt(DP)

    题目简述 给定一个H×W大小的矩阵,每个格子要么是1~9中的一个数,要么是".",要求你把“.”填成具体的数字(1~9),并且符合以下两个要求: 对于所有的整数r 和 c( 0 & ...

  2. Web Service学习之八:Soap消息详解

    一.区别概念 WSDL是网络服务描述语言,是XML文档:它包含一系列描述某个web service的定义或者说是规则.尤其是定义了传输Sope消息的结构 Soap:简单对象访问协议,是交换数据的一种协 ...

  3. [iOS基础控件 - 6.9.1] 聊天界面Demo 代码

    框架:   所有代码文件:   Model: // // Message.h // QQChatDemo // // Created by hellovoidworld on 14/12/8. // ...

  4. HDU 2586 How far away ? (LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 LCA模版题. RMQ+LCA: #include <iostream> #incl ...

  5. mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJob

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取: p ...

  6. SQL存储过程调试

    转自:http://www.cnblogs.com/xiangzhong/archive/2012/10/27/2742974.html 今天突然有同事问起,如何在sqlserver中调试存储过程(我 ...

  7. 让sublime text 3默认新建GBK文件

    想让sublime text支持显示或者保存中文,需要安装插件convertToUTF8,具体安装可以问度娘. 安装插件以后,想让保存的html文件支持中文,可以通过ctrl+shift+C来完成.但 ...

  8. codeforces Gym 100500H H. ICPC Quest 水题

    Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...

  9. Codeforces Gym 100733J Summer Wars 线段树,区间更新,区间求最大值,离散化,区间求并

    Summer WarsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...

  10. HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和

    To the moonTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...