在CentOS 8/RHEL 8上安装和配置Ghost CMS

时间:2020-02-23 14:30:34  来源:igfitidea点击:

本指南将详细说明用于在CentOS 8/RHEL 8 Linux服务器上安装Ghost CMS的步骤。 Ghost是一个开源内容管理系统,专为初学者,专业博客作者和文档团队而设计。 Ghost CMS完全支持Markdown,并提供易于使用的Web界面进行管理和内容生成。

对于Ubuntu,请检查如何在Ubuntu上安装Ghost CMS。

在本文中,我们将使用Nginx作为反向代理在CentOS 8上安装Ghost。我在全新安装的CentOS 8上执行此设置。建议这样做,以确保我们不会破坏生产环境。

在CentOS/RHEL 8上安装Ghost

以下是在RHEL/CentOS 8上安装Ghost时通常遵循的步骤。在CentOS 8/RHEL 8上执行Ghost的安装时,请喝杯咖啡。

更新CentOS系统

我们总是从yum软件包更新开始安装。

sudo dnf -y update
sudo reboot

重新引导后,将SELinux设置为许可模式。

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

添加EPEL存储库

一些依赖包将从EPEL存储库中提取。通过下面的命令执行将其添加到系统中。

sudo dnf -y install epel-release

安装MySQL/MariaDB数据库服务器

为Ghost CMS安装数据库服务器。它可以是MySQL或者MariaDB数据库服务器。我们有设置MySQL或者MariaDB数据库服务器的指南。

在CentOS/RHEL 8上安装MariaDB

如何在CentOS/RHEL 8上安装MySQL 8

完成后,为我们打算添加的幽灵博客创建数据库:

$mysql -u root -p
CREATE USER theitroad@localhost IDENTIFIED BY "StrongPassword";
CREATE DATABASE  ghost; 
GRANT ALL ON ghost.* TO theitroad@localhost;
FLUSH PRIVILEGES;
QUIT

安装Node.js

Ghost的核心是用Node.js编写的。 npm软件包管理器将作为依赖项安装。

sudo dnf -y install @nodejs

确认节点版本

$node -v
v10.14.1

可以通过pm2进程管理器控制Ghost进程。让我们确保将pm2安装在系统中。

sudo npm install pm2 -g

成功的安装输出;

安装Ghost-CLI

创建Ghost管理员用户:

sudo useradd ghostadmin
sudo passwd ghostadmin
sudo usermod -aG wheel ghostadmin

现在,我们需要安装packageghost-cli,它提供了ghost命令。

$sudo npm i -g ghost-cli
/usr/bin/ghost -> /usr/lib/node_modules/ghost-cli/bin/ghost
+ theitroad@localhost
added 364 packages from 191 contributors in 16.712s

$which ghost
/usr/bin/ghost

在CentOS/RHEL 8上配置Ghost

为Ghost数据创建一个新文件夹:

请注意:在/root文件夹中安装Ghost无法正常工作,并且会导致安装程序损坏!在/home/{user}文件夹中安装Ghost无法正常工作,并且会导致设置错误!请仅使用/var/www/{folder}因为它具有正确的权限。

因此,让我们创建以下目录:

sudo mkdir -p /var/www/ghost
sudo chown ghostadmin:ghostadmin /var/www/ghost
sudo chmod 775 /var/www/ghost

创建Ghost项目(博客)文件夹:

sudo su - ghostadmin
cd /var/www/ghost
mkdir blog.example.com
cd blog.example.com

其中:blog.example.com是包含站点/博客文件的目录。/var/www/ghost是博客目录的路径

如果要使用sqlite数据库安装Ghost,请运行:

ghost install --db=sqlite3

对于开发环境,我们可以执行以下操作:

ghost install local

否则使用MySQL数据库,运行:

$ghost install

提供服务URL,数据库连接详细信息,并同意配置Systemd。

✔ Finishing install process
? Enter your blog URL: http://localhost:2368
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghost
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghost
? Do you wish to set up Systemd? Yes

这是我的安装输出:

通过运行以下命令确认服务状态:

$ghost ls
$systemctl status ghost_blog-theitroad-com
● ghost_blog-theitroad-com.service - Ghost systemd service for blog: blog-theitroad-com
   Loaded: loaded (/var/www/ghost/blog.theitroad.local/system/files/ghost_blog-theitroad-com.service; indirect; vendor preset: disab>
   Active: active (running) since Sat 2019-10-05 19:05:48 EAT; 10min ago
     Docs: https://docs.ghost.org
 Main PID: 12669 (ghost run)
    Tasks: 18 (limit: 11512)
   Memory: 142.9M
   CGroup: /system.slice/ghost_blog-theitroad-com.service
           ├─12669 ghost run
           └─12678 /usr/bin/node current/index.js
...............................................................

例:

配置Nginx代理

安装Nginx

sudo dnf install @nginx

为Ghost创建Nginx配置文件。

sudo vi /etc/nginx/conf.d/ghost.conf

添加配置。

server {
    listen 80;
    listen [::]:80;

    server_name blog.example.com;
    root /var/www/ghost/blog.example.com/system/nginx-root;

    location/{
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;
        
    }

    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}

将Blog.example.com替换为Ghost站点URL/var/www/ghost/blog.example.com替换为站点的路径DocumentRoothttp://127.0.0.1:2368并替换为本地Ghost侦听URL

Nginx配置不应包含任何错误。

$sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

确认节点服务后端处于活动状态。

# netstat -tunlp | grep 2368
tcp        0      0 127.0.0.1:2368          0.0.0.0:*               LISTEN      12678/node

确认后,重新启动nginx服务。

sudo systemctl enable --now nginx
sudo systemctl restart nginx

由于执行了命令,因此有望成功重启。

$systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-10-06 12:05:47 EAT; 29s ago
  Process: 21817 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 21814 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 21812 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 21819 (nginx)
    Tasks: 2 (limit: 11512)
   Memory: 3.9M
   CGroup: /system.slice/nginx.service
           ├─21819 nginx: master process /usr/sbin/nginx
           └─21820 nginx: worker process

Oct 06 12:05:47 centos8.novalocal systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Oct 06 12:05:47 centos8.novalocal systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 12:05:47 centos8.novalocal nginx[21814]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 06 12:05:47 centos8.novalocal nginx[21814]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 06 12:05:47 centos8.novalocal systemd[1]: Started The nginx HTTP and reverse proxy server.

在防火墙中打开http和https服务端口。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

在CentOS 8/RHEL 8上访问Ghost CMS仪表板

现在,设置已准备就绪,可以访问Ghost Web管理界面,我们可以其中上传主题,更改设置并使用markdown语法编写内容。

要完成出版物的设置,请访问:http://blog.example.com/ghost。

通过单击创建帐户来创建第一个Ghost管理员/发布者帐户。

(可选)邀请其他成员。我们将在少数几个地方访问Ghost CMS仪表板。

Ghost基本管理命令

这是大多数Ghost管理操作所需的命令。

日志目录:/content/logs /
$ghost start:启动start
$ghost restart:重新启动ghost
$ghost run:测试ghost是否可以成功启动
$ghost uninstall:卸载ghost
$ghost update:升级update
$ghost update force:如果有错误,则强制升级
$ghost update rollback:如果升级失败,请还原到早期版本
$sudo npm i -gtheitroad @ localhost:升级Ghost-CLI
$ghost ssl-renew:续订ssl证书
$ls ./system/files/*.conf:系统配置文件
$ghost setup nginx:手动设置nginx
$ghost setup nginx ssl:使用SSL设置nginx