如何用 Github Pages 免费部署静态站点

news2024/9/27 12:06:17

最低成本部署静态网站

所谓静态网站,是指它所有内容都是静态的,即预先编写好并存储在服务器上,访问者获取到的是事先准备好的静态文件。

所以完全不需要购买服务器,除了域名之外,几乎不会有其他花销。

我在构建五个静态站点的过程中,积累了大量经验,本篇文章将总结这些经验,完整地介绍如何用 Github Pages 免费部署网站,并说明其中的技术原理

Github 建仓库

首先在 Github 上新建一个代码仓库,用于托管网页代码,仓库的命名规范为:

<your-username>.github.io

以我的个人 github 账号 feelang 为例,仓库名称就是 feelang.github.io

当然,无论是个人账号还是组织账号,都可以创建这种仓库。

使用静态网站生成器建站

静态网站生成器是一种工具或框架,用于创建静态网站。

静态网站是由预先生成的 HTML、CSS 和 JavaScript 文件组成的网站,这些文件在部署之前就已经生成好,并且在用户访问时直接提供这些静态文件,而无需动态生成页面内容。

静态网站生成器的工作流程通常包括以下步骤:

  1. 内容编写:使用文本编辑器或内容管理系统(CMS)编写网站的内容,例如使用 Markdown 或 HTML 编写文章、页面等。
  2. 模板设计:定义网站的整体布局和样式,通常使用模板语言编写,以便在生成过程中将内容填充到相应位置。
  3. 静态网站生成:运行静态网站生成器,它会读取内容和模板,并根据设定的规则和配置生成静态网站的文件。
  4. 部署:将生成的静态文件上传至服务器或托管平台,使其可通过网址访问。

静态网站生成器具有一些优点,例如快速加载速度、安全性高、易于部署和扩展等。

它们适用于许多类型的网站,包括博客文档公司介绍产品展示等。

通过使用静态网站生成器,开发人员和内容创作者可以更专注于网站的内容和设计,而无需处理动态网站的复杂性和服务器维护。

以下是几个常见的静态网站生成器及其特点:

静态网站生成器描述
Jekyll使用 Ruby 编写的简单、灵活的静态网站生成器,支持 Markdown 和 Liquid 模板语言。
Hugo使用 Go 编写的快速、灵活的静态网站生成器,具有强大的主题和插件生态系统。
Gatsby基于 React 的静态网站生成器,支持使用 GraphQL 查询数据,并具有出色的性能和开发人员体验。
Hexo快速、简单的静态博客生成器,使用 Node.js 编写,支持多种主题和插件。
VuePress基于 Vue.js 的静态网站生成器,专注于文档编写,支持 Markdown 和 Vue 组件。
Eleventy简单灵活的静态网站生成器,支持多种模板语言,可使用 JavaScript、Markdown、HTML 等来编写内容。
Pelican使用 Python 编写的静态博客生成器,支持多种标记语言和插件扩展。
MkDocs专注于文档生成的静态网站生成器,使用 Markdown 编写文档,支持主题和插件定制。

这些静态网站生成器都具有各自的特点和优势,可以根据自己的需求和技术偏好选择适合的工具来构建静态网站。

本文就以比较老牌的 Jekyll 为例。如果对 Jekyll 不熟悉,可以参考我写的 Jekyll 中文教程,内容浅显易懂,一学就会。

我们第一步中新建的 Github 仓库 clone 到本地,打开终端,进入目录,执行如下命令:

jekyll create .

这行命令会创建一个空的 Jekyll 项目,所有配置都是默认值,暂时不用修改。

项目创建完成之后,执行:

bundle exec jekyll serve

命令执行成功以后,访问 http://127.0.0.1:4000,一个最原始的静态展点就完成了。

提交代码

将上一步中 Jekyll 生成的全部代码提交至新建的 Github 仓库:

git add .
git ci -am'first commit'
git push

配置 Github Pages

打开新建的 Github 仓库主页,选择 Settings -> Pages
Github Pages 配置页面

  • Buld and deploymentSource 下拉框中选择 Github Actions
  • 网站会自动进入构建状态
    • 可以点击顶部菜单 actions 查看构建过程
  • 等待构建完成

测试网站

构建成功之后,打开浏览器,输入域名 feelang.github.io,如果能正常打开,说明已经部署成功。

配置域名解析

这里以阿里云为例,其他平台大同小异。

进入后台,打开控制台,找到云解析DNS / 域名解析。

添加两条解析规则:

主机记录记录类型解析请求来源记录纸TTL
wwwCNAME默认feelang.github.io10分钟
@CNAME默认feelang.github.io10分钟

回到 Github Pages,将 feelang.xyz(以本站为例)填入 Custom domain,勾选 Enforce HTTPS

