如何在 Ubuntu 16.04 上使用 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
- 测试
- 结论
Ghost 是一个功能强大的开源发布和博客平台,设计精美且易于使用。 Ghost 是用 javascript 编写的,使用 node.js 作为运行环境。第一个 Ghost 版本于 2013 年在 MIT 许可下发布,并不断更新。本教程展示了在 Ubuntu 16.04 上安装 Ghost Blog 软件、Node.js 和 Apache 作为 SSL 代理服务器。
Nodejs 是一个开源的 javaScript 运行时,它建立在 Chromes V8 JavaScript 引擎 (v4) 之上,用于开发服务器端网络应用程序。 Nodejs 是一个跨平台运行时,可以在 OS X、Microsoft Windows、Linux 和 FreeBSD 上运行。它提供了一个事件驱动的架构和非阻塞 I/O 模型,使其对于实时 Web 应用程序来说轻量级且高效。 Node.js 项目于 2009 年由 Ryan Dahl 启动,截至今天已达到 6.5.0 (LTS) 版本。
先决条件
- Ubuntu 16.04
- 根权限
我们将在本教程中做什么:
- 安装 Node.js
- 安装幽灵
- 配置幽灵
- 安装 Apache 并添加 Ghost VirtualHost
- 为 Ghost 启用 SSL
步骤 1- 在 Ubuntu 上安装 Node.js
对于本教程,我们将使用 nodejs v4.x。 Nodejs 可以通过多种不同的方式安装,例如从源代码安装或从 Ubuntu 存储库安装。我将使用 nodesecure https://deb.nodesource.com/node_4.x 的 nodejs 存储库进行安装,它包含最新的软件,使用存储库可以轻松更新 node.js之后。
使用以下命令安装 nodesource 存储库密钥:
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
然后通过执行以下命令添加 nodejs 存储库:
sudo echo 'deb https://deb.nodesource.com/node_4.x xenial main' > /etc/apt/sources.list.d/nodesource.list
sudo echo 'deb-src https://deb.nodesource.com/node_4.x xenial main' >> /etc/apt/sources.list.d/nodesource.list
更新存储库:
sudo apt-get update
现在我们可以安装 \nodejs\ 包,它将在服务器上安装 node.js 及其依赖项:
sudo apt-get install -y nodejs
现在检查nodejs版本以确保安装成功:
node --version
检查 npm 版本:
npm --version
npm 是一个包管理器,用于安装、发布和管理节点程序。

第 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 命令安装 Ghost:
cd ghostblog/
sudo npm install --production
第 3 步 - 配置 Ghost
请进入 ghostblog 目录,然后将配置示例文件复制到 \config.js\
cd /var/www/ghostblog/
cp config.example.js config.js
接下来,添加一个新用户“ghost”。该用户将被起诉运行 Ghost :
useradd -d /var/www -s /bin/bash ghost
passwd ghost
TYPE NEW PASSWORD FOR ghost USER
笔记:
-d=在 /var/www/ 中定义 ghost 用户的主目录。
-s=为 ghost 用户定义 shell。
现在把ghost安装目录的属主改成用户\ghost\。
chown -R ghost:ghost /var/www/ghostblog
通过以 ghost 用户身份执行 npm 命令来测试 ghost 博客。请以用户ghost登录:
su - ghost
然后进入安装目录并启动Ghost:
cd ghostblog/
npm start --production
Ghost 已安装并运行在端口为 2368 的本地主机上。我们可以使用 curl 命令检查它:
curl -I localhost:2368

您可以看到 ghost 正在运行 - HTTP/1.1 200 OK。
我们将ghost作为服务来运行,方便我们启动ghost。请通过键入 \exit\ 返回到 sudo/root 用户,并在目录 \/lib/systemd/system/\ 中创建一个名为 \ghost.service\ 的新文件。
cd /lib/systemd/system/
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 守护进程:
systemctl daemon-reload
然后添加开机启动ghost,用systemctl命令启动ghost:
systemctl enable ghost
systemctl start ghost
通过检查端口 2368 检查 ghost 是否正在运行:
netstat -plntu

第 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>
保存文件并退出 vim。
激活 OpenSSL apache 模块并重新启动 apache:
sudo a2enmod ssl headers
sudo systemctl restart apache2
测试
访问 http://ghostblog.me,您将被强制转到博客的 HTTPS/SSL 站点。

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