零、前言

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

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

    A 第一题明显统计,注意0和long long(我WA,RE好几次) /* * Problem: A. Matrix * Author: Shun Yao */ #include <string ...

  2. android - python 自动化测试 移动互联网 - SegmentFault

    android - python 自动化测试 移动互联网 - SegmentFault splinter

  3. linux - 怎么自动填写有交互的shell脚本 - SegmentFault

    linux - 怎么自动填写有交互的shell脚本 - SegmentFault TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行 ...

  4. VIM技巧(1)

    VIM技巧(1) 替换 36s/^\(.* = \)entity.\(.*\)$/\1this.GetShowName("\2",\2); 删除空行 %g/^$/d %g/^\s* ...

  5. Linux后台运行程序

    Linux后台运行程序 最近写的程序需要部署到Linux服务器上,按照以前的方式,在运行后面增加&,程序会切换为后台运行.但因为Linux一般是通过ssh远程登录的,等到退出当前session ...

  6. javaIO(05)字节流和字符流的区别

    字节流和字符流的区别:   直接根据图片得出结论: 结论:   字节流在操作时本身不会用到缓存区,是在文件本身直接操作的,而字符流在操作时使用了缓存区,通过缓存区在操作文件:  所以在操作字符流的时候 ...

  7. python登录csdn并自动评论下载资源脚本

    功能 1.自动登录csdn 2.查找未评论的资源并自动评论 用到的库 1.python自带的requests,获取以及发送网页数据 2.python自带的time,用作休眠,csdn资源一段时间内只允 ...

  8. 备份spfile 中的一个误区

    某书载在备份控制文件的时候,也会自动的备份初始化参数文件,抱着愚钝的 完事亲力亲为的态度,做了如下的小验证. RMAN> list backup of controlfile; specific ...

  9. cocos2d-x 多线程以及线程同步

    转自:http://blog.csdn.net/zhy_cheng/article/details/9116479 cocos2d-x引擎在内部实现了一个庞大的主循环,每帧之间更新界面,如果耗时的操作 ...

  10. 【转】Watir, Selenium & WebDriver

    转自:http://watirmelon.com/2010/04/10/watir-selenium-webdriver/ Please also see my new ‘Watir-WebDrive ...