如何在CentOS7上安装和配置Ghost

来自菜鸟教程
跳转至:导航、​搜索

介绍

Ghost 是一个简单易用的轻量级开源博客平台。 Ghost 是完全可定制的,有许多可用的主题。

在本教程中,您将在 CentOS 7 上设置 Ghost。 您还将配置 Nginx 以代理对 Ghost 的请求,并让 Ghost 作为系统服务在后台运行。

先决条件

要完成本教程,您需要:

第 1 步 — 安装 Ghost

首先,我们需要安装 Ghost。 我们将把 Ghost 放在 /var/www/ghost 目录中,这是推荐的安装位置。

使用 wget 从 Ghost 的 GitHub 存储库下载最新版本的 Ghost:

wget https://ghost.org/zip/ghost-latest.zip

要解压存档,首先使用包管理器安装 unzip 程序。 在安装新程序之前确保系统是最新的总是一个好主意,因此更新软件包并使用以下命令安装 unzip

sudo yum update -y
sudo yum install unzip -y

上述命令中的 -y 标志会自动更新和安装软件包,而不需要用户确认。

安装 unzip 后,将下载的包解压到 /var/www/ghost 目录。 首先,创建/var/www文件夹,然后解压文件:

sudo mkdir /var/www
sudo unzip -d /var/www/ghost ghost-latest.zip

切换到/var/www/ghost/目录:

cd /var/www/ghost/

然后安装 Ghost 依赖项,但只安装生产所需的那些。 这会跳过只有开发 Ghost 的人才需要的任何依赖项。

sudo npm install --production

一旦此过程完成,就会安装 Ghost,但我们需要先设置 Ghost,然后才能启动它。

第 2 步 — 配置 Ghost

Ghost 使用位于 /var/www/ghost/config.js 的配置文件。 该文件不存在开箱即用,但 Ghost 安装包含文件 config.example.js,我们将使用它作为起点。

将示例配置文件复制到 /var/www/ghost/config.js。 我们将复制文件而不是移动它,以便我们拥有原始配置文件的副本,以防我们需要恢复您的更改。

sudo cp config.example.js config.js

打开文件进行编辑:

sudo vi config.js

我们必须更改 Ghost 使用的 URL。 如果我们不这样做,博客上的链接会将访问者带到 my-ghost-blog.com。 如果您现在不想使用域,请将 url 字段的值更改为您的域名,或者更改为您的服务器的 IP 地址。

/var/www/ghost/config.js

...

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://your_domain_or_ip_address',
        mail: {},
...

url 值必须是 URL 的形式,例如 http://example.comhttp://11.11.11.11。 如果该值的格式不正确,Ghost 将不会启动。

Ghost 可以在没有邮件设置的情况下运行; 仅当您需要支持 Ghost 用户的密码恢复时才需要它们。 我们将在本教程中跳过配置此设置。

您可以按照【X74X】官网【X95X】的配置详情,进一步定制Ghost。

保存文件并退出编辑器。

仍在 /var/www/ghost 目录中时,使用以下命令启动 Ghost:

sudo npm start --production

输出应类似于以下内容:

Output
> ghost@0.11.7 start /var/www/ghost
> node index

WARNING: Ghost is attempting to use a direct method to send email.
It is recommended that you explicitly configure an email service.
Help and documentation can be found at http://support.ghost.org/mail.

Migrations: Creating tables...
...

Ghost is running in production...
Your blog is now available on http://your_domain_or_ip_address
Ctrl+C to shut down

Ghost 正在监听端口2368,它没有监听公网接口,所以你将无法直接访问它。 让我们在 Ghost 前面设置 Nginx。

第 3 步 — 配置 Nginx 以将请求代理到 Ghost

下一步是设置 Nginx 来为我们的 Ghost 博客服务。 这将允许端口 80 上的连接连接到运行 Ghost 的端口,因此人们无需在地址末尾添加 :2368 即可访问您的 Ghost 博客。 它还增加了一层间接性,并让您在博客增长时扩展您的博客。

如果 Ghost 仍在您的终端中运行,请在继续之前按 CTRL+C 关闭 Ghost 实例。

现在让我们配置 Nginx。 先切换到/etc/nginx目录:

cd /etc/nginx/

如果您按照先决条件教程所示从 CentOS EPEL 存储库安装 Nginx,您将没有用于管理网站配置的 sites-availablesites-enabled 目录。 让我们创建它们:

sudo mkdir sites-available
sudo mkdir sites-enabled

接下来,在 /etc/nginx/sites-available/ 中创建一个名为 ghost 的新文件:

