文章64
标签4
分类5

WordPress迁移至Ghost

人嘛,就是爱纠结.纠结纠结着,博客程序就换啊换的.

但是啊换成非PHP以外的程序那个就不是那么好装滴,Ghost所需要的环境:
Node.js+MySQL+Nginx
  数据库也能换成别的,默认是SQLite也就不用装数据库。但是嘛默认的这个一旦文章多了会影响速度(但到底多少篇我哪知道,反正别人这么写。就像心里暗示一样,就懒得去用了。) 。关键啊,我的管理面板不支持Node.js啊啊啊啊啊啊啊啊啊啊啊!只能自己装~几天后想摔电脑了,中文版只能装集成版要不然NPM总跳错。NPM用的非常规安装的方式,主要是担心影响我使用的AMH5.2。之后就导致能用但是Ghost只能用集成依赖的没法用其他常规方式,那个郁闷啊继续改成自己需要的。

Ghost:

修改七牛上传地址:

coreserverstorageqiniu.js
修改前:

 targetFilename = path.join(targetDirRoot, md5.replace(/^(w{1})(w{2})(w+)$/, '$1/$2/$3')) + ext;  

显示为

/2/b/ffb7ed5f1170473aeb3496cab2707f99.png  

修改后:

targetFilename = path.join(targetDirRoot, md5) + ext;  

显示为

/ffb7ed5f1170473aeb3496cab2707f99.png  

关于问什么改成纯MD5值,那是因为我不会改成我想要的格式。我想要的格式是:

/2016/04/ffb7ed5f1170473aeb3496cab2707f99.png  

之后通过修改程序根目录的config.js勉强实现了,但每隔一个月都要修改日期。
修改前:

        storage: {
            provider: 'qiniu',
            bucketname: 'your-bucket-name',
            ACCESS_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            SECRET_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            root: '/image/',
            prefix: 'http://your-bucket-name.qiniudn.com'
        }

修改后:

        storage: {
            provider: 'qiniu',
            bucketname: 'your-bucket-name',
            ACCESS_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            SECRET_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            root: '/image/2016/04/',           //改这行//
            prefix: 'http://your-bucket-name.qiniudn.com'
        }

没办法我笨啊,不懂怎么解决。

修改数据库

  集成版 一直没改成,不管怎么改都自动存/content/data/ghost-dev.db 也就是都存在SQLite里了。之后看了下中文化的作者文章里写的是集成版优化集成 sqlite3 原生库,难道是专为sqlite做了专门优化而用不了MySql?(我自己瞎想的)
由于标准版没有集成依赖所以总是跳NPM各种错之后各种想办法。。。。。

Ghost Docker化

  之前折腾过几天Docker的Ghost当时是在自有主机用DaoCloud管理,但是对Docker的不熟悉以及各种调用以及函数还有links其实主要是links和多容器互访以及端口设置一直没搞定所以你懂的。放弃了。。。。。
  现在基本老套路只不过将自有主机的方式放到DaoCloud平台上,数据库用DaoCloud的服务集成来搞定在自有主机上搞不定的问题。
  首先,使用Peter Cai写的docker-nginx-ghost之后按自己需要进行修改。
我修改了一下几项:

  • 修改Dockerfile中第21行为:
ENV GHOST_REL 0.7.4
RUN  wget http://*****.oss-cn-qingdao.aliyuncs.com/Ghost/releases/download/${GHOST_REL}/release.zip &&       # 我修改为了自己修改了的0.7.4中文版用的Aliyun的OSS来代替Github链接所以就不公开了
  unzip release.zip &&    
  • 修改nginx.conf中https filtering部分
      sub_filter 'ajax.googleapis.com' 'sdn.geekzu.org/ajax';
      sub_filter 'fonts.googleapis.com' 'fonts.geekzu.org';
      sub_filter 'www.gravatar.com' 'cdn.v2ex.com/gravatar';
      sub_filter 'cdnjs.cloudflare.com/ajax/libs' 'cdn.css.net/libs';
      sub_filter_once off;
      sub_filter_types text/css text/html text/javascript;    

Peter Cai使用的是css.net 的代理而我改成geekzu.org的,因为我这geekzu.org快先满足自己先。

  • 修改config.js中所有部分:
    清除config所有代码复制0.7.4中文版中config.js中所有代码粘贴到config里并修改一下部分:
    修改前:
    production: {
        url: 'http://my-ghost-blog.com',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },
        // 配置MySQL 数据库
        /*database: {
            client: 'mysql',
            connection: {
                host     : 'host',
                user     : 'user',
                password : 'password',
                database : 'database',
                charset  : 'utf8'
            },
            debug: false
        },*/  

