Blog logoJustZht

Blog logo

Ghost

A 4 post collection


在Coding上部署Ghost的一些问题

 •  Filed under Ghost

花了点时间给吴总搭建了一个小站,发现了一些问题,在这边说下。
注:以下问题针对Ghost平台

1.不能托管新增的图片

这个比较要命啊...只有部署时含有的图片能显示,后期上传的图片是不显示的....
解决办法: 主题文件内图片:直接把hbs内写的的图片文件放在和hbs同级的目录下,然后直接和下面一样,在img src写图片的名字。

<a href="{{@blog.url}}" title="前往 {{@blog.title}} 的主页"><img src="图片名称.后缀名" width="80" alt="{{@blog.title}} logo" class="panel-cover__logo logo" /></a>

文章内图片:传到七牛云或者其他有外链的平台,然后markdown调用。

2.评论系统

Ghost没有原生评论,用DISQUS的系统又不能自动合并不同参数同一个页面的评论,聊胜于无。
暂时用多说,虽然以前用wordpress的时候听说这个系统侵犯隐私....
Ghost的/ghost/content/themes/主题名称/post.hbs内修改:

在最底部的{{/post}}前面加上这些:

<div class="ds-thread" data-thread-key="{{slug}}" data-title="{{{title}}}" data-url="{{url absolute="true"}}"></div>


然后在{{/post}}后面加上这些

