Wordpress to Ghost

环境:

  • Centos-6、Ngnix
  • Nodejs:v0.10.40
  • Npm:1.4.28
  • MySQL:5.1.73

前期准备

yum update 更新yum源

yum pdate 更新yum源

yum groupinstall "Development Tools" 安装开发工具包

安装Nginx

先编辑下Nginx的仓储地址,新建nginx.repo文件:


vi /etc/yum.repos.d/nginx.repo
在文件中写入以下内容:

1
2
3
4
5
[nginx] 
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

保存退出,然后使用yum下载Nginx,并安装:


sudo yum install nginx -y

sudo service nginx start 开启nginx

sudo chkconfig nginx on 设置nginx为开机启动

这样Nginx的安装就完成了,在浏览器中输入VPS的IP或者域名就可以看见Nginx友好的提示:“Welcome to Nginx!”

使用Nginx配置反向代理

如果完成上一步并且在浏览器中看见Nginx的welcome,那么我们就可以开始配置反向代理,让代理从80端口指向2368端口
去到以下这个目录:

cd /etc/nginx/conf.d
删掉default.conf配置文件
rm default.conf
在此目录下新建一个.conf文件,文件名随意
vi myself.conf
在文件中写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name zyden.vicp.cc;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

将server_name换成自己的域名,或者ip,保存退出,并重启nginx:
service nginx restart
ok,nginx的问题就close file了

安装配置Mysql

Ghost v0.7.4 full (zh) 集成了sqlite3,不喜欢用Mysql的话可以忽略此步骤 :
yum install mysql mysql-server

service mysqld start 启动mysql
mysql
 chkconfig mysqld on 设置为开机启动

mysql_secure_installation 配置mysql 如下:

1
2
3
4
5
Set root password? [Y/n] //设置root密码   -- 根据个人需求
anonymous users? [Y/n] //删除匿名用户 -- y
Disallow root login remotely? [Y/n] //禁止root用户远程登录 --n
Remove test database and access to it? [Y/n] //删除默认的 test 数据库 --y
Reload privilege tables now? [Y/n] //是否马上应用最新的设置 --y

为了支持中文,我们还要修改mysql的字符支持,编辑MySQL的配置文件:
vi /etc/my.cnf
在对应的位置加上对应的内容:

1
2
3
4
5
6
7
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

新建一个ghost专用的mysql用户和专用的database:

mysql -u root -p
//用root用户登录mysql

create database ghost;
//创建ghost数据库

GRANT ALL PRIVILEGES ON ghost.* To 'ghost'@'%' IDENTIFIED BY '密码';
//创建ghost database 和 用户名为ghost的用户

//%代表能被所有地址访问

安装Node.js

这里根据Ghost官方的建议,我们安装v0.10.40版本

1
2
3
4

wget http://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz

tar zxvf node-v0.10.40.tar.gz
cd node-v0.10.40

./configure
m
make && make install

安装Ghost

将ghost安装在/var/www下

cd /var/www 没有就创建该目录

wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip下载中文版的Ghost(原生版goole font会被墙,需要自己优化)

解压:

unzip -d ghost ghost-latest.zip

进入ghost安装目录:

cd ghost

安装Ghost:

sudo npm install --production
安装完成后可以通过如下命令启动ghost的开发模式,测试安装是否成功:
npm start
3.7.此时ghost将会运行在127.0.0.1:2368上,在浏览器中输入此地址即可访问。
这里要将config.example.js重命名为config.js再对其进行修改配置
mv config.example.js config.js
vi config.js
我们找到生产环境的配置:production

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
production: {  
url: 'www.ldsun.com', //这里是你自己VPS主机的域名,或者IP
mail: {},
database: {
client: 'mysql'这里我选择使用mysql作为我博客的数据库
connection: {
host : '127.0.0.1',
user : 'ghost', //mysql用户名
password : '', //密码
database : 'ghost', //之前创建的ghost数据库名称
charset : 'utf8'
},
server: {
host: '127.0.0.1',
port: '2368'//若修改该端口记得在nginx中做相应改变
}
}

用命令npm start来试试启动开发者模式的Ghost,启动后在浏览器输入自己blog地址如果能看见Ghost。至此ghost安装成功!

使用PM2让Ghost永远在线

只要一断开ssh,Ghost的进程就会被关闭,这里使用PM2来守护Ghost服务进程,并让其运行在生产模式production上

1
2
3
4
5
6
7
8
9
10
//进到ghost的安装目录
cd /var/www/ghost
//安装pm2
npm install pm2 -g
//让ghost以production模式运作,指定程序的入口index.js,并且此进程命名为ghost
NODE_ENV=production pm2 start index.js --name "ghost"
//开机启动
pm2 startup centos
//保存设置
pm2 save

这样进程守护就完成了,ghost会永远在线,并且会伴随vps重启运行,几个常见命令如下:

pm2 restart 进程名 重启进程

pm2 listpm2 status 查看运行的进程

pm2 show 进程名/进程ID 查看进程详情

数据转移

wp搜索“Ghost”插件,或手动下载
经测试,1M左右的wp-posts数据表用该插件可以导出为ghost可用的json文件,我的wp-posts数据表接近3M,没有成功导出过,最后自己写个脚本跑出来即可。

图片处理

图片迁移我是选择将原wp的所有图片传到七牛,然后给nginx写rewrite规则。

wp的图片存在wp-content/uploads中,将所有图片下载下来。

注册七牛账号,新建一个Bucket仓库,下载上传所用命令行工具

切换到该工具的目录下,执行初始化:

./qrsboxcli init <AccessKey> <SecretKey> <SyncDir> <Bucket> [<KeyPrefix>]

  • AccessKey、SecretKey可进入个人中心查看
  • SyncDir 是本地的同步目录,该目录下的文件会随时同步上传值七牛云存储。
  • Bucket 是保存同步文件的资源空间名。
  • KeyPrefix 是文件前缀,可选。如果设置了该参数,那么上传的文件名前都会加上前缀。这个前缀主要用于在空间中区分不同上传来源的文件。

然后使用以下命令开始文件同步:

./qrsboxcli sync &

查看进程:

./qrsboxcli log

终止进程:

./qrsboxcli stop

设置Nginx Rewrite规则

图片上传到七牛之后,配置nginx.conf。打开之前创建的.conf文件:

vim /etc/nginx/conf.d/myself.conf

由于wp文章中的图片请求都是wp-content/uploads/year/month/*.(jpg|png|gif),所以可以按照如下规则rewrite图片地址:

1
2
3
4
5
6
location ^~ /wp-content/ {
if (!-e $request_filename) {
rewrite ^/wp-content/uploads/(.*)$ http://7xqpve.com1.z0.glb.clouddn.com/$1 last;
break;
}
}

保存,重启nginx服务即可。

Author

Ludis

Posted on

2016-07-21

Updated on

2016-08-09

Licensed under

Comments