在 Ubuntu 22.04 上部署 GHOST 开源博客

在 Ubuntu 22.04 上部署 GHOST 开源博客

简介

GHOST 是一个基于 Node.js 的开源博客平台,专注于简洁的写作体验和高效的发布流程。本教程将指导你如何在 Ubuntu 22.04 系统上部署 GHOST 博客。

前提条件

  • 一台运行 Ubuntu 22.04 的服务器
  • 一个具有 sudo 权限的用户
  • 已安装 curlgit

步骤 1: 更新系统软件包

1、使用sudo提升为root权限执行更新系统软件包的命令

sudo apt update && sudo apt upgrade -y

2、执行命令后,系统更新时若部分软件与当前系统不兼容,会弹出一些对话框,如下我们选择默认选项,即第二个keep the local version currently installed (保留当前安装的本地版本)并回车继续安装即可。

3、系统继续更新,过一会会出现一个 Daemons using outdated libraries 弹窗,他的意思是我们更新系统及安装包后,是否需要重启这些服务?继续往下看,我们会看到系统默认勾选了一些服务,并且下面有[OK][CANCEL]的选项,我们使用上下左右键及TAB选择[OK],重启这些服务,不要勾选多余服务。

4、若执行以上操作后继续提示是否重启服务的弹框,我们此时全部勾选,然后点击[OK],确认重启这些服务,最后等待全部服务重启成功后,会结束更新。此时我们可以选择关闭Ubuntu的远程链接,重启服务器再远程链接查看服务器是否正常启动。

步骤 2: 添加新用户并授权

1、先暂时切换到root用户,运行 adduser 命令添加新普通权限的 Linux 用户,按照提示输入新用户的密码,再次确认密码。然后依据提示点Enter以此跳过全名、电话、地址等无关信息


# 暂时切换到root用户
sudo -i
# 新增普通用户,用户名需自行设定(除ghost,此处我们使用feuser),格式:adduser 用户名
adduser feuser
# 按照提示输入新用户的密码,再次确认密码,依据提示点Enter以此跳过全名、电话、地址等无关信息

2、为新增用户添加 sudo 权限,并将当前身份切换为该用户。


# 赋予用户sudo权限(此处我们使用feuser),格式:usermod -aG sudo 用户名
usermod -aG sudo feuser
# 切换到普通用户,格式:su - 用户名
su - feuser
# 根据提示输入密码后回车

步骤 3: 从 Ubuntu 仓库安装 Nginx 与 MySQL

# 从 Ubuntu 仓库中安装 Nginx 与 MySQL-Server
sudo apt install nginx mysql-server -y

MySQL 安装完成后,需要重设数据库 root 用户密码。

# 重置 MySQL root 密码
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
quit;

步骤 4: 安装 Node.js与Yarn

需注意,当前服务器系统Ubuntu22.04版本所需Node.js版本为Node.js 18.x、20.x 两个大版本中。

# 通过 NodeSource 安装指定版本的 Node.js
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash
sudo apt install nodejs -y

# 安装 Yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn -y

# 假如服务器位于大陆区域,需要借助 cnpm 镜像提高 npm 与 yarn 依赖的安装速度,否则 ghost install 时,无法下载依赖会导致安装失败
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
sudo yarn config set registry https://registry.npm.taobao.org/

调整npm或yarn的镜像时可能会遇到镜像地址无效或镜像地址证书失效的情况,此时百度寻找一个新的国内镜像地址即可,用默认镜像地址下载可能在后续安装ghost时超时。

验证安装:

node -v
npm -v

步骤 5: 新建ghost文件夹并赋权

建立文件夹,配置好文件夹权限,下文以 /var/www/ghost 作为 Ghost 数据目录。

# 新建 Ghost 数据目录文件夹
mkdir -p /var/www/ghost

# 设置文件夹权限,用户名为feuser
chown 用户名:用户名 -R /var/www/ghost
chmod 0775 -R /var/www/ghost

# 前往文件夹
cd /var/www/ghost

步骤 6: 安装 GHOST-CLI

GHOST-CLI 是一个命令行工具,用于简化 GHOST 的安装和管理。

# 配置了 cnpm 加速源
sudo cnpm install ghost-cli@latest -g

步骤 7: 安装 GHOST

# 安装 Ghost
ghost install

进入安装流程,在安装过程中,CLI 会提示你输入一些信息,如数据库配置、博客 URL 等。根据提示填写相关信息。

# 进入 Ghost 安装流程

# 检查系统环境
✔ Checking system Node.js version - found v14.17.6
✔ Checking logged in user
✔ Checking current folder permissions

# 此处如系统版本非 Ghost 官方文档推荐的,会询问是否继续安装,这里选择 Yes
? Continue anyway? Yes
System stack check skipped

# 检查软件环境
ℹ Checking system compatibility [skipped]
✔ Checking for a MySQL installation
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
✔ Setting up install directory

# 下载 Ghost 本体、npm 与 yarn 依赖
# 假如服务器位于大陆区域,需要借助 cnpm 镜像提高 npm 与 yarn 依赖的安装速度,否则 ghost install 时,无法下载依赖会导致安装失败
✔ Downloading and installing Ghost v4.14.0