修改后:

    production: {
        url: 'http://' + process.env.GHOST_SITE_URL,
        mail: {},
        database: {
            client: 'mysql',
            connection: {
                host: process.env.GHOST_MYSQL_HOST,
                user: process.env.GHOST_MYSQL_USER,
                password: process.env.GHOST_MYSQL_PASSWORD,
                database: process.env.GHOST_MYSQL_DATABASE,
                charset: 'utf8'
            },
            debug: false
        },
        mail: {
            transport: 'SMTP',
            options: {
                service: 'Mailgun',
                auth: {
                    user: process.env.GHOST_MAILGUN_USER,
                    pass: process.env.GHOST_MAILGUN_PASS
                 }
             }
        },  

全都用相关函数调用。

  • 修改config.js中storage: {部分
       //Storage.Now,we can support  qiniu , upyun ,  aliyun oss ,  aliyun ace-storage  and  local-file-store 
        storage: {
            provider: 'local-file-store'
        }
        // or
        // 参考文档: http://www.ghostchina.com/qiniu-cdn-for-ghost/
        /*storage: {
            provider: 'qiniu',
            bucketname: 'your-bucket-name',
            ACCESS_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            SECRET_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            root: '/image/',
            prefix: 'http://your-bucket-name.qiniudn.com'
        }*/
        // or   

修改为:

        //Storage.Now,we can support  qiniu , upyun ,  aliyun oss ,  aliyun ace-storage  and  local-file-store 
        /*storage: {
            provider: 'local-file-store'
        }*/
        // or
        // 参考文档: http://www.ghostchina.com/qiniu-cdn-for-ghost/
        storage: {
            provider: 'qiniu',
            bucketname: process.env.GHOST_STORAGE_bucket,
            ACCESS_KEY: process.env.GHOST_STORAGE_ACCESS_KEY,
            SECRET_KEY: process.env.GHOST_STORAGE_SECRET_KEY,
            root: process.env.GHOST_STORAGE_ROOT,
            prefix: 'http://' + process.env.GHOST_STORAGE_URL
        }
        // or  

这基本就算是改的差不多了。

通过DaoCloud构建Docker镜像

创建新项目



选定项目名,docker-nginx-ghost是在Github。你可以使用Github或Coding拉取,修改后在DaoCloud-用户中心-第三方账户 绑定你的库所在的库的服务商。之后在设置代码源服务商名称里同步代码源之后在下拉选中自己所有库中的docker-nginx-ghost的库,执行环境一般选国外因为各种依赖都是国外的之后开始创建。一般有时会失败几次多试几次就好。

添加必要集成

数据库:


添加数据存储:


选定项目名,docker-nginx-ghost是在Github。你可以使用Github或Coding拉取,修改后在DaoCloud-用户中心-第三方账户 绑定你的库所在的库的服务商。之后在设置代码源服务商名称里同步代码源之后在下拉选中自己所有库中的docker-nginx-ghost的库,执行环境一般选国外因为各种依赖都是国外的之后开始创建。一般有时会失败几次多试几次就好。

添加必要集成

数据库:


添加数据存储:

部署镜像



DaoCloud免费送2X容器绑定微信送1X刚好一个使用256MB/内存应用,一个Volume和50MB免费MySQL实例。


DaoCloud免费送2X容器绑定微信送1X刚好一个使用256MB/内存应用,一个Volume和50MB免费MySQL实例。

Volume:
/mnt/volume

自定义环境变量:

GHOST_STORAGE_URL                   七牛空间域名
GHOST_SITE_DATA /mnt/volume/content 这个必须
GHOST_MYSQL_HOST                    数据库地址不用带端口
GHOST_STORAGE_ACCESS_KEY            七牛ACCESS_KEY
GHOST_MYSQL_PASSWORD                MYSQL密码
GHOST_MAILGUN_PASS                  Mailgun密码
GHOST_MAILGUN_USER                  Mailgun用户名
GHOST_STORAGE_bucket                七牛空间名
GHOST_STORAGE_ROOT  /image/2016/04/
GHOST_MYSQL_USER                    用户
GHOST_SITE_URL                      绑定域名
GHOST_STORAGE_SECRET_KEY            七牛SECRET_KEY
GHOST_MYSQL_DATABASE                数据库名称  

选择立即部署完成

之后在浏览器输入你的网址加尾部的adminhttp://xxxx.xxxx.com/admin

WordPress迁移

给WordPress安装可导出为Ghost支持导入的备份格式:


导入xxxxx.json

完结撒花OvO

本文作者:寒喵
本文链接:https://moe.mwulu.com/wordpress-qian-yi-zhi-ghost/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可