使用Docker安装和更新Ghost

💡
你现在看到的网站正是依照以下流程进行安装和维护。如果你打算按照以下步骤部署生产用程序,请先看完全文后再决定是否进行。

正常安装

  1. 宝塔面板安装。‌‌‌‌这里用的是宝塔纯净版 7.6.0版本
  2. 网站环境‌‌。Nginx+PHP+MySQL
  3. 安装Ghost。这里参考的是这篇文章:宝塔面板Docker安装Ghost博客 – 简单到2步搞定
💡
注意:完全根据该文章安装好的网站并没有SSL功能。如需要SSL功能,需更换一些步骤,详情请看下面。

增加SSL

一、 将上面第三步的文章中「运行Docker」这一步骤的指令更换为:

docker run --name ghost --restart=always -e url=https://your.hostname -v /mnt/docker/ghost:/var/lib/ghost/content -p 8081:2368 -d ghost

注意url参数为https开头

说明:
url:你的网站最终访问地址
-v:主机挂载地址:容器内ghost文件地址。将ghost文件挂载到本地,方便修改主题文件、升级备份等操作。容器内ghost文件地址是固定的。
-p:镜像映射。主机端口:容器端口

二、继续根据上面的文章配置Nginx反向代理;

三、编辑刚刚设置好的反向代理的配置文件

点击「配置文件」

四、删掉原有内容替换成下面的内容:

#PROXY-START/
location  ~* \.(php|jsp|cgi|asp|aspx)$
{
    proxy_pass http://localhost:8081;
    proxy_set_header Host $http_host;
    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 REMOTE-HOST $remote_addr;
}
location /
{
    proxy_pass http://localhost:8081;
    proxy_set_header Host $http_host;
    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 REMOTE-HOST $remote_addr;
    
    add_header X-Cache $upstream_cache_status;
	#Set Nginx Cache

    proxy_ignore_headers Set-Cookie Cache-Control expires;
    proxy_cache cache_one;
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 304 301 302 1m;
    expires 12h;
}

#PROXY-END/

代码修改自:https://yoouu.cn/install-ghost/

大功告成!🎉

Ghost更新

如果你使用官方教程安装Ghost,更新版本时只需要执行一句update命令即可。但是使用Docker运行Ghost则要复杂一些。

使用Docker部署Ghost时,很重要的一点是将Ghost文件映射到主机上。如果你部署时是按照上面的步骤进行,你可以很轻易找到映射地址/mnt/docker/ghost

操作步骤

💡
在 /mnt/docker/ 文件夹下操作
  1. 停止运行容器:docker stop ghost
  2. 备份Ghost文件:cp ghost ghostbackup
  3. 停止当前容器 docker stop ghost
  4. 删除当前容器docker rm ghost
  5. 拉取ghost最新镜像docker pull ghost
  6. 使用最新镜像,启动一个新容器
docker run --name ghost --restart=always -e url=https://your.hostname -v /mnt/docker/ghost:/var/lib/ghost/content -p 8081:2368 -d ghost

7. 稍等一会儿,再次访问你的主页,访问正常则升级成功了🎉

💡
请注意,如果您根据该文章配置了mailgun作为发信服务器,请务必再次依据该文中第三部分,重新覆盖config.production.json文件,否则会出现无法发送登录邮件的情况。

好看的东西真是事儿比较多,真的累了。