sudo vi /etc/nginx/sites-available/ghost

将以下配置放入文件中并将 your_domain_or_ip_address 更改为您的域名,如果您没有域,则更改您的服务器 IP 地址:

/etc/nginx/sites-available/ghost

server {
    listen 80;
    server_name your_domain_or_ip_address;
    location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass         http://127.0.0.1:2368;
    }
}

此基本配置会将对该服务器的所有请求发送到端口 2368 上运行的 Ghost 博客,并设置适当的 HTTP 标头,以便在查看 Ghost 日志时,您将看到您的原始 IP 地址访客。 您可以在 Understanding Nginx HTTP Proxying, Load Balancing, Buffering, and Caching 中了解有关此配置的更多信息。

保存文件,退出编辑器,并通过在 /etc/nginx/sites-enabled 目录中为此文件创建符号链接来启用此配置:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

在我们修改默认的 Nginx 配置文件并告诉它在 sites-enabled 文件夹中包含配置文件之前,Nginx 不会使用这个新配置。 此外,我们必须禁用默认站点。 在编辑器中打开 nginx.conf 文件:

sudo vi nginx.conf

http 块中包含以下行以包含 sites-enabled 文件夹中的配置文件:

/etc/nginx/nginx.conf

http {
...
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

然后完全注释掉 http 块内的 server 块:

/etc/nginx/nginx.conf

...

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;


#    server {
#       listen       80 default_server;
#       listen       [::]:80 default_server;
#       server_name  _;
#       root         /usr/share/nginx/html;
#
#       # Load configuration files for the default server block.
#       include /etc/nginx/default.d/*.conf;
#
#       location / {
#       }
#
#       error_page 404 /404.html;
#           location = /40x.html {
#       }
#
#       error_page 500 502 503 504 /50x.html;
#           location = /50x.html {
#       }
...
...

保存文件并退出编辑器。 测试配置以确保没有问题:

sudo nginx -t

如果一切正确,您将看到以下输出:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果您看到任何错误,请修复它们并重新测试配置。

使用有效的配置文件,重新启动 Nginx 以应用更改:

sudo systemctl restart nginx

在我们再次启动 Ghost 之前,让我们创建一个新的用户帐户来运行 Ghost。

第 4 步 – 以独立用户身份运行 Ghost

为了提高安全性,我们将在单独的用户帐户下运行 Ghost。 该用户只能访问 /var/www/ghost 目录及其主文件夹。 这样,如果 Ghost 受到威胁,您可以最大限度地减少对系统的潜在损害。

使用以下命令创建一个新的 ghost 用户:

sudo adduser --shell /bin/bash ghost

然后让这个新用户成为 /var/www/ghost 目录的所有者:

sudo chown -R ghost:ghost /var/www/ghost/

现在让我们确保这个用户可以运行 Ghost。 以 ghost 用户身份登录:

sudo su - ghost

现在在这个用户下启动 Ghost 并确保它运行:

cd /var/www/ghost
npm start --production

您应该可以通过 http://your_domain_or_ip_address 访问您的博客。 Nginx 将向您的 Ghost 实例发送请求。

一切都很好,但让我们确保 Ghost 在未来继续运行良好。

第 5 步 — 将 Ghost 作为系统服务运行

目前,Ghost 正在我们的终端中运行。 如果我们注销,我们的博客将关闭。 让我们让 Ghost 在后台运行,并确保它在系统重新启动时重新启动。 为此,我们将创建一个 systemd 单元文件,指定 systemd 应如何管理 Ghost。 按 CTRL+C 停止 Ghost,然后按 CTRL+D 退出 ghost 用户帐户。

创建一个新文件来保存 systemd 单元文件的定义:

sudo vi /etc/systemd/system/ghost.service

将以下配置添加到文件中,该文件定义了服务的名称、服务的组和用户,以及有关它应该如何启动的信息:

/etc/systemd/system/ghost.service

[Unit]
Description=Ghost
After=network.target

[Service]
Type=simple

WorkingDirectory=/var/www/ghost
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 单元文件,请查看教程 Understanding Systemd Units and Unit Files,它可以让您快速上手。

保存文件并退出编辑器。 然后启用并启动服务:

sudo systemctl enable ghost.service
sudo sytemctl start ghost.service

再次访问 http://your_domain_or_ip_address,您将看到您的博客。

结论

在本教程中,您安装了 Ghost,配置了 Nginx 以代理对 Ghost 的请求,并确保 Ghost 作为系统服务运行。 不过,您可以使用 Ghost 做更多事情。 查看这些教程以了解有关如何使用新博客的更多信息: