如何在 Ubuntu 15.10 上使用 Apache 和 SSL 安装 Ghost 博客软件
本教程适用于这些操作系统版本
- Ubuntu 16.04(Xenial Xerus)
- Ubuntu 15.10(Wily Werewolf)
在此页
- 先决条件
- 第 1 步 - 在 Ubuntu 上安装 Node.js
- 第 2 步 - 安装 Ghost 博客
- 第 3 步 - 配置 Ghost
- 第 4 步 - 安装 Apache 和 Ghost VirtualHost
- 第 5 步 - 为 Ghost 启用 SSL
- 测试
- 结论
Nodejs 是一个开源的 javaScript 运行时,它建立在 Chromes V8 JavaScript 引擎 (v4) 之上,用于开发服务器端网络应用程序。 Nodejs 是一个跨平台运行时,可以在 OS X、Microsoft Windows、Linux 和 FreeBSD 上运行。它提供了一个事件驱动的架构和非阻塞 I/O 模型,使其对于实时 Web 应用程序来说轻量级且高效。 Node.js 项目于 2009 年由 Ryan Dahl 启动,截至今天已达到 4.2.0 (LTS) 版本。
Ghost 是一个功能强大的开源发布和博客平台,设计精美且易于使用。 Ghost 是用 javascript 编写的,使用 node.js 作为运行环境。 Ghost 已于 2013 年在 MIT 许可下发布。
先决条件
- Ubuntu 15.10
- 根权限
我们将在本教程中做什么:
- 安装 Node.js
- 安装幽灵
- 配置幽灵
- 安装 Apache 并添加 Ghost VirtualHost
- 为 Ghost 启用 SSL
步骤 1- 在 Ubuntu 上安装 Node.js
对于本教程,我们将使用 node.js v0.12。 Node.js 可以从源代码或 nodesource.com 存储库安装。我们将使用 node.js 存储库 https://deb.nodesource.com/node_0.12 进行安装。
请通过执行以下命令添加和更新存储库:
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
接下来使用 apt 安装 node.js:
sudo apt-get install -y nodejs
现在检查 node.js 版本:
node --version
v0.12.7
并检查 npm 版本:
npm --version
2.11.3
Npm 是用于安装、发布和管理节点程序的 node.js 包管理器。
第 2 步 - 安装 Ghost 博客
我们将ghost安装在\/var/www/\目录下,使用最新版本的Ghost。请在 /var 中新建目录 \www\ 并使用 \cd\ 进入:
mkdir -p /var/www/
cd /var/www/
使用 wget 命令下载 Ghost,然后将其解压缩到名为“ghostblog”的目录中:
wget https://ghost.org/zip/ghost-latest.zip
unzip -d ghostblog ghost-latest.zip
注意:-d:自动创建目录。
然后转到 ghostblog 目录并使用 npm 命令以 root/sudo 安装 Ghost:
cd ghostblog/
npm install --production
第 3 步 - 配置 Ghost
请进入 ghostblog 目录,然后将配置示例文件复制到 \config.js\
cd /var/www/ghostblog/
cp config.example.js config.js
现在用 vim 编辑器打开配置文件:
vim config.js
在服务器块(第 27 行),将主机值更改为 0.0.0.0。
host = 0.0.0.0
允许从外部访问博客。保存并退出。
然后添加新用户“ghost”。该用户将用于运行 ghost:
sudo adduser --shell /bin/bash ghost
ENTER YOUR PASSWORD
现在将 ghost 安装目录的所有者更改为用户 \ghost\。
chown -R ghost:ghost /var/www/ghostblog
通过以 ghost 用户身份执行 npm 命令来测试 ghost 博客。请以用户ghost登录:
su - ghost
并转到 Ghost 安装目录并启动它:
cd /var/www/ghostblog
npm start --production
访问端口 2368 上的服务器 IP,在我的例子中:192.168.1.104:2368