# 进入网站域名、MySQL 数据库、系统服务设置
✔ Finishing install process

# 输入网站绑定域名
? Enter your blog URL: http://你的域名或者是公网IP

# 输入 MySQL 数据库服务器地址、用户名、密码、数据库名称
? Enter your MySQL hostname: localhost
? Enter your MySQL username: root
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: db_ghost
✔ Configuring Ghost
✔ Setting up instance
+ sudo chown -R ghost:ghost /var/www/ghost/content
✔ Setting up "ghost" system user

# 如先前使用 MySQL root 用户登录,此处可以让 ghost-cli 自动创建一个属于 Ghost 数据库的用户
? Do you wish to set up "ghost" mysql user? Yes
✔ Setting up "ghost" mysql user

# 如果本机先前已有其它网站或需要使用自定义的网站环境,需要跳过自动配置 Nginx 与 SSL 证书
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/xavier-wang/xavier.wang.conf /etc/nginx/sites-available/xavier.wang.conf
+ sudo ln -sf /etc/nginx/sites-available/xavier.wang.conf /etc/nginx/sites-enabled/xavier.wang.conf
+ sudo nginx -s reload
✔ Setting up Nginx
# 选择是否通过 acme.sh 自动配置 SSL 证书
? Do you wish to set up SSL? Yes
ℹ Setting up SSL [skipped]

# 将 Ghost 绑定到 Systemctl 上
? Do you wish to set up Systemd? Yes
+ sudo mv /tmp/xavier-wang/ghost_xavier-wang.service /lib/systemd/system/ghost_xavier-wang.service
+ sudo systemctl daemon-reload
✔ Setting up Systemd
+ sudo systemctl is-active ghost_xavier-wang

# 启动 Ghost
? Do you want to start Ghost? Yes
+ sudo systemctl start ghost_xavier-wang
+ sudo systemctl is-enabled ghost_xavier-wang
+ sudo systemctl enable ghost_xavier-wang --quiet
✔ Starting Ghost

Ghost uses direct mail by default. To set up an alternative email method read our docs at https://ghost.org/docs/config/#mail

------------------------------------------------------------------------------

# 当显示这条信息时,表示 Ghost 已完成安装流程
Ghost was installed successfully! To complete setup of your publication, visit: http://xavier.wang/ghost/

在设置过程中,按照提示设置域名、数据库连接信息、SSL 证书、系统服务。

步骤 8: 配置 Nginx

若你使用了公网IP设置了GHOST的URL地址,则需要以下操作:

编辑 Nginx 的配置文件,通常位于 /etc/nginx/sites-available/ 目录下。创建一个新的配置文件,例如 ghost.conf

sudo nano /etc/nginx/sites-available/ghost.conf

在文件中添加以下内容:

server {    
  listen 80;    
  server_name 你的IP地址;   
  
  location / {        
    proxy_pass http://127.0.0.1:2368; # Ghost 默认运行在 2368 端口
    proxy_http_version 1.1;        
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
  }

然后启用这个配置文件:

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

重新加载 Nginx 以应用更改:

sudo systemctl restart nginx

步骤 9: 启动 GHOST

使用 GHOST-CLI 启动 GHOST:

ghost start

现在,你可以通过浏览器访问 http://your_domain.com 来查看你的 GHOST 博客。

步骤 10: 修改GHOST的邮箱服务,允许使用邮箱注册

1、首选确认作为GHOST发件人的邮箱已经启用第三方客户端发送服务,以阿里云邮箱为例

2、若邮箱启用了三方客户端安全密码,则需要新增密码,不能使用之前的邮箱密码

3、现在来修改Ubuntu中的GHOST邮箱设置

# 前往文件夹
cd /var/www/ghost
# 使用nano编辑文件
nano config.production.json

打开文件后,找到mail设置的位置,删除默认邮箱设置,修改为新邮箱设置,修改完成后,按Ctrl + O保存文件,然后按Enter确认文件名。按Ctrl + X退出nano编辑器。

# 默认邮箱设置:
  "mail": {
    "transport": "Direct"
  },
# 新邮箱设置:
  "mail": {
    "from": "fe@china-fe.com",
    "transport": "SMTP",
    "options": {
        "host": "smtp.qiye.aliyun.com",
        "port": 465,
        "service": "qiye.aliyun",
        "secure": true,
        "auth": {
            "user": "fe@china-fe.com",
            "pass": "第三方密码"
        }
    }
  },

现在重启GHOST服务

# 重启 GHOST
ghost restart

步骤 11: 管理 GHOST

你可以使用以下命令来管理 GHOST:

  • 启动 GHOST:ghost start
  • 停止 GHOST:ghost stop
  • 重启 GHOST:ghost restart
  • 查看 GHOST 状态:ghost status

结论

恭喜!你已经成功在 Ubuntu 22.04 上部署了 GHOST 开源博客。现在你可以开始撰写文章并发布内容了。如果你有任何问题,可以参考 GHOST 的官方文档或社区支持。