因为之前的博客太久没使用了就给关闭了,近来想重新开启遂决定重新部署一个,于是敲定了技术栈便开始动手,有兴趣的可以翻我之前的《如何利用Docusaurus打造个人站点,看这一篇文章就够了》文章
1.服务器搭建
首先你需要一台云服务器,这里的服务器可以从各大云服务厂商处购买不做赘述
1.1安装服务器操作面板
接下来就是安装操作系统和环境了,云服务器这块由于我不是十分了解linux,遂选择在linux的基础上安装宝塔面板进行服务器的管理,
1.2安装Web服务器
有了服务器之后,我们的项目部署到公网上,还需要有一个公网IP,以及一个Web服务器,比如Nginx、IIS、Apache等等
这里我们选择使用Nginx
2.配置自动化脚本部署
在这之前你需要了解CI/CD的一些相关知识
2.1选择 Github 项目仓库
这里以使用Github Actions为例
首先将本地代码推送到Github仓库,进入到仓库主页,点击顶部的Actions标签
2.2新建工作流,配置 Actions
进入 Actions 后可以看到很多推荐的工作流模版,这里可以根据需要自行选择需要的模版,或者跳过模版,自行设置。
这里因为我是纯前端项目,所以我选择自定义。
在这里面可以编写一些我们自定义的脚本
点击右上角的commit changes
会自动在项目 .github/workflows 目录下生成 main.yml
文件,我们可以把文件名字改成我们工作流的名称。当然,这里可以设置并存在很多工作流 yml
文件,例如 deploy.yml、test.yml、gh-page.yml 等。
这里分享一下我自己使用的部署脚本
# action名称
name: deploy-website
# 当代码合并到master分支的时候,执行下列脚本
on:
push:
branches: [master]
# 任务
jobs:
# docs-build为任务id可随意定义
docs-build:
runs-on: ubuntu-latest
steps:
- name: 切换到master分支拉取源码
uses: actions/checkout@master
- name: 安装指定版本的Node.js
uses: actions/setup-node@master
with:
node-version: "18.X"
# registry-url: https://registry.npmjs.org/ # 如果不配置将影响publish
- name: 安装依赖
run: npm install
- name: 构建dist
run: npm run build
- name: build 成功通知
run: echo npm 构建成功,请访问 http://8.134.54.104
- name: copy file via ssh password
uses: easingthemes/ssh-deploy@main
with:
# SSH私钥
SSH_PRIVATE_KEY: ${{ secrets.REMOTE_SSH_KEY }}
ARGS: "-rlgoDzvc -i"
# 构建产物的路径
SOURCE: "build/"
# 服务器ip
REMOTE_HOST: ${{ secrets.REMOTE_HOST_HK }}
# SSH用户账户
REMOTE_USER: ${{ secrets.REMOTE_USER }}
# 部署到到服务器地址
TARGET: '/www/server/nginx/html/blog'
EXCLUDE: "/build/, /node_modules/"
SCRIPT_BEFORE: |
whoami
ls -al
SCRIPT_AFTER: |
whoami
ls -al
echo $RSYNC_STDOUT
接着到setting下配置环境变量,因为例如像服务器ip密钥等这类敏感信息不宜直接明文展示,所以可以通过读取环境变量的方式来读取
2.3提交代码
提交代码触发自动化构建和部署
3.配置域名解析
到对应域名服务商下面
4.启用HTTPS
配置和应用SSL证书
关于https介绍
https协议是一种在客户端与服务端之间进行数据传输的协议 ,是为了解决HTTP协议的安全隐私问题做的一个补充, 可以对传输的数据进行加密保证通信的安全
全称叫做HTTP overSSL或者TLS,本质上使用HTTP协议进行通信,但是使用SSL或TLS对数据进行加密或验证(还可以验证服务器身份 )
解决了哪些问题
- (防止被窃听) 传统的HTTP协议通信使用明文传输,内容可能会被窃听,有泄漏的风险
- 防止中间人攻击)因为被窃听,不验证身份,双方都有可能遭遇伪装(中间人攻击)
-
(防止被篡改)无法验证报文的完整性,有可能已被篡改
-
(优化SEO)seo容易受损,不使用https,搜索引擎排名受影响,搜索引擎算法优先考虑加密的https网站,
SSL
secure socket layers (安全套接字层)