Ubuntu 22.04 下Docker方式安装Ghost方法

1、准备工作

VPS 2台(性能够1台也可,本教程以2台为例vps1:mysql,vps2:ghost+npm)

两台均采用Ubuntu22.04操作系统

变量使用:mysql root用户的密码A123456+,ghost使用的数据库blogdb,数据库的使用用户blogdbuser,数据库用户blogdbuser的密码A123456+,VPS1的内网IP:10.0.0.1,VPS2的内网IP:10.0.0.2

2、vps1安装mysql

#root用户登录vps1
#更新安装数据源
apt-get update
#系统更新
sudo apt-get upgrade
#安装mysql-server
apt-get install mysql-server
#进入mysql
mysql
##设置mysql的root用户密码为A123456+
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'A123456+';
# 刷新权限,去除直接用命令行设置密码的权限。
FLUSH PRIVILEGES;
#退出mysql登录
exit

#root用户通过刚刚设置的密码登录mysql
sudo mysql -uroot -p
#创建一个新的空数据库blogdb
create database blogdb;
#更换操作的数据库为mysql,用于创建新用户
use mysql;
#创建新用户blogdbuser,密码A123456+,本地登录权限@localhost
create user 'blogdbuser'@'localhost' IDENTIFIED BY 'A123456+';
#给用户blogdbuser配置数据库在本地localhost访问blogdb权限;
GRANT ALL ON blogdb.* TO 'blogdbuser'@'localhost';
#给用户blogdbuser配置数据库在网络上访问blogdb权限;如1台vps上部署无需以下命令;
GRANT ALL ON blogdb.* TO 'blogdbuser'@'%';
#退出mysql
exit

数据库部署完成,默认是8.0的mysql-server,默认端口3306.

3、VPS2安装docker、docker-compose、ghost、nginx proxy manager。

#root用户登录vps2
#删除之前安装的docker相关软件
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 更新软件库数据源
apt-get update
#系统更新
apt-get upgrade
#安装可能会使用上的软件
apt-get install ca-certificates curl gnupg
#安装gpg准备文件。
sudo install -m 0755 -d /etc/apt/keyrings
#下载gpg文件到指定目录
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#变更gpg文件权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

#添加资源库到镜像源配置文件中
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#更新软件库镜像源
sudo apt-get update
#安装docker docker-compose等
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin 
docker-compose docker-compose-plugin
#查看docker版本及docker-compose版本,以确定安装及运行情况,有无错返回数据即可。
docker -v
docker-compose -v


#在root目录下创建ghost的根目录:

mkdir -p /root/ghost
touch /root/ghost/docker-compose.yml
#进入ghost的根目录
cd /root/ghost

#编辑并保存docker-compose.yml文件,内容如下:

version: '3.1'
services:
  blog:
    image: 'ghost:5.74.5'
    restart: always
    ports:
      - '3001:2368'
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: 10.0.0.1
      database__connection__user: blogdbuser
      database__connection__password: A123456+
      database__connection__database: blogdb
      # this url value is just an example, and is likely wrong for your environment!
      url: https://www.338922.xyz
      # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      NODE_ENV: development
    volumes:
      - /root/ghost/data:/var/lib/ghost/content

mysql服务器参数采用vps1上的配置,ghost的版本:5.74.5,web映射服务端口:3001,内容所在位置:/root/ghost/data,网站访问地址https://www.338922.xyz。

#安装ghost容器
docker-compose up -d
#查看容器运行
docker ps -a
#等待1分钟后测试 ghost运行情况,返回正常网站数据即ok
curl 外网ip:3001

#在root目录下创建ghost的根目录:

mkdir -p /root/npm
touch /root/npm/docker-compose.yml
#进入npm的根目录
cd /root/npm

#编辑并保存docker-compose.yml文件(用于汉化版npm容器安装),内容如下:

version: '3'
services:
  app:
    image: 'chishin/nginx-proxy-manager-zh:release'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

#安装并运行npm容器
docker-compose up -d
#查看容器运行
docker ps -a

浏览器中,通过http://外网ip地址:81,登录npm,默认账户admin@example.com,密码changeme,登录后第一时间先修改登录账户和密码。

添加一个代理,www.338922.xyz,指向http的外网ip,端口填3001,ssl中申请新的证书,把同意选开,然后点保存,约半分钟,添加完成。

浏览器中直接访问www.338922.xyz/ghost,设置站点信息,完成后,登录进入后台。安装完成~~~