如何使用Nginx服务器块在一个VPS上服务多个Ghost博客
介绍
Ghost 是一个很棒的新博客平台,它简化了博客的启动和运行过程。 它拥有干净的界面和易于使用的界面。
在本文中,我们将讨论一种使用一个 VPS 托管多个博客的方法。 我们将配置两个域名,它们将解析为托管在同一系统上的不同 Ghost 实例。
先决条件
本指南假设您从一个配置了一键式 Ghost 映像的新 droplet 开始。 有关 如何在 DigitalOcean 上创建 Ghost 博客的说明,请单击此处。
这还假设您有两个单独的域名,您将在每个博客中使用它们。 它们都应该指向您为 Ghost 博客创建的 VPS 实例。 要了解如何正确配置您的域名,请点击这里。
最后,我们假设您以 root 身份登录到 Ghost droplet。
停止运行服务
在开始之前,我们应该停止 Ghost 服务以避免出现问题:
service ghost stop
这将确保我们不会移动由 Ghost 进程打开的文件。
为了安全起见,我们想对 nginx 做同样的事情:
service nginx stop
修改 Nginx 配置
我们需要做的第一件事是调整 nginx 配置。 目前,nginx(我们的 web 服务器)被配置为将所有请求传递到一个位置。 我们需要根据访问者试图访问的站点创建不同的路径。
首先导航到配置 Ghost 的 nginx 目录。 我们将重命名 Ghost 配置文件以描述我们的第一个域,然后将其复制到代表我们的第二个域的文件中。 这些名称仅供参考,您可以随意更改:
cd /etc/nginx/sites-enabled mv ghost firstsite.conf cp firstsite.conf secondsite.conf
使用您选择的编辑器打开第一个站点的配置:
nano firstsite.conf
更改 server_name
参数以匹配您的第一个站点的域名。 正确处理这部分很重要,因为这是 nginx 知道将控制权传递给哪个 Ghost 实例的唯一方法。
server_name firstsite.com
保存并关闭文件。
接下来,我们需要对我们的第二个站点配置执行类似的操作。 用你的文本编辑器打开它:
nano secondsite.conf
我们需要再次更改 server_name
参数以匹配我们的第二个站点的域名。 再次确保这是准确的:
server_name secondsite.com
我们还需要更改应该用于我们的第二个站点的端口。 现在,此配置会将所有流量发送到同一个 node.js 实例,而不是在两个站点之间拆分。
更改 proxy_pass
参数。 我们需要将最后的端口号更改为另一个数字。 它可以是其他进程未使用的任何端口号。
proxy_pass http://localhost:2777
保存并关闭文件。
通过键入以下命令重新启动 nginx:
service nginx restart
更改 Ghost 配置
现在,我们需要在 Ghost 配置文件中镜像我们的更改。 进入网页根目录:
cd /var/www
我们需要为每个 Ghost 站点创建一个目录:
mkdir firstsite.com mkdir secondsite.com
现在,我们需要将 Ghost 目录移动到每个新文件夹中:
cp -r ghost firstsite.com mv ghost secondsite.com
现在,我们可以打开第一个站点的 Ghost 配置:
nano /var/www/firstsite.com/ghost/config.js
通过搜索字符串 production: {
找到生产部分。 更改 url
参数以匹配您的第一个站点的名称:
. . . production: { url: 'http://firstsite.com' . . .
保存并关闭文件。
接下来,打开第二个站点的匹配文件:
nano /var/www/secondsite.com/ghost/config.js
再次,找到 production: {
部分。 更改 url
参数以匹配第二个站点的域:
. . . production: { url: 'http://secondsite.com' . . .
接下来,向下滚动到生产块的 server: {
部分。 更改 port
参数以匹配您在第二个站点的 nginx 配置中为代理端口选择的编号:
port: '2777'
保存并关闭文件。
创建新贵脚本
管理单独的 Ghost 安装的最简单方法是通过 Upstart 脚本。 这将允许您单独启动、停止、重新启动和检查每个站点的状态。
目前,有一个位于 /etc/init.d/ghost
的 System V 初始化脚本。 如果您遵循本指南,请删除旧的 System V 脚本。 这将有助于避免混淆,并可以防止服务以错误的设置启动:
rm /etc/init.d/ghost
我们将为每个站点创建一个新配置。 我们将使用 System V 的替代品 Upstart,因为它的语法更简单。
切换到 Upstart 保存其脚本的目录:
cd /etc/init
为您的第一个站点创建一个文件:
nano ghost-firstsite.conf
在里面,我们将放置以下代码。 更改红色值以匹配您的第一个站点的配置:
# ghost-firstsite start on startup script cd /var/www/firstsite.com/ghost npm start --production end script
保存并关闭文件。
我们将通过复制我们刚刚创建的配置文件来创建第二个站点的配置文件:
cp ghost-firstsite.conf ghost-secondsite.conf
打开新文件并调整红色值以匹配第二个站点:
# ghost-secondsite start on startup script cd /var/www/secondsite.com/ghost npm start --production end script
保存并关闭文件。
现在,您可以通过键入以下内容使每个站点联机:
service ghost-firstsite start service ghost-secondsite start
如果您访问每个域,您应该会看到 Ghost 博客登录页面。
创建您的用户帐户并通过以下方式登录:
firstsite.com/ghost/signup
向每个站点添加不同的内容,以验证它们是否真正分开。
结论
您现在应该有两个单独的博客从一个 droplet 提供服务。 如果您的资源允许,您可以扩展此技术以服务其他站点。
查看我们的其他文章,了解 如何更改主题和设置、如何配置电子邮件和测试配置更改,以及如何管理内容。