部署手册
👋 永远都记不住的配置过程
git
linux 配置登录
Windows 会直接弹出弹窗以输入账号密码(前提是安装了 GUI 软件)
使用git push
时输入用户明和密码登录后,提示不再支持此登录方式:
根据提示中的链接,找到Git 凭据管理器(Git Credential Manager),大致安装、配置步骤:(Ubuntu)
- 安装.NET tool
1 | sudo apt-get update && \ |
- 安装管理工具
1 | dotnet tool install -g git-credential-manager |
成功安装后会提示将其设置到环境变量中:
- 配置
1 | git-credential-manager configure |
设置GCM_CREDENTIAL_STORE
环境变量,这里使用gpg
,并且需要额外安装pass
(此外还有别的设置形式)
1 | export GCM_CREDENTIAL_STORE="gpg" |
1 | apt install pass |
初始化 store
1 | # init后面的名称随意 |
推送代码
1 | git push |
NGINX
👉 Nginx 安装
反向代理
常见操作就是使用代理结局跨域问题
端口到子域名
1 | server { |
端口到路径
1 | server { |
示例:解决前端跨域
通过代理请求以解决
前端跨域
问题,原因是由浏览器的同源策略导致(Same-Origin Policy)
前端跨域产生的原因:浏览器通过 JavaScript 发送网络请求时,请求的接口与当前页面的 URL 不在同一个域名、协议和端口之下,浏览器就会认为这是一个跨域请求,从而根据同源策略阻止这个请求(除非服务器在响应头明确声明允许跨域)
1 | server { |
location
配置的是/api/
而不是/api
,二者区别:
/api/
:匹配当前规则之后的所有路径/api
:匹配以这个开头的所有路径
proxy_pass
同样需要以/结尾,二者区别:
- 有
/
结尾:请求中的/api 将会被去掉,其余部分拼接上去- 如:
http://api.example.com/login
- 如:
- 无
/
结尾:/api 会继续拼接到请求的接口中- 如:
http://api.example.com/api/login
- 如:
Docker
VSCode 容器开发
⚙️ 需要安装 vscode 插件Dev Containers
🔗 容器内外文件会自动同步
使用场景:统一的开发环境,或者是特殊的开发环境,以下示例基于python2
、node14
的不常见开发环境(对于 2025 年来说)
创建配置文件
在根目录创建.devcontainer
文件夹,添加以下文件:
Dockerfile
1 | # 使用官方 Python 2 镜像作为基础 |
- 和终端一样,命令和使用
\
来换行
devcontainer.json
1 | { |
启动
在 VSCode 中输入快捷键Ctrl/Cmd + Shift + P
,或者点击左下角的蓝色箭头(或者其他主题色),选择Reopen in container(在容器中重新打开)
此过程中会:
创建一个镜像,镜像名称以
vsc
开头基于镜像运行一个容器
运行成功后,vscode 地下的面板中的 PORT(端口) 选项面板就会显示出在
forwardPorts
中配置的转发端口
如果启动失败,并且是由于拉去不到镜像,可以先拉去所需要的镜像,再启动。如
docker pull python:2.7-slim
相关概念
跨域资源共享(CORS)
跨域资源共享 和 浏览器的同源策略 产生的跨域问题属于两个不同范畴
通过 Nginx 的配置可解决前端的跨域问题,但是跨域资源共享则需要后端解决:
- CORS 属于服务端的解决方案
- CORS 允许目标服务器声明哪些外部域名可以访问其资源
后端在响应头,需要的是添加如Access-Control-Allow-*
之类的声明
默认情况下浏览器会根据同源策略来阻止非同源请求,如果 目标服务器支持 CORS,服务端可以在响应头添加适当的 CORS 头来告诉浏览器允许特定的跨域请求。
CORS 工作原理:
预检请求(Preflight Request)
- 对于某些跨域请求(PUT、DELETE 或带有自定义头的请求),浏览器会先发送一个 OPTIONS 请求(预检请求)来询问服务器是否允许跨域请求。
CORS 响应头
- 服务端在响应头中加入如 Access-Control-Allo-Origin、Access-Control-Allow-Methods 来允许浏览器跨域访问
简单请求
- GET、POST(并且没有特殊头的请求)等简单请求,浏览器不会发送预检请求。如果服务端的响应头中有相关的 CORS 头配置,浏览器会允许这个请求