为了方便我们启动ghost,我们将创建一个系统服务来运行Ghost。请返回 sudo/root 用户并在目录 \/lib/systemd/system/\ 中创建一个名为 \ghost.service\ 的新文件。
sudo cd /lib/systemd/system/
sudo vim ghost.service
粘贴下面的 systemd 脚本:
[Unit]
Description=ghost
After=network.target
[Service]
Type=simple
# Ghost installation Directory
WorkingDirectory=/var/www/ghostblog
User=ghost
Group=ghost
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost
[Install]
WantedBy=multi-user.target
并保存文件然后重新加载 systemd 守护进程:
sudo systemctl daemon-reload
添加Ghost服务开机自动启动,使用systemctl命令启动Ghost:
sudo systemctl enable ghost
sudo systemctl start ghost
第 4 步 - 安装 Apache 和 Ghost VirtualHost
使用 apt-get 命令安装 apache:
sudo apt-get install apache2
安装完成后,在目录\/etc/apache2/sites-available/\ 中为ghost 虚拟主机创建一个新文件。
sudo cd /etc/apache2/sites-available/
sudo vim ghostblog.conf
粘贴下面的配置:
<VirtualHost *:80>
#Domain Name
ServerName ghostblog.me
ServerAlias www.ghostblog.me
#HTTP proxy/gateway server
ProxyRequests off
ProxyPass / http://127.0.0.1:2368/
ProxyPassReverse / http:/127.0.0.1:2368/
</VirtualHost>
保存并退出。
使用命令 a2enmod 在 apache 中激活 HTTP 代理模块,如下所示:
sudo a2enmod proxy proxy_http
最后,我们要激活Ghost虚拟主机,然后重启apache:
sudo a2ensite ghostblog
sudo systemctl restart apache2
重启幽灵:
sudo systemctl restart ghost
通过访问域进行测试:http://ghostblog.me

第 5 步 - 为 Ghost 启用 SSL
要在 apache 上启用 SSL,请确保系统上安装了 openssl 库。我们将在目录\/etc/apache2/certs\ 中生成新的密钥和crt 文件。首先我们制作新的目录证书:
sudo mkdir -p /etc/apache2/certs
并使用以下命令生成证书密钥:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/certs/ghostblog.key -out /etc/apache2/certs/ghostblog.crt
请更改证书文件的权限:
sudo cd /etc/apache2/certs/
sudo chmod 600 *
接下来,通过编辑“ghostblog.conf”文件将 ssl 配置添加到 ghost 虚拟主机。
sudo cd /etc/apache2/sites-available/
sudo vim ghostblog.conf
在下面粘贴新的配置脚本:
<VirtualHost *:80>
ServerName ghostblog.me
ServerAlias www.ghostblog.me
# Force http to https
Redirect permanent / https://ghostblog.me/
# ProxyRequests off
# ProxyPass / http://127.0.0.1:2368/
# ProxyPassReverse / http:/127.0.0.1:2368/
</VirtualHost>
<VirtualHost *:443>
ServerName ghostblog.me
SSLEngine on
SSLCertificateFile /etc/apache2/certs/ghostblog.crt
SSLCertificateKeyFile /etc/apache2/certs/ghostblog.key
ProxyPass / http://127.0.0.1:2368/
ProxyPassReverse / http:/127.0.0.1:2368/
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>
保存并退出。
激活 OpenSSL apache 模块并重新启动 apache:
sudo a2enmod ssl headers
sudo systemctl restart apache2
测试
访问 http://ghostblog.me,您将被强制转到博客的 HTTPS/SSL 站点。

现在已成功安装带有 apache 和 SSL 的 Ghost。
结论
Nodejs 是一个开源的多平台 javascript runtine,用于构建服务器端 Web 应用程序。它对于实时 Web 应用程序来说是轻量级和高效的。 Ghost 是一个用 Javascript 为 Node.js 编写的博客平台。 Ghost 设计精美且用户友好。直观的界面使这个博客系统易于使用。 Ghost 可以独立安装,也可以与 Apache 或 Nginx 等网络服务器一起安装。您可以使用 openssl 保护 Ghost。使用 Apache 和 OpenSSL 配置 Ghost 很容易,您只需设置 apache http_proxy 模块并生成 SSL 证书。