搭建一个属于自己的Ghost博客

准备工作


安装LNMP

LNMP

ONEINSTACK

Centminmod

三个都可以,任意一个安装部署到服务器。

配置Nginx

安装好了nginx后,我们需要设置一个代理服务器让我们的博客可以使用域名访问。

/usr/local/nginx/conf/vhost

nginx 写入以下内容:

 server {  
    listen 80;
    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;
    }
}

MySQL数据库

新建"ghost"的数据库

nvm安装

nvm全称Node Version Manager,Node版本管理器。由于nodejs的更新速度,其版本众多,我们经常能找到的各种资料可能都是基于不同版本,我们写的程序可能也会依赖不同的版本,我们需要在本机上方便的切换不同版本的nodejs,所以我们需要它来帮助我们管理,其项目地址:https://github.com/creationix/nvm

安装方式:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash  
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash  

安装结束后重启下服务器。

使用nvm安装Nodejs

安装命令nvm install <version>,例:nvm install v4.4.7 LTS

安装完成验证

在shell中执行命令command -v nvm 命令执行完毕之后,检测一下环境是否配置成功。

node -v  
v4.4.7  
如果显示以上信息,恭喜你,安装成功了~

扩展

版本查看nvm ls

$ nvm ls
       v0.10.40
       v0.12.7
->     v5.0.0
       system
default -> 5.0.0 (-> v5.0.0)  
node -> stable (-> v5.0.0) (default)  
stable -> 5.0 (-> v5.0.0) (default)  
iojs -> iojs- (-> N/A) (default)  

版本切换

nvm use <version>,例:nvm use 0.12.7

设置默认版本

nvm alias default <version>

有时候如果受墙的阻扰,还需要找个国内镜像,进行安装,如:

export NVM_NODEJS_ORG_MIRROR=镜像地址  
nvm install node  

安装步骤

1.下载Ghost并解压

下载Ghost

$ curl -L http://ghost.org/zip/ghost-latest.zip -o ghost.zip

解压下载的zip包

$ unzip -uo ghost.zip -d ghost

注意:保证目录是"www"用户组和权限,如果不是的话,请用"Chown"和"Chgrp"命令修改。

chown -R www 文件名  
chgrp -R www 文件名  

2.复制config.sample.js文件并命名为config.js

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

3.修改config.js中的配置

3.1 url:博客域名地址

3.2 database:默认生产配置production的数据库为sqlite3,建议修改为mysql

Ghost有产品模式、开发模式和测试模式等多种运行模式,这里我们需要在配置文件中找到production模式:

# 生产模式
production: {  
    url: 'http://xxxx.com', # 修改为你的域名或者IP,注意加上http://
    mail: {},
    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中做相应改变
        }
    }  

3.3 server:ghost服务器地址和端口

3.4 storage:静态文件存储,默认为服务器地址,可根据需要修改为阿里云、七牛等来进行存储
如果使用的是集成版本的安装包的话,可以复制从node_modules复制qiniu文件夹到content文件夹下,然后修改config.js.

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

如果是其他版本的ghost,请登录官方文档库自行查找。

4.中文集成版跳过此步
执行npm install --production安装依赖包。

5.执行npm start --production启动Ghost,进行本地开发与测试

6.后台访问地址:http://yourhost/ghost

让Ghost保持运行

前面提到的启动 Ghost 使用 npm start --production 命令。这是一个在开发模式下启动和测试的不错的选择,但是通过这种命令行启动的方式有个缺点,即当你关闭终端窗口或者从 SSH 断开连接时,Ghost 就停止了。为了防止 Ghost 停止工作,我们得解决这个问题。

以下有几种解决方案:

这里我们使用PM2让Ghost保持运行:

cd /var/www/ghost  
npm install pm2 -g # 安装PM2  
NODE_ENV=production pm2 start index.js --name "ghost"  
pm2 startup centos  
pm2 save  

PS:
因为GFW的强大,在上一步直接使用npm安装依赖的时候可能出现无法安装的情况,这时候可以使用以下代码:

npm install -g cnpm --registry=https://registry.npm.taobao.org  
cnpm install pm2 -g  
NODE_ENV=production pm2 start index.js --name "ghost"  
pm2 startup centos  
pm2 save  

这样一来,我们的Ghost博客就可以保持运行啦,你可以使用以下指令来控制Ghost博客:

pm2 start/stop/restart ghost  

初始化Ghost

