人嘛,就是爱纠结.纠结纠结着,博客程序就换啊换的.
但是啊换成非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的库,执行环境一般选国外因为各种依赖都是国外的之后开始创建。一般有时会失败几次多试几次就好。
添加必要集成
数据库:
添加必要集成
数据库:
添加数据存储:
部署镜像
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