Ghost 的高可用安装 安装篇

简介: 前面详细的讲述了,在 Node.js 4.x 环境下安装 Ghost 博客平台的准备工作,包括配置、系统的选择,组建的选择等等,如果没有看过的同学,一定要去看一下! 门:《Ghost 的高可用安装 准备篇》

前面详细的讲述了,在 Node.js 4.x 环境下安装 Ghost 博客平台的准备工作,包括配置、系统的选择,组建的选择等等,如果没有看过的同学,一定要去看一下! 门:《Ghost 的高可用安装 准备篇》

下载、准备

这里我们推荐安装的是由王赛翻译的 Ghost 中文版(非官方,因为官方也没有出中文版。)因为,它不仅被翻译了,而且其去除了像谷歌字体这样的会拖慢速度的内容;集成 node_modules 免去了大陆主机无法运行的问题。

下载 http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip 到相应目录,例如我设置的是 /data/wwwroot/mf8

mkdir -p /data/wwwroot/mf8/ //如果没有就要创建
cd /data/wwwroot/mf8/  //进入目录
wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip  //下载中文版
unzip Ghost-0.7.4-zh-full.zip //解压
npm install --production //跑跑试试,4.x 版本可能会提醒你兼容问题,其实没关系的,不理会即可

然后打开 http://yourdomain:2368 看看能不能访问

编辑 config

我们要修改 config.js 文件,如果没有就讲 config.example.js 改了,

cp config.example.js config.js

一,修改域名

url: 'http://my-ghost-blog.com', 修改成 url: 'http://你的域名',

如果使用了 ssl,且不想全站的话,再添加:urlSSL: https://s你的域名

二,修改,邮箱

mail: {}, 修改成

        mail: {
           transport: 'SMTP',
           from: '发件人地址',
           options: {
                     host: 'smtp 邮件发送服务器',
                     secureConnection: true, // 填 true 则使用加密传输.false 则不
                     port: 465, //如果上面填 true,这里填465;如果上面填 false,这里填 25
                     auth: {
                            user: '邮箱地址',
                            pass: 'A邮箱密码'
                            }
                    }
                },

如果你不想多用户合作,其实不设置也没关系。

三,修改数据库

如果,你想使用 sqlite 的话,则不用改,如果使用 pg 或者 MariaDB(Mysql) 则改。

        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },

MariaDB(Mysql)

        database: {
            client: 'mysql', // MariaDB 也填这个
            connection: {
                host     : 'localhost', //如果使用 RDS 等云数据库则修改为连接地址
                user     : '用户名称',
                password : '用户密码',
                database : '数据库名称',
                charset  : 'utf8' //字符集
            },
            debug: false
        },

这里的话,默认连接次数是 min: 2, max: 10,如果需要改动,则添加:


pool: {
    min: 2,
    max: 20
  }

一只保持连接,则设置 min: 0

PostgreSQL

database: {
            client: 'pg',
            connection: {
                host     : 'localhost',
                user     : '用户名称',
                password : '用户密码',
                database : '数据库名称',
                charset  : 'utf8' //字符集
                //port     : '如果要设置端口,请在这里填写'
            }
        },

四,设置端口

        server: {
            host: '127.0.0.1', //部分配置可能需要设置成 0.0.0.0
            port: '2368' //端口,如果要安装多个博客,那就要设置多个端口了。
        },

五,设置附件

内容较多,而且 Ghostchina 的设置教程也都失效了,有空我单独写一篇介绍一下,会点英语的都看的懂的。

如果你还要设置更多,请参考官方文档:http://support.ghost.org/config/

运行

    npm install --production
    npm start

再打开 http://yourdomain:2368 就能跑气来了,如果你发现你修改的参数并没有生效,则可能是因为运行在 development 模式,而非 production
所以,我们需要修改 /core/index.js 文件,将

    process.env.NODE_ENV = process.env.NODE_ENV || 'development';

修改为:

process.env.NODE_ENV = process.env.NODE_ENV || 'production';

守护进程