现在所有准备工作都做好了,打开你的浏览器,在浏览器中输入<你的 URL>/ghost/,开始初始化你的Ghost吧~

跟着提示完成初始化之后,你就可以开始你的Ghost之旅了~

HTTPS

说明: 首先你已经有免费或收费的证书且配置好了相关参数,可以正常通过https访问。 实现目标:当用户输入 xxxxxx.com 时,自动跳转至 https://xxxxxx.com

修改nginx配置文件 LNMP 环境,文件应存放在/usr/local/nginx/conf/vhost下。
修改*.conf文件:

server {  
     listen 80;  
     listen 443 ssl;
     server_name xxxxx.com;
     ssl_certificate       ssl/server.pem;
     ssl_certificate_key   ssl/server.key;
     if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }

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

如果是其他版本的ghost请登录

重启LNMP:lnmp restart

修改Ghost配置文件 修改Ghost配置:config.js

config = {  
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        # 下面改为:url:'https://yourdomain.com',
        url: 'http://yourdomain.com',

重启ghost程序生效:pm2 restart all(当然,如果守护程序不一样,重启方式也不一样)

又拍云加速

Ghost Upyun Storage

将图片储存于又拍云。仅限于 Ghost 0.6.0 及以后版本使用。 在 content 文件夹中创建一个名为 storage 的文件夹 将本仓库克隆至 storage 文件夹下

cd path/to/your/ghost/content/storage  
git clone https://github.com/sanddudu/upyun-ghost-store.git  
或者 下载 zip 包 后解压至 storage 文件夹下(请将解压出的文件夹名改名为 upyun-ghost-store)

安装依赖包

cd upyun-ghost-store  
npm install  
配置

upyun-ghost-store 文件夹下自带已经修改好的 config.example.js(无备注),您只需要复制到主目录后修改相应内容,并改名为 config.js ,您也可以自行根据以下默认配置自行添加(请不要忘记根据实际情况在末尾添加逗号)。

storage: {  
  active: 'upyun-ghost-store',
  'upyun-ghost-store': {
    bucket: 'my-bucket', //bucket 名称
    operator: 'somebody', //操作员用户名
    password: 'secret', //操作员密码
    domain: 'http://bucket.b0.upaiyun.com', //空间绑定的域名,"必须带 http://" ,结尾不能有 "/"
    filePath: 'YYYY/MM/' //文件远端保存地址,默认为日期格式,由 moment 解析后填充,
                           您可以修改为 "[您的目录地址]",开头不能加 "/",结尾必须加 "/"

云又拍联盟 成为又拍云联盟的用户,一年内每月可免费使用 10GB 存储空间及 15GB 流量。

升级Ghost博客

1.下载最新版本的Ghost。

curl -LOk https://ghost.org/zip/ghost-latest.zip  

2.解压Ghost到某个临时目录,这里假设临时目录为ghost-temp。

unzip ghost-latest.zip -d ghost-temp  

3.删除原Ghost安装目录下的core,index.js,node_modules文件夹以及所有的json文件。
Ghost一般默认的安装位置在/var/www/ghost/,这里使用path-to-ghost-install来代替。

rm -fr path-to-ghost-install/core path-to-ghost-install/index.js path-to-ghost-install/node_modules path-to-ghost-install/*.json  

4.复制解压缩文件夹中的上述文件(node_moduels不包括)到原Ghost安装文件。

cp -r ghost-temp/core ghost-temp/index.js ghost-temp/*.json path-to-ghost-install  

5.进入Ghost安装文件夹

cd path-to-ghost-install  
  1. 安装Ghost
npm install --production  

最新升级请看Ghost博客升级到0.10版本观看

linux开启swap

swap即虚拟内存,具体的概念请参考操作系统的相关书籍。简单的讲swap将磁盘的一部分虚拟成为了内存。

1.Linux中开启swap的方法如下:

dd if=/dev/zero of=/swapfile bs=1024 count=1024k  

2.建立Linux的swap区:

sudo mkswap /swapfile  

3.使能上述swap区:

sudo swapon /swapfile  

4.设置系统自激活交换文件。编辑 /etc/fstab文件,并增加如下第二行代码。

vi /etc/fstab  
/swapfile1 swap swap defaults 0 0

小结

Ghost作为一个新兴的博客系统肯定会有一些不足,但是我们相信它会越来越好的,希望大家都能用它来记录生活中一些美好的时刻,分享自己的精彩的创意,共同建立并且维护这样一个和谐的互联网大家庭。