Ghost 部署博客 - 阿里云
Ghost 介绍
👉 Ghost 是当下非常流行的博客平台,提供订阅版和开源版本,功能强大,使用方便,之所以选用源码安装,是为了可以直接改代码。
- 强大的编辑功能。支持富文本、markdown、unsplash、youtube、codePen 等多种资源的嵌入
- 主题市场。提供了标准的体验和视觉良好的多种主题,免费版就很好看了。
- 插件系统,如对接支付。
- 开源可用,方便开发者进行定制和二开。
Ghost 非常适合用作个人站点、新闻网站或者企业的发布平台等,我的当前站点 https://www.meepo.me 就是基于它搭建的。
🤩 而且它是使用 NodeJS 开发,对我来说非常友好,即方便做定制,也能学习它的代码、工程架构。
安装
Ghost 官方提供了多种安装方式,👉 安装入口
提供了:
- 本地的开发部署。很方便在本机运行
- Docker 部署。官方提供镜像,配置也是很方便
- 源码安装。适合做功能定制
- 云服务安装。操作简单,无需自己提供服务器,每月固定支出 VPS 云服务的费用即可。
- Ghost Pro
- Digital Ocean
- Linode
服务器前置配置
最近阿里云推出了 99元/年 的 2c2g 的服务器,性价比非常高,第二年还能以 99 元/年的费用续费一次。
- 我的服务器配置是阿里云 2c2g 版本的 Ubuntu 。
- 域名也是在阿里云购买。
- 做好域名映射 A 记录,到服务器 IP 地址。
- 阿里云提供了免费的 SSL ,每次申请可以使用一年,下载申请到的 SSL Nginx 证书文件,后续提供给 Nginx 使用。
- 打开阿里云安全组的 80 和 443 端口的访问。
Docker 配置
安装 Docker
1、安装 Docker Engine . 参考 Docker Engine 官方文档
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
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
安装最新版本
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证是否安装成功。hello-world 是 docker 的一个测试镜像,如果运行成功,说明 Docker Engine 安装成功
sudo docker run hello-world
2、安装 Docker Compose
sudo apt-get update
sudo apt-get install docker-compose-plugin
检查是否安装成功
创建一个 docker-compose.yml
文件,如下:
version: "3.1"
services:
ghost:
image: ghost:latest
restart: always
# 依赖 DB 的提前安装运行完毕
depends_on:
- db
ports:
- 8080:2368
environment:
# see <https://ghost.org/docs/config/#configuration-options>
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: ghost_mysql_password
database__connection__database: ghost
# this url value is just an example, and is likely wrong for your environment!
# 指定的宿主机暴露的地址,在生产环境,要填写线上的部署的域名地址
url: <http://localhost:8080>
# 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/content:/var/lib/ghost/content
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: ghost_mysql_password
引用官方镜像 ghost:latest
,设置好 volumes
挂载点到服务器指定目录
运行 Docker
docker compose up -d
Nginx 配置
创建一个 nginx 配置文件 www.captainjack.top.conf
配置如下:
server {
listen 80;
server_name www.captainjack.top;
rewrite ^(.*)$ <https://$host$1>; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
}
server {
listen 443 ssl;
server_name www.captainjack.top;
ssl_certificate /root/ghost/certs/www.captainjack.top.pem;
ssl_certificate_key /root/ghost/certs/www.captainjack.top.key;
ssl_session_timeout 5m;
#表示使用的加密套件的类型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass <http://localhost:8080>;
}
}
测试 Nginx 配置文件是否正确
sudo nginx -t
重启 Nginx 使配置生效
sudo nginx -s reload
完成上述配置后,Ghost 就部署到了你的服务器,并且能通过公网访问到,接下来可以对 Ghost 进行配置了 🎉
通过 https://xxx.com 可以进入博客首页,通过 https://xxx.com/ghost 可以进入系统的管理后台