当你将 SSH 关闭,或者 Ctrl + c 后,会发现网站就打不开了,因此这里我们需要来维持 Ghost 的运行。

守护进程一般用如下软件:

Upstart:只能在开机启动,无法守护进程

PM2:可开机自启动,程序崩溃自动重新打开,可监控运行
Supervisor:可开机自启动,程序崩溃自动重新打开
Forever:不能开机自启动

所以,这里我们选择 Supervisor 或 PM2,MF8.biz 使用后者。

Supervisor

Debian/Ubuntu: apt-get install supervisor
Fedora/RHEL: yum installsupervisor
其他大多数发行版: easy_install supervisor

确保使用service supervisor start启动了 supervisor ,然后为ghost创建安装脚本, vi /etc/supervisor/conf.d/ghost.conf 输入以下内容,记得替换{ghost_path}

注: {ghost_path} 就是你安装 Ghost 的路径,例如米饭粑的 Ghost 在/data/wwwroot/mf8 那么路径就是这个。

[program:ghost]
command = node {ghost_path}/index.js
directory = {ghost_path}/ghost
user = ghost
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ghost.log
stderr_logfile = /var/log/supervisor/ghost_err.log
environment = NODE_ENV="production"

PM2

安装

npm install pm2 大陆主机安装了 cnpm,就用 cnpm install pm2

在你的 ghost 目录,运行,

NODE_ENV=production pm2 start index.js --name "ghost"

开机自启动,

pm2 startup ubuntu //可以换成,centos、debian

保存,

pm2 save

Nginx 反代

在对应域名的 conf 中,添加

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

就可以反代了,如果是 https,则是:

    location ~ ^/(?:ghost|signout) {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
        add_header Cache-Control "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0";
        proxy_set_header X-Forwarded-Proto https;
    }
目录
相关文章
|
5G 网络虚拟化
解决谷歌硬盘大文件下载不了的问题
解决谷歌硬盘大文件下载不了的问题
1421 0
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
解决:下列软件包有未满足的依赖关系: libc6-dev : 破坏: binutils (< 2.38) 但是 2.35.1-7 正要被安装E: 错误,pkgProblemResolver::Re
2415 0
|
NoSQL 关系型数据库 MySQL
​Cassandra笔记
​Cassandra笔记
427 1
|
安全 搜索推荐 Linux
D-Bus深度解析:系统总线与会话总线的区别与应用
D-Bus深度解析:系统总线与会话总线的区别与应用
900 2
|
消息中间件 存储 中间件
|
存储 数据采集 监控
《物联网技术》课程笔记——第三章 物联网感知技术之定位技术
《物联网技术》课程笔记——第三章 物联网感知技术之定位技术
|
数据可视化 语音技术
2022年全国电子设计竞赛E题-声源定位跟踪系统设计详解
2022年全国电子设计竞赛E题-声源定位跟踪系统设计详解
1322 0
|
消息中间件 运维 数据可视化
SpringCloud学习(十九):Bus动态刷新全局广播
前文说到:假如我们有很多的服务3355、3366、3377……,那是不是要给每一个服务发送一次手动刷新的post请求呢? 能不能做到只发送一次请求,让每个服务都收到更新通知,一次广播,处处生效呢?这就需要用到我们接下来要讲到的Bus消息总线。
576 0
SpringCloud学习(十九):Bus动态刷新全局广播
|
存储
HVAC 电容器有什么作用?为什么会出现 故障?(更换提示)
HVAC 电容器是一种小型设备,对空调的可靠运行起着关键作用。它在制冷循环期间为空调提供能量。它具有非常高的电压和高电容,因此很危险。本文将简单介绍HVAC电容器的详细信息、如何检测故障电容器以及更换故障电容器的技巧。
2026 0
HVAC 电容器有什么作用?为什么会出现 故障?(更换提示)
|
机器学习/深度学习 人工智能 算法
【DouZero】 强化学习+self play达到人类玩家斗地主水平。
【DouZero】 强化学习+self play达到人类玩家斗地主水平。
1326 0