Ghost 博客部署,我的最爱
♥️ 强烈推荐 Ghost 博客,我的最爱,之前断断续续瞎折腾过几个博客,始终没有找到合适的,中间还一度自己做了个博客的版本,直到我用上了 Ghost blog,我就停止了折腾。
1️⃣ 主题市场很精美且丰富,超过绝大部分竞品
2️⃣ 开源: 可以在自己的 VPS 上直接部署,完全可控
3️⃣ 性能强大,博客编辑,后台设置,功能非常丰富
4️⃣ SEO 友好,支持 Code 嵌入,三方插件集成,如 Stripe, Zapier 等
5️⃣ 邮件订阅支持,Stripe 支付接入,可以对订阅收费
优点
Ghost 是非常完善的博客系统,也是基于 Nodejs 开发的,不仅提供了 Cloud 版本,也提供了开源版本,当前我这个站点用的就是 Docker 部署的 Ghost,非常方便,弄个 VPS,直接一年省去大几百的费用。
部署过程
我是在 VPS 上使用 Docker + Nginx 进行部署的,SSL 证书是从 Cloudflare 上申请的,可以参考我的文章[Cloudflare 的免费 SSL 证书,可用 15 年 🤩],域名是在 NameSilo 注册的,VPS 是购买的 Hostinger , 推荐注册入口。
自部署 Ghost 安装文档入口
Tips: 注意这里对于 Ubuntu 文档,只支持到 22.04 LTS,现在我的服务器在 24 版本了,我按照 Ubuntu 的这个文档安装,一直在坑里。
这里选择 Docker 安装即可,Ghost 官方镜像地址,对应的配置,如端口、mysql、volume,按需配置即可,Ghost 使用 Mysql 进行数据存储。
version: '3.1'
services:
ghost:
image: ghost:5-alpine
restart: always
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: example
database__connection__database: ghost
# 这里记得替换为自己的网站地址
url: https://meepo.me
# 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:
# 如果后续迁移服务器的 image,media 等文件,这里最好挂载一个地址专门存放
- ghost:/var/lib/ghost/content
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db:/var/lib/mysql
volumes:
ghost:
db:
配置Nginx,配置文件如下,这样可以做到
- 支持 https 的访问
- http 自动跳转 https
- https://www.meepo.me 自动跳转到 https://meepo.me,这一步需要结合 Cloudflare 的 www 自动跳转到根域名,参考
- http 到 https 的自动跳转,然后再结合 Cloudflare 的 www 自动跳转到根域名,这一步需要进行策略配置
首先这里需要 SSL 证书文件,可以参考我的 [Cloudflare 的免费 SSL 证书,可用 15 年 🤩] 去申请一个免费的 SSL 证书,然后存放在服务器,稍后配置在 Nginx 中即可。
然后在 sites-available
文件夹新建 meepo.me.conf
文件
server {
listen 80;
listen [::]:80;
server_name meepo.me www.meepo.me;
return 301 https://$server_name$request_uri;
}
# HTTPS 配置
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name meepo.me www.meepo.me;
# SSL 证书配置
ssl_certificate /root/ghost/certs/meepo.me.pem;
ssl_certificate_key /root/ghost/certs/meepo.me.key;
# SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# ... 其他配置保持不变 ...
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_pass http://localhost:8080;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /assets/ {
proxy_pass http://localhost:8080;
expires 30d;
add_header Cache-Control "public, no-transform";
}
client_max_body_size 50m;
}
然后执行
sudo ln -s /etc/nginx/sites-available/meepo.me.conf /etc/nginx/sites-enabled/
执行 nginx -t
检查配置文件是否正确,如果 ok 的话,执行 systemctl reload nginx
重新加载 nginx 配置。
Bingo,按照如上配置,你就可以拥有一个和我一样的博客系统了。