0%

使用Cloudflare Pages发布前端页面


Cloudflare是一家提供全球性网络安全解决方案的公司。他们提供一系列的网络安全产品,包括DDoS攻击防护、防火墙、CDN等等。除了网络安全产品,他们还提供了许多其他的网络服务,例如Cloudflare Pages,这是一个免费的前端部署服务,可以帮助开发者将其前端项目部署到互联网上。

你可以使用Pages连接到你的GitHub库,自定义构建设置,并仅需几个点击即可完成站点的部署。关键是,它完全免费!因此,如果你正在寻找托管前端项目的方式,Cloudflare Pages是我目之所及的最佳选择。

遇到Cloudflare之前

VPS

在使用Cloudflare Pages之前,我通常租用一个VPS(虚拟专用服务器)来托管项目。我需要自己安装和配置Web服务器软件如Nginx、ReactJS,并负责管理服务器的安全性和稳定性。这都需要一定的金钱成本、技术知识和时间投入。我的项目除了个人博客和极少的Http+Js的静态网站,大多数是采用 Django REST后端 + React前端。

先从容易的开始。

博客

我的个人博客使用 Hexo 搭建。Hexo是一个快速、简单且强大的静态博客框架,它使用Markdown文件来生成静态网站。与其他静态博客框架相比,Hexo具有以下优势:

  • 快速:Hexo使用EJS模板引擎,生成速度非常快。
  • 易于使用:Hexo使用Markdown文件来生成网站,使得写作和发布变得非常简单。
  • 多种主题:Hexo有很多主题可以选择,也可以自己编写主题。
  • 插件丰富:Hexo有很多插件可以帮助你扩展功能,如Google Analytics、Disqus等。

原来在VPS配置好博客Nginx后,写博客的流程为:

  1. 在本地以Markdown格式写文章
  2. 本地运行 hexo g 生成内容
  3. git push 到 github
  4. 登录 VPS git pull 获取更新后的内容
  5. 完成博客更新

其他项目

如前所述,我的项目大多采用 Django REST 后端 + React前端。部署在VPS上,前端Nginx指向React Build后的文件夹,后端则使用 Nginx → uwsgi → Django REST。

更新项目的流程为:

  1. 本地使用VSCode编辑调试代码
  2. git push 到 VPS
  3. VPS git pull
  4. 完成内容更新

使用 Cloudflare Pages 之后

当然需要在Cloudflare上注册账号。

博客

  1. 在本地计算机上使用Hexo创建博客,并将其部署到GitHub(或GitLab)等支持的代码托管平台上
  2. 在Cloudflare Pages控制台中创建一个新project,创建类型选择 connect to git
  3. 若还没授权Cloudflare Pages访问您的GitHub或GitLab仓库请授权,你需要提供代码托管平台的登录凭据,以便Cloudflare Pages能够获取您的存储库
  4. 选择你的代码托管平台上想要发布的repository
  5. 配置构建设置,为你的博客配置构建命令和输出目录。对于Hexo,构建命令应为hexo generate,输出目录应为public
  6. 点击“Deploy Site”按钮,Cloudflare将开始构建站点并将其部署到全球边缘节点
  7. 完成后,Hexo博客就可以通过Cloudflare Pages进行访问了
  8. 此时你的访问地址应为 你的项目名字.pages.dev ,若你有单独域名,请到你的域名服务商新增一条新的CName记录,目的地址指向 你的项目名字.pages.dev
  9. 在Cloudflare Pages该项目的配置下,Custom domains设置自定义域名指向你的独立博客地址

以后更新博客,你只需在本地编辑博客,git push 到代码托管平台,Cloudflare Pages会自动重新构建和部署站点。

其他项目

步骤大致同上面,Build注意以下几项(我使用的React):

  • Build command: npm run build
  • Build output directory: /build
  • Root directory: /front (这个是我前端的子目录名字)

未完待续

纯粹静态网站的话,使用 Cloudflare Pages 完全可以抛开VPS了。现在我的项目前端会陆续迁移到 Cloudflare Pages 上,但API还需在VPS上运行。下一步希望通过使用 Cloudflare Workers 提供 Django REST API服务。