等待十分钟以后,浏览器输入 feelang.xyz 就可以直接打开网站了。

这次一个非常简单的静态站点就部署完成。

如果想要进一步修改网站内容,可以跟着 Jekyll 中文教程 修改配置项。

那么什么是 CNAME 呢?

CNAME(Canonical Name)是域名系统(DNS)中的一种记录类型,用于将一个域名指向另一个域名。它通常用于创建别名或子域名,并将其映射到另一个域名或服务器上。CNAME记录允许你在不改变实际主机 IP 地址的情况下,将一个域名映射到另一个域名上

具体来说,CNAME 记录是一种 DNS 记录,它将一个域名映射到另一个域名,使得当用户访问被 CNAME 指向的域名时,DNS会将请求转发到目标域名的服务器上。这对于需要将多个域名指向同一台服务器或实现域名的重定向非常有用。

我们通过创建 CNAME 记录,将别名 www.feelang.xyz 和 feelang.xyz 指向了 feelang.github.io ,这样当用户访问 feelang.xyz/www.feelang.xyz 时,DNS会将请求转发到 feelang.github.io 的服务器上,实现访问网站的效果。

总结起来,CNAME 记录是用于将一个域名指向另一个域名的DNS记录类型,它提供了域名映射和别名功能,方便管理和配置域名的指向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.7.cuda运行时API-使用cuda核函数加速warpaffine

目录 前言1. warpAffine2. warpAffine案例2.1 导言2.2 main函数2.3 warpaffine_to_center_align函数2.4 warp_affine_bilinear函数2.5 warp_affine_bilinear_kernel核函数2.6 AffineMatrix结构体 3. 补充知识总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0…

【Linux后端服务器开发】软硬链接与动静态库

目录 一、软硬链接 二、动静态库 1. 静态库 2. 动态库 一、软硬链接 软链接&#xff1a;ln -s myfile soft_file.link 硬链接&#xff1a;ln myfile hard_file.link 查看映射关系&#xff1a;ll -li 软硬链接区别&#xff1a;是否具有独立的inode 软链接具有独立的inode…

Appium+python自动化(一)- 环境搭建—上(超详解)

最近整理了一下自动化的东西&#xff0c;先前整理的python接口自动化已经接近尾声。即将要开启新的征程和篇章&#xff08;Appium&python&#xff09;。那么首相的问题就是搭建环境了。好久没搭建环境又踩了不少坑&#xff0c;appium的环境搭建比较繁琐&#xff0c;好多同行…

零撸X2E大热门​Salad Venture的空投!

Salad Venture 随着Web3的走红&#xff0c;X to Earn成为热门概念&#xff0c;其中X可指运动、购物、游戏、学习和创作等诸多应用场景&#xff0c;Earn则是通过这些特定场景产生经济收益。与Web2企业将利益分配权牢牢掌握在自己手中不同&#xff0c;X to Earn的本质是将参与者…

Coggle 30 Days of ML(23年7月)任务七:训练TextCNN模型

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务七&#xff1a;训练TextCNN模型 任务七&#xff1a;使用Word2Vec词向量&#xff0c;搭建TextCNN模型进行训练和预测 说明&#xff1a;在这个任务中&#xff0c;你将使用Word2Vec词向量&#xff0c;搭建TextCNN模型进…

【LeetCode热题100】打卡第32天:最长连续序列只出现一次的数字单词拆分环形链表

文章目录 【LeetCode热题100】打卡第32天&#xff1a;最长连续序列&只出现一次的数字&单词拆分&环形链表⛅前言 最长连续序列&#x1f512;题目&#x1f511;题解 只出现一次的数字&#x1f512;题目&#x1f511;题解 单词拆分&#x1f512;题目&#x1f511;题解…

webAPI学习笔记5——移动端网页特效和本地存储

一、移动端网页特效 1. 触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好&#xff0c;我们不需要考虑以前 JS 的兼容性问题&#xff0c;可以放心的使用原生 JS 书写效果&#xff0c;但是移动端也有自己独特的地方。比如触屏事件 touch&#xff08;也称触摸事件&#xff09…

联想M7605DW怎么连接WiFi网络

联想M7605DW是一款拥有WiFi功能的打印机&#xff0c;可以通过WiFi连接无线网络&#xff0c;实现打印无线传输。 首先&#xff0c;需要确保你的WiFi网络已经正常连接&#xff0c;并且知道WiFI的网络名称和密码&#xff0c;同时确保你的电脑或手机设备与WiFi相连接。 启动联想M76…

数组、指针练习题及解析(含笔试题目讲解)其一

