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

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
在文件中写入以下内容:

    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 设置为开机启动
mysqlsecureinstallation 配置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 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图片地址:

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

保存,重启nginx服务即可。

Sublime: There are no packages available for installation

Mac下Sublime安装插件时突然报错 command+shift+p调出package control出现错误提示: There are no packages available for installation 出错原因:Intent服务提供者(ISP)不支持IPv6就会引发上述错误。 解决方法: 第一步: 获取 sublime.wbond.net 的 IPv4 地址; 打开terminal运行:dig @【DNS】 -t A sublime.wbond.net +noall +answer 输出结果如下: ; <<>> DiG 9.9.5-3-Ubuntu <<>> @8.8.

Ghost 实现文章归档

Ghost系统目前暂不支持文章归档,遂手动实现。 方法:通过调用Ghost API实现 启用ghost测试功能 进入ghost后台,在实验功能->启用测试功能能中开启测试功能,这样就可以使用Ghost API获取数据。 新建自定义页面 首先创建一个静态页面:在ghost后台新建页面,发布为 独立页面 ,标题为archives,网址可以设置为域名/archives 接着创建一个自定义页面模板:该模板是第一步创建的静态页面的模板,创建一个page-url.hbs模板,如果第一步设置的页面网址为域名/archives,那么模板即为page-archives.hbs。将该模板上传至主题根目录下即可,此时访问域名/archives,即会调用自定义的page-archives.hbs这个模板。(由于新建的模板没有任何内容,所以页面会显示为空,可以赋值page.hbs中的内容测试查看) 调用Ghost API实现文章归档 所需工具: jQuery、momentjs 文档: Ghost API文档:http://api.ghost.org/v0.1/