项目部署
想要将django项目部署在服务器上,本质上需要三大部分:
- 将代码上传到服务器
- 在服务器上 获取代码、安装服务、配置环境
- 启动服务
1.代码同步
上传代码的方式有很多种,例如:FTP工具、scp命令、rsync服务、svn等,不过目前公司主流的都是使用git+代码托管平台。
- 本地电脑,安装git并使用git命令上传代码。
- 代码仓库,创建仓库。
- 服务器,安装git并使用git命令获取最新代码。
1.1 本地上传
在本地电脑上本质上需要执行如下步骤:
-
全局配置
git config --global user.name "xxx" git config --global user.email "xxx@live.com"
-
进入项目目录
-
初始化
git init
-
配置远程地址
git remote add origin https://gitee.com/wupeiqi/xxxxx.git
-
本地版本提交
git add . git commit -m '提交说明...'
-
提交到远程仓库
git push origin master
-
这样虽然能操作,但是会有两个小问题:
- 项目中所有数据都提交了,如果仓库是公开的,有些敏感数据会泄露。
- 每次提交都需要输入密码,太烦了。
1.1.1 gitignore
在项目中创建一个 .gitignore
的文件,在里面写上文件名或文件夹,可以git忽略一些文件,不要进行版本控制。
https://github.com/github/gitignore/blob/main/Python.gitignore
将Python的ignore文件内存拷贝并保存至项目目录下。
这样,就可以控制git忽略某些文件。
学会这个知识点之后,接下来再来讲一个关于配置文件的常见操作,即:local_settings.py
如果本次开发和线上开发一些配置不同,就可以放在这个文件。
- 本地:local_settings.py 编写本地特有配置。
- 线上:local_settings.py 编写线上特有配置。
而在settings.py中编写所有环境都有的配置。
1.1.2 密码或秘钥
本地提交代码时,每次需要输入密码 & 线上服务器拉去代码时,每次也需要输入密码。
-
固定用户名和密码
git remote remove origin git remote add origin https://用户名:密码@gitee.com/wupeiqi/xxxxx.git
-
使用SSH
-
使用ssh-keygen命令,生成一对秘钥(公钥和私钥)
ssh-keygen -t rsa
-
读取公钥
~/.ssh/id_rsa.pub
内容并上传到代码托管仓库
-
1.1.3 关于版本(赠送)
在本地的git每次执行commit命令时,都会生成一个提交记录,如果执行git push也会将记录提交到代码仓库。
可以通过命令实现在各个版本之间进行切换:
- 查看提交记录
git log
- 查看提交记录
git reflog
- 跳转至指定版本
git reset --hard fa1653b6cd5ed1ff12ef1acdf534e91b9b895604
注意:此命令可以在本地、线上执行,以此来切换到各种版本
1.2 线上同步
登录线上服务器并获取代码,本质上需要以下三个步骤:
- 基于SSH或web页面登录服务器
- 云平台网页版:支持登录并进行命令交互(不便捷,不推荐)。
- SSH工具,连接比较方便(推荐)
- win:xshell、SecureCRT
- mac:iTerm2
注意:如果使用SSH工具连接远程服务器的话,需要在云平台的的安全组开启22端口权限。
-
安装git
-
进入项目克隆或拉取代码
基于用户名和密码:
git clone https://gitee.com/wupeiqi/xxxxx.git基于用户名和密码:
git clone https://用户名:密码@gitee.com/wupeiqi/xxxxx.git基于秘钥:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
拷贝公钥到代码仓库
git clone git@gitee.com:wupeiqi/xxxxx.git
1.2.1 SSH密码+下载代码
>>>ssh root@82.156.54.134
>>>cd /data/
>>>git clone https://gitee.com/wupeiqi/xxxxx.git
>>>cat ~/.ssh/id_rsa.pub
>>>拷贝公钥放到代码仓库
>>>cd /data/
>>>git clone git@gitee.com:wupeiqi/xxxxx.git
`
1.2.2 SSH秘钥+下载代码
在我们本地想要通过SSH连接服务器,每次连接都输入密码也觉得比较烦,此时也可以使用秘钥的方式直接连接服务器。
>>>ssh-keygen -t rsa 这个命令不需要做了,因为在之前git上传代码时已执行过(已有公钥和私钥)
>>>ssh-copy-id -i ~/.ssh/id_rsa.pub root@82.156.54.134