什么是Ghost

Ghost 是一套基于 Node.js 构建的开源博客平台(Open source blogging platform),具有易用的书写界面和体验,博客内容默认采用 Markdown 语法书写,目标是取代臃肿的 Wordpress。

自己用了多年的Wordpress后来真的是审美疲劳了,后来无意中看到了Ghost大爱,终于有时间来研究以下了。经过不懈努力终于搭建成功,现在就写下来记录以下咯。

环境

  • linode 2014
  • CentOS 6.5_x64 7.0_x64 #本想用7的但是一堆麻烦后来放弃了
  • Node v0.10.40 # 官方建议版本
  • Nginx 1.80 1.9.13(支持http2)
  • Mysql 5.1.73 Mariadb
  • Ghost v0.7.4

安装

初始化VPS

因为自己用的是linode的服务器,是没有C和C++编译的,需要先做些准备工作

yum update                              #更新yum源
yum groupinstall "Development Tools"    #安装开发工具组包
yum install wget                        #这个一般用不着

安装Node

Ghost是基于Node.js构建的开源博客平台,所以我们首先搭建Node环境。

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 
make && make install  

上步执行之后,可以通过以下方法检查是否安装完成。

node -v
v0.10.40  

如果显示了v0.10.40就说明你安装成功了,那么我们可以继续后面的步骤了。

Nginx的安装

虽然说Ghost是一个独立的程序了,但是官方推荐最好要用Nginx来挂载一下的。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。

因为linode的源里面是没有Nginx的,所以首先要在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo

vim /etc/yum.repos.d/nginx.repo  #一般来说我喜欢vim,因为vi没有代码高亮看起来不舒服

写入以下内容

[nginx] 
name=nginx repo  
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0  
enabled=1  

保存(退出输入:X就可以了,不会的自己百度以下,实在不行就用SFTP下载回来改吧)继续下面操作

yum install nginx -y    # 安装Nginx  
service nginx start     # 启动Nginx  
chkconfig nginx on      # 设置开机启动Nginx  

这样Nginx就安装成功了,在浏览器中输入你的VPS的IP正确的话就可以看到“熟悉”的Nginx提示了。

配置Nginx

Nginx安装完成后,我们需要设置一个代理服务器让我们的博客可以使用域名访问。 在/etc/nginx/conf.d目录下创建一个配置文件ghost.conf

vim /etc/nginx/conf.d/ghost.conf  #vim是可以直接创建文件的哦

写入如下的内容

