零、前言
我自己有两个博客,一个是你看到的这个,专门用来写我的技术文章;另一个是我自己的心情记录博客,专门记录和技术无关的东西。
之前我的心情记录博客一直放在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搬家全攻略的更多相关文章
-
Linux 服务器配置、运行、不用敲命令(新手必备!) - 宝塔全攻略建站一条龙
Linux 服务器配置.运行.不用敲命令 WordPress 建站攻略 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整 ...
-
CSS Grid网格布局全攻略
CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...
-
【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
-
生成 PDF 全攻略【2】在已有PDF上添加内容
项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...
-
从小工到专家 ——读《Java程序员职场全攻略》有感
从小工到专家 ——读<Java程序员职场全攻略>有感 <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...
-
Android屏幕适配全攻略 (转载)
http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...
-
Moon.Orm3.8技术全攻略
Moon.ORM技术全攻略 一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...
-
TestLink安装全攻略
TestLink安装全攻略 此文章转自该链接--http://www.cnblogs.com/Tcorner/archive/2011/07/26/2117296.html 安装前准备 需要下载xam ...
-
取代奶瓶Minidwep-gtk破解WPA 全攻略
取代奶瓶Minidwep-gtk 破 WPA 全攻略 目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...
随机推荐
-
VS 扩展推荐
Visual Studio 工欲善其事,必先利器.本着这样的观念,对于经常使用的工具,我喜欢去研究研究,帮助我提高效率. Visual Studio Microsoft Visual Studio(简 ...
-
innodb_fast_shutdown中值为1或者2的区别是?
innodb_fast_shutdown=0 , 1 , 2时的意思分别是 0 把buffer pool中的脏页刷到磁盘和合并insert buffer,当然包括redo log也会写到磁盘中. 2 ...
-
【LINUX】编程笔记
a storage class can only be specified for objects and functions extern修饰一个struct报错,错误原因如上,C++中存储类修 ...
-
android 59 LinearLayout 线性布局
##常见的布局* LinearLayout 线性布局线性布局往左右拉是拉不动的,> 线性布局的朝向 vertical|horizontal> 线性布局的权重 weight 和 0dip一起 ...
-
Linq查询IEnumerable与IQueryable
class Program { static void Main(string[] args) { System.Diagnostics.Stopwatch stp = new Stopwatch() ...
-
linkedin和facebook的区别
摘录一段百科(http://www.baike.com/wiki/LinkedIn)的文字: Linkedin - 特点 Linked是一个“高效”.“安全”并且“有商务价值”的“白领SNS提供商”: ...
-
web标准(复习)--7 横向导航菜单
今天我们开始学习html列表,包含以下内容和知识点: 横向列表菜单 用图片美化的横向导航 css Sprites 一.横向列表菜单前边学习过纵向导航菜单,又学习了float属性,那么要实现横向导航菜单 ...
-
[LA] 2031 Dance Dance Revolution
Dance Dance Revolution Time limit: 3.000 seconds Mr. White, a fat man, now is crazy about a game nam ...
-
JAVA GUI学习 - JFileChooser文件选择器组件学习:未包括JFileChooser系统类学习
public class JFileChooserKnow { /** * @param args */ public static void main(String[] args) { // TOD ...
-
PowerTool(杀毒辅助工具) V4.6 中文免费绿色版
软件名称: PowerTool(杀毒辅助工具)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 968KB图片预览: 软件简 ...