09-使用CDN加速网站
一、CDN基本概念CDN是什么?CDN的英文全称是Content Delivery Network,中文翻译叫内容分发网络
用现实中的例子来解释,就好比京东的物流网:
货物如果都呆在原产地,等客户下单后直接从原产地发货,这种就是不用cdn,网站访客与服务器直连的方式
货物如果生产出来先预先发货到几个大的物流中心,分管西部、西北、华中、东南、东北几大地区,那么这些地区的客户下单后,如果物流中心有货,就直接从物流中心发货,如果没货再从原产地发货,这种方式就是用上了cdn加速的方式
CDN是怎么工作的?CDN 的工作原理如下:
缓存内容: CDN 在全球(或全国)各地部署了多个服务器节点,这些节点被称为边缘服务器。这些服务器会缓存网站的静态资源,如图像、CSS、JavaScript 文件等。
就近访问: 当用户请求访问某个网站时,CDN 会自动将用户的请求路由到离用户地理位置最近的边缘服务器上。
加速传输: 边缘服务器会提供缓存过的内容,从而减少从源服务器到用户的传输距离,加速数据传输。这有助于降低延迟并提高网站加载速度。
利用CDN的优势?
提高网站性能: 用户可以从离他们更近的服 ...
ssl证书部署—使网站支持https访问
背景:前端时间在网站部署完成后,直接通过http访问时,浏览器会提示网站不安全,为了使网站支持https访问,需要申请一个https证书部署到服务器上。
步骤:1.申请免费的ssl证书如果没有特殊需求,可以直接申请免费的ssl证书使用,我买的是腾讯云的域名,可以在ssl证书控制台直接申请
2.下载证书上传到服务器申请到免费证书后在我的证书里点击下载,然后上传到服务器的/etc/nginx/ssl目录下
3.修改nginx配置使证书生效nginx配置文件:
1234567891011121314151617181920212223242526272829server { #SSL 默认访问端口号为 443 listen 443 ssl; #请填写绑定证书的域名 server_name cloud.tencent.com; #请填写证书文件的相对路径或绝对路径 ssl_certificate cloud.tencent.com_bundle.crt; #请填写私钥文件的相对路径或绝对路径 ssl_certificate_key cloud. ...
nginx静态网站部署配置高级
背景:在刚开始使用nginx部署静态网站时,我对nginx中的多个配置文件——nginx.d,nginx.conf,sites-available/* 的作用和概念搞不清楚,不太明白他们是怎么工作的,经过几天跟gpt的问答学习,逐渐梳理出来了一些关键问题,有助于新手搞清楚nginx的配置文件脉络,在这里分享给大家。
问答:Q1: nginx配置文件有哪些 ?Nginx的配置文件通常包括以下几个主要部分:
nginx.conf:这是Nginx的主配置文件,包含全局配置指令,比如worker_processes(工作进程数)、events(事件模块配置)等,可以理解为项目开发中的main函数,即入口配置文件
sites-available目录:这个目录通常包含所有可用的网站配置文件。每个配置文件对应一个网站的配置。这个目录下有一个默认的default配置文件,是nginx为我们提供的配置模版,在新增配置时,推荐以复制该模版然后进行修改的方式来新增配置。
sites-enabled目录:这个目录包含了实际生效的网站配置文件的符号链接。Nginx默认加载这个目录中的配置文件。
...
博客自动部署优化-静态网站自动部署方案盘点
前言:从开始研究本站博客自动部署方案开始到现在已经有三周左右了,准备在这篇文章里做一个方案盘点。
在自动部署过程中,核心是需要代码仓库有一个执行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拉取和提交操作了