server {  
    listen 80 http2;
    server_name example.com;    #将 example.com 改为你的域名或ip。

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

保存后重启Nginx

service nginx restart  

这样子就好了。

安装MySQL

Ghost 默认使用 sqlite3 数据库,但一般自己习惯了MySQL所以这里还是改用MySQL了,不用的话就跳过这一步好了。

yum install mariadb mariadb-server # 安装MariaDB  
systemctl start mariadb           # 启动MariaDB  
systemctl enable mariadb            # 设置开机启动MariaDB

然后开始MySQL的初始化

mysql_secure_installation
Set root password? [Y/n] # 设置root密码  
anonymous users? [Y/n] # 删除匿名用户  
Disallow root login remotely? [Y/n] # 禁止root用户远程登录  
Remove test database and access to it? [Y/n] # 删除默认的test数据库  
Reload privilege tables now? [Y/n] # 刷新授权表使修改生效  

上面的内容根据需要修改自己来改吧,默认的ROOT用户是没有密码的,直接输入回车就好了

接下来就是要配置MySQL了,让它可以“读写”中文,这一步对于要用中文字符的国内用户来说很重要的

vim /etc/my.cnf  

写入如下内容


[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

保存退出重启MySQL服务

service mysqld restart  

然后件里一个数据库来存放ghost的数据

mysql -u root -p # 输入设置好的密码  
create database ghost; # 创建ghost数据库  
grant all privileges on ghost.* to 'ghost'@'%' identified by '123456'; # 新建一个用户ghost,密码为123456,随意更改啦  
flush privileges; # 重新读取权限表中的数据到内存,不用重启mysql就可以让权限生效  

安装Ghost

下载中文的用下面的命令

mkdir /var/www #这里将/var/www目录作为博客根目录
cd /var/www  
wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip  
unzip Ghost-0.7.4-zh-full.zip -d ghost  
cd ghost  

原版的就下面的

mkdir /var/www //这里将/var/www目录作为博客根目录
cd /var/www
wget https://ghost.org/zip/ghost-latest.zip
unzip ghost-latest.zip -d ghost #latest保证是最新的版本
cd ghost

随后修改配置文件

cp config.example.js config.js  
vi config.js 

对生产模式进行改造

# 生产模式
production: {  
    url: 'example.com', # 修改为你的域名或者IP,注意加上http://
    mail: {},# 此处还没成功调试出非官方推荐的SMTP,有空再试
    database: {
        client: 'mysql'
        connection: {
            host     : '127.0.0.1',
            user     : 'ghost', # 数据库连接的用户
            password : '123456', # 先前创建的密码
            database : 'ghost', # 先前创建的数据库
            charset  : 'utf8'
        },
    server: {
            host: '127.0.0.1',
            port: '2368' # 若修改该端口记得在nginx中做相应改变
        }
    }  

保存退出,开启ghost尝试以下。

npm install --production  
npm start --production

启动浏览器,输入之前配置的域名或者IP,我们就可以看到建立好的Ghost博客啦。 (Ctrl+C 可以关闭)
至此Ghost算是安装完毕了,下面要解决一个问题就是如何让Ghost持续工作了。

让Ghost持续运行

方法有很多我自己用的是
PM2PM2
另外的还有Forever(https://npmjs.org/package/forever)
Forever这里有用法指导
Supervisor(http://supervisord.org/
下面我写以下PM2

cd /var/www/ghost  
npm install pm2 -g # 安装PM2  
NODE_ENV=production pm2 start index.js --name "ghost"  
pm2 startup centos  #如果是其他系统把后面的centos换掉
pm2 save  

下面是PM2的几个命令

pm2 start ghost    # 用PM2开启ghost
pm2 restart ghost  # 用PM2重启ghost
pm2 stop ghost     # 用PM2关闭ghost

完成Ghost的最后一步

最后一步很简单,只要在浏览器中根据要求完成操作就好了,有3步(其实就两步,邀请好友基本不用的)这样子你就可以开始你的Ghost博主之旅了。
不过这里说一句Ghost自己没有评论功能的,你需要用其第三方工具来解决。

最后的Tips

因为我自己是工科生有很多代码要输入的,而Ghost自带的Markdown是没有代码高亮的,而我用的主题也不带我们专业要用的HDL和Matlab的高亮,所以自己找了一个解决方案
先下载一个highlight.js
下载链接
在里面找到你需要的语言,下载解压后上传到你所使用的ghost主题链接
之后用文本编辑器打开theme文件夹下的default.hbs文件进行编辑:

找到{{! Styles’n’Scripts }},在下面添加:

<link rel="stylesheet" type="text/css" href="{{asset "/highlight/styles/hybrid.css"}}" />

这里的hybrid.css可以替换成其他代码主题,可以根据个人喜好选择styles文件夹下的其他主题样式。你可以到这个网站预览各种风格的代码主题,选择自己喜欢的。

找到{{! The main JavaScript file for Casper }},在下面添加:

<script type="text/javascript" src="{{asset "/highlight/highlight.pack.js"}}"></script>
    <script type="text/javascript">hljs.initHighlightingOnLoad();</script>

找不到你就在合适的地方添加好了
这样就完成了,再使用时候在Ghost自带的Markdown里面使用如下方式写作即可

< pre><code class="matlab">...</code></pre>

「前面有一个空格请自己去除,不然我打不出来」

matlab可以换成其他语言
下面做一个例子


%图像反转
%MATLAB 程序实现如下:
I=imread('xian.bmp');
J=double(I);
J=-J+(256-1);                 %图像反转线性变换
H=uint8(J);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(H);