零、前言

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

之前我的心情记录博客一直放在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. Unity3D-美术相关

    1.导入动画 (1)使用预分解的动画模型,导入后面板中会含有一个可用的动画片段列表. (2)使用未分解的动画模型,自行添加动画片段. (3)使用多个动画文件,模型与动画分离.对于goober.fbx模 ...

  2. AS3 条件编译

    转:http://www.lite3.cn/blog/?p=404&cpage=1 知道C/C++ 有条件编译,一直想着AS要是也有条件编译就好了,今天搜了半天Google,终于让我找到了 下 ...

  3. struts2+Hibernate4+spring3+EasyUI环境搭建之三:引入sututs2以及spring与sututs2整合

    1.引入struts2 <!-- struts2 和心包 排除javassist 因为hibernate也有 会发生冲突--> <dependency> <groupId ...

  4. centos5 vim升级到7.4

    vim在centos中的版本为7.0,导致很多插件都无法使用,所以想到升级一下. wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 tar jvz ...

  5. F5 刷新功能

    //1.引入单元 uses ShlObj; //2.执行命令 procedure TForm1.Button1Click(Sender: TObject); begin SHChangeNotify( ...

  6. Spring properties dependency checking

    In Spring,you can use dependency checking feature to make sure the required properties have been set ...

  7. Umbraco 上传文件到另一个文件夹,而不是media files

    If you want to upload there media files to another place in the same instance of IIS, for example a ...

  8. IEBrowse学习笔记

    //登录 private void toolStripButton1_Click(object sender, EventArgs e) { //ie.ExecuteScript("aler ...

  9. zendstudio 10下载汉化

      1.文件和汉化文件 ZendStudio官方下载地址:http://www.geekso.com/component/zendstudio-downloads/ 百度云地址: 10.0.0.msi ...

  10. Linux下安装、启动MySQL

    启动与停止 1.启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可. [root@localhost mysql]# /etc/init.d/my ...