Wordpress to Ghost
2016-07-21 04:56:39环境:
- 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
在文件中写入以下内容:
[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
设置nginx为开机启动
sudo chkconfig nginx on
这样Nginx的安装就完成了,在浏览器中输入VPS的IP或者域名就可以看见Nginx友好的提示:“Welcome to Nginx!”
使用Nginx配置反向代理
如果完成上一步并且在浏览器中看见Nginx的welcome,那么我们就可以开始配置反向代理,让代理从80端口指向2368端口
去到以下这个目录:
删掉default.conf配置文件
cd /etc/nginx/conf.d
rm default.conf
在此目录下新建一个.conf文件,文件名随意
在文件中写入以下内容:
vi myself.conf
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 如下:
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
[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版本
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
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上
//进到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 list
或 pm2 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图片地址:
location ^~ /wp-content/ {
if (!-e $request_filename) {
rewrite ^/wp-content/uploads/(.*)$ http://7xqpve.com1.z0.glb.clouddn.com/$1 last;
break;
}
}
保存,重启nginx服务即可。