<!-- 多说公共JS代码 start (一个网页只需插入一次) -->  
<script type="text/javascript">  
var duoshuoQuery = {short_name:"xxxxxxxxxx"};  
(function() {
    var ds = document.createElement('script');
    ds.type = 'text/javascript';ds.async = true;
    ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
    ds.charset = 'UTF-8';
    (document.getElementsByTagName('head')[0] 
     || document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->

将里面的{short_name:"xxxxxxxxxx"}换成你自己的,具体到http://你设定的域名.duoshuo.com/admin/tools/ 查看。

部署后可看到评论框

在Coding上部署你的博客(1)

 •  Filed under Ghost, Coding

这是我在Coding实验搭建后的地址
http://justzht.coding.io/

在V2EX的广告栏看到了这个项目:在Coding上写博客,是这么说的:“我们支持 Java,Ruby,Go,PHP,静态文件等等各种方式运行你的博客。”
里面有各种博客平台可以Fork,包括:

JustThink--基于 Angular 和 Bootstrap 构建的博客系统
mder--原创非官方博客生成工具,Just for coding.net
MyBlog-Typecho---基于 meltykiss 主题的 Typecho 博客
Ghost-On-Coding-Paas--Ghost 博客 Coding 修改版
Hexo--简单高效的博客系统,基于 Node.js
jekyll--一个简单的静态博客网站
php-wordpress--这个星球上最受欢迎的独立博客系统

这玩意和在Github搭博客差不多....
我选择了在Coding上部署Ghost博客,大家可以自己选择哈,我来谈谈这玩意的体验。


首先是系统配置

CPU 0.04%     
内存 83.9 MB/256.0 MB
磁盘 80.3 MB/1.0 GB

这是我的Ghost部署容器,内存最大512MB,硬盘1G,反正作为博客肯定够够的
网速也不错,实测76.93KB/S,比从我的主机连接的速度高很多,见图。

1.机房有两个,我选的是北京,还有一个是香港但是要月费,域名是二级域名.coding.io,比如我的是justzht.coding.io。不过如果选了香港机房可以绑定自己的。
2.至于体验,基本和我在Linode上的一致,甚至更快些....毕竟国内机房
3.Coding的部署很简单,过程可以看每个项目的Readme。
建立后,可以建立WebSocket实时查看日志,比如:

2015-01-02T02:13:22.02+0800 [App/0]   OUT 103.24.228.139 - - [Thu, 01 Jan 2015 18:13:22 GMT] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) 360JK qiyunce"

4.有个问题是每次部署或者重启后保存的图片都会消失,简直和学校机房一样...所以用外链或者只写字吧....

目前 我在考虑搞一个方案让Coding的文章和com域名同步


总之,目前这个东西看起来非常酷,第一个是相当于一个免费的PAAS,第二个是直接用Git的方式修改博客主题很Geek。

以后有什么小项目往上面部署,不用服务器,而且还有个二级域名,(不过估计人多了就难注册二级域名了╮(╯▽╰)╭ )


附:Coding完整支持一览:

1.Java

Servlet Spring

2.Ruby

Sinatra Rails

3.Node.js

Node Express 2048

4.Go

Go

5.PHP

PHP WP

6.Python

Flask Tornado

7.Scala

Scalatra Play! 1.x Play! 2.x

8.HTML

Nginx Node

半夜救回Ghost....

 •  Filed under Ghost, 作死集

真不容易啊....明天早上还有高数,寝室里只有飞飞睡了,剩下三个里两个在做课设,我在拯救我的Ghost博客.....
起因是手贱重启了Ghost服务,然后就发现访问域名80端口就呵呵了....直接502,但是域名+:2368是可以访问的,说明Ghost至少还在2368端口正常工作。
然后看Nginx的ERROR.LOG里是这么写的:

connect() failed (111: Connection refused) while connecting to upstream

这个其实和upstream的内容没太大关系...至少是我这种状况是没啥关系,和9000端口更没关系。

解决方案

这里有两点:

1.有关重启后内容消失了的问题

很大可能是模式设置的问题。我才发现我的文章都是在Development模式下的Ghost发表的,因此当我重启时,先执行停止:

forever stop index.js

然后启动要选择development而不是production

NODE_ENV=development forever start index.js

否则你会发现你的网页什么都没有了....一篇文章也不显示,因为你现在在另外一个你没有发过文章的模式下。

2.有关端口的问题

如果Nginx里设置了2368转发80端口,那么Ghost里面的config.js就千万不要在host这个地方填写VPS的外网IP,要写127.0.0.1,否则502死死的
参见 digitalocean-community 的第一个回复:

Once nginx was configured, I was getting the Gateway error because both ghost and nginx where now listening at different ports and nginx was redirecting to the server's localhost address at port 2368.The problem here was the Ghost's config.js was still using the server's IP, rather than the localhost address.

Anyways, once I change the Ghost config.js file's "host" address back to the localhost 127.0.0.1, everything worked.

3.(另一个不算bug的问题)

注:已经解决:看这个

我用的DISQUS评论服务,我分享到朋友圈的时候我的网页后面会带一个参数from=timeline&isappinstalled=0 这导致了DISQUS会认为在from=timeline&isappinstalled=0这个页面才有评论,而真正没有参数的页面不显示评论。这不是坑爹么....
于是我收到邮件说有人评论我的网站了 然后我从朋友圈点开链接是能看到陈叔的评论 但是从电脑上就看不到了...
或者说这是Ghost和DISQUS结合的问题,导致了有参数和没参数的网页没有合并在一个评论列表里,测试后发现:

80端口和2368端口是同一网页但是识别为两个页面

http://www.justzht.com:2368/facebookpaperprojext/
http://www.justzht.com/facebookpaperprojext/

后面加上参数,比如Key=XXXX....也不能识别成一个

http://www.justzht.com:2368/facebookpaperprojext/
http://www.justzht.com:2368/facebookpaperprojext/from=timeline&isappinstalled=0 

甚至连带不带/,比如这种一个跳转的东西都无法合并

http://www.justzht.com/facebookpaperprojext
http://www.justzht.com/facebookpaperprojext/

在Linode上搭建Ghost的过程

 •  Filed under 技术, Linode, Ghost, Nginx

Ghost还是很漂亮的 而且支持实时预览 虽然没多少插件 但是作为博客就该这个样子 至于百度SEO?我觉得没啥大意义咯,又不是公司官网那种要求排名的东西。

好回到题目,今天买了Linode服务器,顺便搭建了Ghost,把过程记下来下。
(附带一句,我买的时候用的是GlobalCash的虚拟信用卡 DO是不支持这种卡的,会自动识别成储蓄卡不给通过,因此我没有使用DO的5刀月套餐,转而买了Linode,Linode月计划最低10刀啊心疼⊙︿⊙)

参考文章:http://www.howtoinstallghost.com/how-to-install-ghost-on-linode-vps/

1.Linode要部署一个系统即Rebuild,我用的是CentOS7.
2.SSH啦,登陆上去,更新下yum啥的 安装DevelopmentTools等等

ssh root@“你的linode的IP”
yum update
yum upgrade
yum groupinstall "Development Tools"      

3. Nodejs的编译和安装

cd /tmp
wget http://nodejs.org/dist/node-latest.tar.gz
tar -xzf node-latest.tar.gz
cd 到那个解压后的文件夹名字(不知道文件夹名的话ls命令下咯)
./configure
make  
//(会走很长时间的过程)
make install    

4.安装Ghost

mkdir -p /var/www/
cd /var/www/
wget -O ghost.zip https://ghost.org/zip/ghost-latest.zip
unzip -d ghost ghost.zip
cd ghost
npm install --production
cp config.example.js config.js

5.修改config.js,这个在/var/www/ghost目录里面

host: '127.0.0.1',
//改成你自己的ip,记得改production下面的那个 当然你改完所有的我也没意见╰( ̄▽ ̄)╮
useradd ghost
//建立服务器的用户
chown -R ghost:ghost /var/www/ghost/

6.运行ghost

su - ghost
cd /var/www/ghost/
npm start --production
//注意这个npm是个坑 一旦断了ssh网站就呵呵了 因此需要forever来保证npm是一直后台运行中
//解决方案参见http://docs.ghostchina.com/zh/installation/deploy/ 中的“让 Ghost 一直运行”

7.第一次访问博客会按照你的需求 建立博客的账户 这个随意 不过这个时候网站的端口是:2368要记得..不然你啥都看不到
8.nginx安装和代理

//这部分参考http://www.allaboutghost.com/how-to-proxy-port-80-to-2368-for-ghost-with-nginx
//建立一个nginx的源的文件 
vim /etc/yum.repos.d/nginx.repo
//里面写下面的内容
[nginx] 
name=nginx repo         baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0
enabled=1
//把$releasever改为你的系统版本 我的是7
sudo yum install nginx -y 
sudo service nginx start 
sudo chkconfig nginx on

9.建立配置文件把80端口也能访问2368端口

cd到: /etc/nginx/conf.d/
//然后改default.conf,直接执行
vim default.conf
内容全删掉 替换成下面的:
server {
listen 80;
server_name hahahahahah.COM;
location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:2368;
    }
}
//hahahahahah.COM改为你的域名 我的是justzht.com
sudo service nginx restart

这个过程记得把域名解析做好 不然会有奇怪的问题