博客自动部署优化-静态网站自动部署方案盘点
前言:从开始研究本站博客自动部署方案开始到现在已经有三周左右了,准备在这篇文章里做一个方案盘点。
在自动部署过程中,核心是需要代码仓库有一个执行bash脚本的环境,这需要仓库服务提供商提供云计算资源,于是就产生了费用。在这其中,较大的商家因为有雄厚的经济实力,就可以提供一些免费的CI执行分钟数。
这其中广为流传的就是GithubAction,每个月有2000分钟数可以白嫖,此外netlify每月有300分钟,其他的我就不太了解了。如有了解的小伙伴可以再评论区补充一下。
本文所探讨的自动部署方案全都基于GithubAction实现,按部署的目的地,分第三方服务器和私有服务器两个部分介绍。
一、部署到第三方服务器这部分介绍三个方案,分别是部署到GithubPage,腾讯云存储桶,netlify,他们都有静态网站托管的服务,可以直接把打包好的文件传上去部署网站,部署以后会生成一个子域名以供访问,自己有域名也可以绑定自定义的域名。
此外还有vercel,giteePage等方式,我暂时还没使用过,有用过的朋友也可以评论区补充一下。
方案1——部署到GithubPage
优点:部署最简单,网上攻 ...
解决文件权限问题导致的nginx403报错
问题描述:nginx配置好以后,通过浏览器访问遇到403报错,这里记录一下解决过程;
问题排查:1.首先查看是否是文件访问权限问题,如果nginx的执行用户无法访问需要托管的文件,就会报403,键入如下命令查看文件权限
1ls -l your/file
该命令会列出文件或文件夹中所有文件的访问权限,如图所示的文件的访问权限都是www-data用户组下www-data角色
2.再输入如下命令,打开nginx配置文件,查看nginx的执行用户是谁
1cat /etc/nginx/nginx.conf
可以看到nginx的执行用户是 www-data,如果与上面看到的文件权限不一致则会出现403错误。这时就需要修改文件的访问权限允许www-data用户访问。
3.修改文件权限
先修改文件夹或文件的所有者
1sudo chown -R www-data:www-data /path/to/your/folder
然后修改文件所有者的具体操作权限
💡 750表示文件所有者具有读、写、执行的权限,所属组具有读、执行的权限,其他用户没有任何权限。
1sudo chmod -R 750 ...
博客自动部署优化01-netlify自动部署优化
起因:昨天因为twikoo评论的问题,加到了twikoo群里询问群佬没有得到解决(文章改名以后twikoo的历史评论关联不上了,有人知道解决方法的话可以留言,感谢感谢~),却在群里意外收获了一则消息——netlify的自动构建部署服务每个月免费时长是300分钟,虽然300分钟也足够了,但是githubAction的每月2000分钟免费时长更胜一筹,于是问高人要了一个overflow脚本,完成了netlify自动部署的优化。
过程:1.首先在项目根目录的.github/overflow/目录下新建一个.yml脚本配置文件,将大佬给的部署配置粘贴进去
1234567891011121314151617181920212223242526272829303132name: 部署到netlifyon: push: branches: - mainjobs: deploy: runs-on: ubuntu-latest steps: - name: 通用的代码拉取 uses: actions/checkout@v3 ...
记录使用systemd过程中遇到的bug
发现问题:在使用Systemd守护node服务的过程中,遇到如下报错
cannot find module hexo from path
排查思路:关掉这个service服务,直接启动node服务看是否能正常工作?
可以 => node服务或sh脚本执行环境可能存在问题;
解决方案:sh脚本中的命令改成使用绝对路径执行;
从零开始的个人博客搭建07-使用systemd守护自动部署进程
背景:在上一篇文章中,我在服务器中部署了一个webhook-handler.js的node服务用于处理webhook的请求并拉取代码完成自动部署,但在实际使用中发现,这个服务经常莫名其妙就停掉了,导致我提交的代码没有及时更新到服务器。
经查阅资料发现,需要给node服务写一个.service文件,即进程守护文件,当服务异常崩溃的时候可以自动重启服务,提升服务的稳定性。
什么是Systemd?systemd是目前大多数Linux发行版的内置进程管理工具,PID是1,是linux系统中启动的第一个进程,所有的其他进程都是systemd的子进程。
想要详细了解systemd可以参考阮一峰大佬写的这篇教程:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
具体操作:1.在本地新建一个webhookhandler.service文件,记事本打开,写入如下内容123456789101112131415[Unit]Description=Main Node.js ServiceAfter=network ...
从零开始的个人博客搭建06-使用webhook实现git项目在云服务器上的自动部署
什么是WebHook?WebHook,可以简单理解为一个由特定条件触发的http请求。
例子:在Github中的每个仓库都可以配置webhook,当push触发webhook后,github会根据配置向特定的服务器发送一个http/https请求,并携带相应的信息,服务器收到请求后,可以根据信息做一系列不同的操作。
自动部署实现思路:github远程仓库有webhook功能,在代码push时,可以配置让其向指定服务器发送一个post请求;当我们的云服务器接受到这个请求时,执行git pull命令拉取最新代码,并执行一系列bash命令即可完成自动部署。
架构图:
问题:在实践过程中,我发现在服务器上无法直接拉取github代码,原因可能与github被墙有关,因此需要转变思路,使用国内的代码托管平台同步github上的代码,并发送webhook请求,然后服务器再拉取国内代码托管平台上的代码,最后再执行自动部署脚本完成部署
解决思路:
放弃使用github,改用gitee仓库来存储代码
使用github同步
调整后的架构:
具体实现步骤:一、配置gitee仓库的webho ...
从零开始的个人博客搭建05-接入twikoo第三方评论系统
一、简单介绍一下TwikooTwikoo评论系统是目前国内部署个人最推荐的评论系统,之前搞过waline但是waline是基于vercel部署的,因为vercel被墙了导致国内访问体验很差
Twikoo基于腾讯云函数开发,可在国内正常访问,本文采用twikoo官网中的Netlify部署方式,具体操作步骤也可移步官网查看。
twikoo官网:https://twikoo.js.org/
二、具体操作
申请 MongoDB 账号
创建免费 MongoDB 数据库,区域推荐选择 AWS / N. Virginia (us-east-1)(我选的是香港的)
在 Database Access 页面点击 Add New Database User 创建数据库用户,Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名和密码,用户名和密码可包含数字和大小写字母,请勿包含特殊符号。点击 Database User Privileges 下方的 Add Built In Role,Select Role 选择 Atl ...
从零开始的个人博客搭建04——10分钟完成Linux系统下的静态网站部署
前情提要:昨天兴致勃勃地在腾讯买了个域名,准备给部署到腾讯云COS的网站使用,然后发现不买腾讯云的服务器居然没法备案,因为之前已经买过一次腾讯的服务器,导致这次享受不到首单优惠,买一年轻量要一百多,不想花这钱,于是把目光转向阿里,参加新人活动白嫖了三个月的服务器,决定先跑通整个流程后面再考虑买长期。目前腾讯阿里华为都在搞年终活动,买服务器还是比较便宜的,我把活动页面放在下面,有需要可以自行考虑购买。
腾讯云活动页面:https://cloud.tencent.com/act/pro/bestselling?from=21736
阿里云活动页面:https://www.aliyun.com/daily-act/ecs/activity_selection?spm=5176.28508143.J_ahRFo5CaAe_asSOaCgS4J.6.e939154a2unRUe&scm=20140722.M_10071131.P_149.MO_2274-ID_10071131-MID_10071131-CID_30876-ST_9607-V_1
具体步骤:话不多说直接上实操
1 ...
更改ssh端口解决Github仓库连接问题
吃着火锅唱着歌,有一天Github突然就连不上了,报错:ssh:connect to host github.com port 22: Connection timed out,通过查阅各种资料,得知原因可能是由于电脑的防火墙或者其他网络原因导致ssh连接方式 端口22被封锁。
如果22号端口不行,那就换一个端口。
打开ssh公钥的目录 C:\Users\dell.ssh,在目录下创建一个Config文件,注意Config文件没有后缀,然后将如下配置复制进文件里保存退出
123456Host github.comUser [替换成你的邮箱]Hostname ssh.github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/[替换成你的ssh私钥文件名]Port 443
替换后执行以下命令测试连接
1ssh -T git@github.com
弹出提示是否继续,确定
如果提示访问成功就可以正常进行Git拉取和提交操作了
从零开始的个人博客搭建03——PicGo+腾讯云COS搭建图床配合Typora提升写作体验
一、背景此前笔者在写作时,都是直接在项目里直接用VSCode写作,当涉及到图片的插入时,因为开发环境和部署环境路径的不同,默认不支持本地预览,如果要在本地和线上环境都能正常显示图片非常费劲(需要安装插件+每个文章建一个同名文件夹,还有若干的限制),非常痛苦。
因此一个能在线下和线上都正常预览图片的简单高效写作方法,成为刚需。
通过多方查找资料,找到了**Typora和其内置PicGo**
二、Typora和PicGO简介1.什么是Typora?Typora是一款知名度很高的Markdown编辑器,以前用过它的基础功能,当时还是免费的内测版,现在已经发布了正式版,89块钱即可购买永久使用。我们需要使用它的图片上传功能。
2.什么是PicGo?PicGo是一款图片上传插件,支持对多种图床的上传操作,本文使用的1.7.6版本Typora中就有PicGO插件的配置选项。
关于图床的解释可以参考这篇知乎的回答,简单地讲,图床就是专门存放图片的服务器,最好拥有庞大的存储空间(这一点对象存储完美满足),图床中可以给主服务器减小压力。
https://www.zhihu.com/question/ ...
从零开始的个人博客搭建02——GitHub Action+腾讯云COS实现国内部署
一、实现原理Github仓库收到代码push后,执行GithubAction,自动打包构建,并将生成的静态资源文件推送到腾讯云COS存储桶内,借助腾讯云COS的静态网站功能,完成博客的自动构建。
二、相关概念2.1 什么是GithubAction?Github Actions 是 GitHub 推出的持续集成 (Continuous integration , 简称 (CI) 服务 , 它提供了配置虚拟服务器环境 , 基于它可以进行构建 、 测试 、 打包 、 部署项目 。
GitHub Actions 为每个任务 (job) 都提供了一个虚拟机来执行 , 每台虚拟机都有相同的硬件资源 :
2-core CPU7 GB RA M 内存14 GB SSD 硬盘空间(实测硬盘总容量为 90G 左右 , 可用空间为 30G 左右)
使用限制:
每个仓库只能同时支持 20 个 workflow 并行 。每小时可以调用 1000 次 GitHub API 。每个 job 最多可以执行 6 个小时免费版的用户最大支持 20 个 job 并发执行 , macOS 最大只支持 5 个私有仓库每月 ...
MD常用语法速查
1.多级标题# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题2.使用双回车换行hellow,
world
3.强调*斜体*
*粗体*
4.删除线
语法:双波浪线包裹
被删除文本
5.分隔线
语法:*** 或 —
6.下划线()<u>下划线文本</u>
7.图片插入
语法:![我的哔哩哔哩头像](https://i2.hdslb.com/bfs/face/cf345746a9546fcfbf0b6563c1de26d218a5565d.jpg@120w_120h_1c.avif)
8.代码块插入(可指定语言)语法:```js
console.log(‘hellow,world!’)
```
1console.log('Hellow,world!')
9.引用
> 这是一个引用
10.无序列表1234语法:+ 红的+ 黄的+ 蓝的
红的
黄的
蓝的
11.有序列表12341. 第一点2. 第二点3. 第三点4. 第四点
第 ...