Ghost 部署博客 - 阿里云

Ghost 部署博客 - 阿里云
Photo by Danny Shives / Unsplash

Ghost 介绍

👉 Ghost 是当下非常流行的博客平台,提供订阅版和开源版本,功能强大,使用方便,之所以选用源码安装,是为了可以直接改代码。

  1. 强大的编辑功能。支持富文本、markdown、unsplash、youtube、codePen 等多种资源的嵌入
  2. 主题市场。提供了标准的体验和视觉良好的多种主题,免费版就很好看了。
  3. 插件系统,如对接支付。
  4. 开源可用,方便开发者进行定制和二开。

Ghost 非常适合用作个人站点、新闻网站或者企业的发布平台等,我的当前站点 https://www.meepo.me 就是基于它搭建的。

🤩 而且它是使用 NodeJS 开发,对我来说非常友好,即方便做定制,也能学习它的代码、工程架构。

安装

Ghost 官方提供了多种安装方式,👉 安装入口

提供了:

  1. 本地的开发部署。很方便在本机运行
  2. Docker 部署。官方提供镜像,配置也是很方便
  3. 源码安装。适合做功能定制
  4. 云服务安装。操作简单,无需自己提供服务器,每月固定支出 VPS 云服务的费用即可。
    1. Ghost Pro
    2. Digital Ocean
    3. 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 可以进入系统的管理后台

Read more

郑州互联网薪资统计及 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 ,还可以对性能有提升,

Meepo 要找一份远程前端(全栈)开发的工作

Meepo 要找一份远程前端(全栈)开发的工作

为什么找远程岗位 我一直是比较喜欢远程合作的方式,基本上从事远程开发的团队,都是奔着做事去的,大家能筛选到一起,为一个目标而努力,是一件很难得的事情,远程协作的方式,在自由度和产出之间能保持非常好的平衡,没有必要在通勤以及办公室的无效沟通上浪费太多的时间。 技术特点如何 前端: React + TypeScript 生态体系,常规的网页开发,浏览器插件,Electron 客户端开发都 OK,对各种前端技术方案有一定的沉淀和实践。 后端: Nextjs + Nestjs 开发全栈站点及后端 API 服务 个人特点 即插即用,对于大多数的前端场景和技术方案,都有所涉及。 多年的开发经验,对企业自有产品开发,大客户定制,以及独立开发,有一定的观察和沉淀。 拥抱 AI,对当下比较热门的 AI 技术有一定的了解和沉淀。 喜欢分享和交流,对技术和业务,以及营销都感兴趣。 之前接触的一些业务形态 公司层面: 主要是国内客服领域,涉及到全流程客服,IM,音视频等