目录 前言 题目列表&#xff1a; 题目解析 一维数组 字符数组 字符串 字符指针 二维数组 笔试题 总结 前言 前几期的博客已经将有关指针、数组的所以知识都已基本讲解完毕&#xff0c;那么接下来我们就做一些练习巩固&#xff0c;这些练习依据历年来一些公司笔试题进行…

java的ThreadLocal变量

Java的ThreadLocal变量是线程的局部变量&#xff0c;只能被本线程访问&#xff0c;不能被其它线程访问&#xff0c;也就是说线程间进行了隔离。每个线程访问该变量的一个独立拷贝&#xff0c;互相不干扰。感觉跟synchronized的作用相反&#xff0c;synchronized是为了保护线程间…

Kafka入门,mysql5.7 Kafka-Eagle部署(二十五)

官网 https://www.kafka-eagle.org/ 下载解压 这里使用的是2.0.8 创建mysql数据库 创建名为ke数据库,新版本会自动创建&#xff0c;不会创建的话&#xff0c;自己手动创建&#xff0c;不然会报查不到相关表信息错误 SET NAMES utf8; SET FOREIGN_KEY_CHECKS 0;-- ------…

从2023中国峰会,看亚马逊云科技的生成式AI战略

“生成式AI的发展就像一场马拉松比赛&#xff0c;当比赛刚刚开始时&#xff0c;如果只跑了三四步就断言某某会赢得这场比赛&#xff0c;显然是不合理的。我们现在还处于非常早期的阶段。” 近日&#xff0c;在2023亚马逊云科技中国峰会上&#xff0c;亚马逊云科技全球产品副总裁…

智慧农业:温室大棚物联网系统,助力实现可视化科学管理

我国传统农业的特点是靠天吃饭&#xff0c;而智慧农业发端于物联网设备和对应的农业信息化管理系统&#xff0c;是利用数字技术、数据分析和人工智能等先进技术手段&#xff0c;对农业生产进行精细化管理和智能化决策的一种新型农业生产模式。它可以通过实时监测、预测和调控土…

java 配置打包Spring Boot项目过程中跳过测试环节

上文 java 打包Spring Boot项目&#xff0c;并运行在windows系统中中 我们演示了打包 Spring Boot项目的并运行在本地的方法 但是 我们这里会看到 每次打包 他这都会有个T E S T S 测试的部分 但是 我们自己开发的程序 要上线 有没有问题我们肯定自己清楚啊 没必要它做测试 而且…

web学习笔记2

文档流 网页是一个多层的结构&#xff0c;设置样式也是一层一层的设置&#xff0c;最终我们看到的最上面的一层。 文档流是网页最底层 我们创建的元素默认情况下&#xff0c;都在文档流中 元素分为两种状态&#xff1a;在文档流中&#xff0c;脱离文档流 元素在文档流中的特点 …

同一段数据分别做傅里叶变化和逆变换的结果及分析

已知有公式 D F T &#xff1a; X [ k ] ∑ n 0 N − 1 x [ n ] e − j 2 π k n N &#xff0c; 0 ≤ k ≤ N − 1 DFT&#xff1a;Χ[k]\sum_{n0}^{N-1}x[n]e^{-\frac{j2\pi kn}{N}}&#xff0c;0≤k≤N-1 DFT&#xff1a;X[k]n0∑N−1​x[n]e−Nj2πkn​&#xff0c;0≤k…

超详细 | 模拟退火-粒子群自适应优化算法及其实现(Matlab)

作者在前面的文章中介绍了经典的优化算法——粒子群算法(PSO)&#xff0c;各种智能优化算法解决问题的方式和角度各不相同&#xff0c;都有各自的适用域和局限性&#xff0c;对智能优化算法自身做的改进在算法性能方面得到了一定程度的提升&#xff0c;但算法缺点的解决并不彻底…

学生公寓智能电表控电系统的技术要求

学生公寓电表智能控电石家庄光大远通电气有限公司模块采用高精度计量芯片,的计量计费功能。 控制路数&#xff1a;可输出1~4路输出,每个回路都可以设置负载识别,定时断送过载功率等控电参数。 自动断电 &#xff1a;具有自动断电功能,可用电量为0时,应自动切断该分路电源 支持正…

创建Spring CloudDEMO流程

创建普通的maven工程作为父工程 然后设置字符集为UTF-8 再注解生效激活 java编译版本选择8 idea文件忽略&#xff08;忽略乱七八糟的文件&#xff09; *.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;.idea;*.iml…

TencentOS3.1安装PHP+Nginx+redis测试系统

PHP和Nginx应用统一安装在/application下。 Nginx选用了较新的版本1.25.0 官网下载安装包&#xff0c;解包。执行如下命令编译&#xff1a; ./configure --prefix/application/nginx-1.25.0 --usernginx --groupnginx --with-http_ssl_module --with-http_stub_status_modu…