Ghost 博客部署,我的最爱

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,按照如上配置,你就可以拥有一个和我一样的博客系统了。

Read more

AI 时代的一次远程面试经历

AI 时代的一次远程面试经历

今天聊了一个远程面试,记录一下自己的感受: 负责人也是技术出身,刚好负责两个团队,一个在美国做 AI Startup,还有一个在香港做软件开发,所以我们直接约了个群聊,相互介绍了团队和自己在当前节点的状态,以及对这个职位的预期 我对这两种业务模式都有兴趣,相当于是一次性参加了两个面试了: AI Startup 这种模式,我刚好在 23 年的时候,跟微软和字节的朋友一起做 AI 电商创业,当时从立项,研发逐步推进,MVP 构建,VC 融资,市场营销方面跟了下来,学习到了非常多的东西 而外包业务,我在很多年前就开始做一些副业,与甲方沟通需求,自己找 UI ,测试的成员组队,可能与多数人不同的是,我对外包项目的接受度很高(这里说的不是传统的如中软,东软那样的外包团队),而是创业型的外包公司,这种环境下,是真的可以在技术、业务、商务、业务视角学到很多。 远程面试一般比较直接,大家都直奔主题,能够迅速感知到候选人和团队的契合程度,在

郑州互联网薪资统计及 AI 时代的现状

郑州互联网薪资统计及 AI 时代的现状

22 年郑州前端薪资真实统计(200+份样本) 22 年我在郑州前端大群里面统计了一波郑州互联网薪资,当时以为只是开始,想着后面会有更多的企业来到郑州,情况会越来越好,而现在回头来看,没想到那时才是顶峰。 当时在群里面收集到 200+ 位投票,匿名填写自己的薪资情况,当时跟大家特意强调了要保证数据的真实性,也找群员验证过,基本真实性可信: * 🐣 3-6k 占比不少,主要是郑州的工资水平低,对于刚出来的,在小公司的这个薪资也正常,实习生 or 小作坊 * 🐰 6-12k 的占大多数,涵盖了郑州本土大多数互联网公司的薪资范畴,大多数的常规业务开发 * 🐵 12-20k 主要集中在本土大公司、一线城市在郑州的研发团队、外包公司,核心业务开发人员 🦄 20k+ 高学历 or 有大厂经验,主要为本土大公司或者一线公司在郑州的带队 leader ,能力较强,一般承担一些管理角色。 25年:职场寒冬来袭,状况还在持续恶化 一线公司研发部门的撤离 这也是我最在意的一条: 之前有一些一线城市的研发交付部门会在郑州有成立研发交付中心,从疫情之后,

RAG不是万能的,附常见误解与澄清

RAG不是万能的,附常见误解与澄清

能给人理清目前 AI 在生产落地的问题,是一件难能可贵的事情,AI 在生产落地会有哪些阻碍的讲解,讲干货的真的是很少,至少我自己曾经在这个问题上困惑了很久。 因为之前我在 AI 电商团队,做具体的 AI Sass 落地的时候,团队经常会沟通做到生产级可用的 AI,需要哪些东西,大概的门槛还是了解到一些的,我的能力也顶多在应用层面去做一些工作量的定制与代码衔接,涉及到模型层面,一概歇菜,很多人估计只是想着,写一个 Prompt ,就是真正的拥抱 AI 了。 当我看到自媒体里面铺天盖地的在讲 AI 如何帮助企业提效,如果重塑行业的时候,有种很复杂的感觉,他们真的懂 AI 吗,甚至他们真的懂软件吗? 基本上现在大家接触到的方式就几种: * 割韭菜卖课,讲概念,前景,这些基本上都是拿别人的产品来给自己做嫁衣,自己顶多是个工具的使用者和营销者,比如用 Midjourney,Kimi,豆包,海螺什么的,告诉大家用了就能提效,获得流量,

Shopify 构建商城页面的几种方式

Shopify 构建商城页面的几种方式

当用户需要对 Shopify 商城页面有自定义的需求时,一般会选择: 1、直接使用官方商城的 theme 来构建,可以使用,但是免费模板较少,只有 13 个。 2、使用第三方 theme 来构建,也有很多的模板可以选择,比如 envato 上有数百个 shopify 的模板,这是个非常大的市场。 3、完全自定义开发,自由度最高 当用户对 Shopify 商城页面,有完全自定义的需求,通常是常规主题无法满足需求,推荐使用 Shopify Hydrogen 的官方方案,开发人员可以对商城进行完全的页面级别的自定义。 而对于开发人员来说,官方的 Shopify Liquid 开发起来的效率和体验,是不如 Shopify Hydrogen 来的舒服,而且使用 Shopify Hydrogen ,还可以对性能有提升,