DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • BBS

  • 订单平台

    • 单点知识
    • 表结构
    • 用户名登陆
    • 短信登陆
    • 菜单和权限
    • 级别管理
    • 客户管理
    • 分页和搜索
    • 价格策略
    • 交易中心
    • message组件
    • 我的交易列表
    • worker
    • 部署之代码同步
      • GIT小试牛刀
        • 本地上传代码到仓库
        • 服务器拉取仓库代码
        • 情景:项目代码有变.
        • ssh登录服务器
      • 代码同步
        • 本地上传
        • .gitignore文件
        • local_settings.py
        • gitee密钥登录
        • GIT版本控制
        • 线上同步
      • ★★★总结(简略版)
    • 部署之线上运行
    • 张sir的部署
  • CRM

  • flask+layui

  • django+layui

  • 供应链

  • 实战
  • 订单平台
DC
2024-05-07
目录

部署之代码同步


# GIT小试牛刀

上传代码的方式有很多种, 例如: FTP工具、scp命令、rsync服务、svn等, 不过目前公司主流的都是使用git+代码托管平台.

项目部署的本质: 将本地电脑上的项目代码上传到服务器 - 服务器配置(安装mysql、redis等) - 启动

将代码扔到服务器上:
老旧的方式(都不咋用啦) - scp、FTP、rsync、svn、pycharm 它们都是将代码直接扔到服务器上.
现在通常使用 git 来完成!! git不会将代码直接扔到服务器上.

我的电脑本地下载git工具,服务器上也下载git工具.
■ 我们先通过git将代码上传"git push"推到 代码仓库中,服务器通过git从代码仓库中把代码"git pull"拉取下来!!
[进阶]:上述过程是手动的,现在更多的是 hook自动集成,代码仓库一更新,服务器上的代码就自动重新部署.

[★]git还可以实现协同开发,以及代码版本的控制!回滚等.

代码托管仓库: github、gitee、gitlab(自建的)
1
2
3
4
5
6
7
8
9
10
11

# 本地上传代码到仓库

本地第一次上传代码到仓库

image-20240507185017306

- 电脑上安装git
  https://git-scm.com/ 根据电脑的操作系统下载对应的git,点点点就安装好啦!!
- 注册github/gitee
- 再gitee上创建一个新的仓库,(相当于一个空的文件夹) 得到一个仓库地址: https://gitee.com/One_PieceDC/order.git
- 在本地git进行配置
  1.git全局配置 (在终端的任意位置输入以下代码!)
    git config --global user.name "菜市场"
    git config --global user.email "[email protected]"
- 对将要上传的项目进行配置
  1.在终端进入项目目录 (把项目拖到终端上就行了
  2.输入以下命令进行初始化 -- 最开始做一次即可
    git init  # 在项目根目录下会出现一个隐藏目录 .git
    git remote add origin https://gitee.com/One_PieceDC/order.git  # 就可用origin代指仓库地址了
  3.提交代码
    git add .
    git commit -m "第一次提交,项目初始化"
  4.提交到远程仓库
    git push origin main  # -- 首次提交时会叫你输入用户名和密码!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 服务器拉取仓库代码

服务器第一次拉取仓库代码

- 购买服务器,进行登录
  (´・Д・)」此处我是通过阿里云的web版使用的服务器,这种方式不专业!
  专业的做法是在自己电脑上利用ssh连接到远程服务器!!
- 输入以下命令
  pwd  # 看在哪个目录下
  git  # 看是否有git软件
  yum install git  # centos可通过yum命令下载git
  # 克隆代码!! 首次操作会需输入gitee账号的用户名和密码
  # 克隆时,还包含了remote add的操作
  git clone https://gitee.com/One_PieceDC/order.git
  ls   # 可以看到当前目录下有order文件夹
1
2
3
4
5
6
7
8
9
10
11

image-20240507185310333

# 情景:项目代码有变.

情景:当对项目代码进行了修改.

>本地
 git add .
 git commit -m "修改了xx功能"
 git push origin main  # 最新的代码就同步到gitee仓库啦!在仓库页面可以看到对哪个文件进行了修改.
>服务器
 (´・Д・)」此处我是通过阿里云的web版使用的服务器,这种方式不专业!
 专业的做法是在自己电脑上利用ssh连接到远程服务器!!
 ★一定要先进入项目根目录下
 cd order
 git pull origin main  # 拉取最新的代码,只会同步变化的地方,不会像克隆一样全部重新拉下来
1
2
3
4
5
6
7
8
9
10

image-20240507185406975

# ssh登录服务器

在自己电脑上利用ssh连接到远程服务器!

ssh root@服务器公网IP 、mac终端和windows的git软件、windows的xshell都集成了ssh!!

image-20240507190353998


# 代码同步

(´・Д・)」

# 本地上传

上面"GIT小试牛刀"的步骤 存在一些问题,我们逐一的来进行解决!!

1.代码仓库gitee创建一个仓库,仓库名尽量与项目名一致
2.本地本机推送代码
  git add .
  git commit -m "xxxxx"
  git push origin main
  
- 上述推送代码的步骤能推,但存在一些问题:
问题1> 有些文件不需要推送
   eg: _pycache_文件夹里的.pyc文件,这些是py运行过程中生成的字节码,无需提交
问题2> 本地项目的mysql、redis等配置和线上服务器的mysql、redis等配置是不一样的,
1
2
3
4
5
6
7
8
9
10
# .gitignore文件

在项目中创建一个 .gitignore的文件, 在里面写上文件名或文件夹, 可以git忽略一些文件, 不要进行版本控制.

★ 一般会在做项目开发时就会在项目根目录下把.gitignore给加上! / 在对项目进行 git init之前!

https://github.com/github/gitignore/blob/main/Python.gitignore
# - 该文件内容中,最后关于pycharm的注释可以取消
# - 在该文件内容最后添加一个忽略文件 .DS_Store ,这是mac系统自动生成的,无需提交

# --- ★★★★★★★★★★ 加以下内容!!

.DS_Store
# database migrations
*/migrations/*.py
!*/migrations/_init_.py
1
2
3
4
5
6
7
8
9
10

Q: 在前面"GIT小试牛刀"的小节中 已经对项目进行 git init啦!!
     此时再往里加入.gitignore文件,然后 add、commit、push后成功再次上传到仓库中,但需要忽略的文件依旧存在,怎么办?

A: 简单粗暴的解决办法:
     删除gitee仓库 + 本地项目中删除根目录下的.git目录 + 重新创建git仓库 + 本地重新推送到仓库

step1: gitee删除仓库
step2: 本地进入项目根目录,执行以下命令或操作
  ls -a
  rm -rf .git
  往项目根目录下添加python相关的.gitignore文件
step3: gitee新创建代码仓库order
step4: 本地进入项目根目录,执行以下命令或操作
  # - Git 全局设置 在前面已经做过了,只需做一遍,所以其实这里可以不执行这两条命了啦!
  git config --global user.name "菜市场"
  git config --global user.email "[email protected]"
  # - 本机进行的代码版本控制以及提交的代码记录都会存储在.git目录里!!
  #   Initialized empty Git repository in /Users/dengchuan/Desktop/order/.git/
  git init
  git add .
  git commit -m "第一次提交"
  # - 配置代码仓库的地址 相当于起个别名,origin代指代码仓库地址
  git remote add origin https://gitee.com/One_PieceDC/order.git
  # - 本地提交代码到仓库中
  git push origin main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# local_settings.py

本地和线上的配置如何进行隔离呢? 利用local_settings.py文件!!

Step1: 本地在settings.py所在目录下创建同级文件 local_settings.py

Step2: 本地在settings.py的《最后》添加以下代码

try:
    from .local_settings import *
except ImportError:
    pass
1
2
3
4

说明:

- 在.gitignore文件中是有写 local_settings.py 的!
  "★★★"所以,在本地提交代码到仓库的时候,仓库中是不会有 local_settings.py 文件的!!

- 之所以在本地项目代码中添加local_settings.py文件,是为了方便本地的开发环境的配置!!
  我们可以在该文件中写入本地的mysql、redis等配置,因为在setting.py的最后写了代码"from .local_settings import *"
  So,在本地运行项目时,local_settings.py中的配置会覆盖setting.py中的配置.

- 待本地的代码上传到仓库中,线上服务器从仓库中拉取代码后!
  我们在线上服务器中,以同样的方式创建 local_settings.py 文件!! 在里面进行线上的mysql、redis等配置.

(*≧ω≦) 经过上述步骤,本地和线上的配置就成功进行了隔离!!
★ 通常会将本地和线上一样的配置放在setting.py中
  将本地所特有的放在本地的local_settings.py中,线上所特有的放在线上的local_settings.py中!
  >> .gitignore文件中得写 local_settings.py 噢~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# gitee密钥登录

解决本地提交代码时, 每次需要输入密码 以及 线上服务器拉去代码时,每次也需要输入密码 的问题!!

也许你会发现不进行下述的配置,开始几次输入后,后面也不用输入了,这是因为 电脑凭证!电脑自己保存了密码.Hhh
但有些同志的电脑不好使, 就会每次都让输入. mac的电脑凭证是那个 "钥匙串".

■ 方式一: 仓库地址选择HTTP连接,在本地设置仓库地址时,固定用户名和密码!! 
         git remote add origin https://用户名:密码@仓库地址
  git remote remove origin
  # git remote add origin https://gitee.com/One_PieceDC/order.git
  git remote add origin https://One_PieceDC:xxx@gitee.com/One_PieceDC/order.git

■ 方式二: 仓库地址选择SSH连接, 使用密钥(★推荐!)
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.gitee  # - 一路回车即可  -f是为了指定名字
cat ~/.ssh/id_rsa.gitee.pub  # - 将该公钥给gitee!!
ssh-add ~/.ssh/id_rsa.gitee  # !!一定记得执行这步.
ssh -T git@gitee.com  # 看是否通过ssh验证!!
>> Hi 菜市场(@One_PieceDC)! You've successfully authenticated, but GITEE.COM does not provide shell access.

git add .
git commit -m "测试ssh"
git remote add origin_ssh git@gitee.com:One_PieceDC/order.git  # - 此处的远程仓库地址就是ssh连接啦!!
git push origin_ssh main 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

image-20240508102002102

查看配置远程仓库地址

image-20240508102336456

# GIT版本控制

git关于版本控制的体现,以及本地or线上服务器的回滚操作(回滚过去,代码也会相应改变!!)

1> 在本地的git每次执行commit命令时, 都会生成一个提交记录, 如果执行git push也会将记录提交到代码仓库.
2> 以下命令可以在本地、线上执行, 以此来切换到各种版本!!

- 查看记录
  git log
  git reflog
- 回滚到指定版本
  git reset --hard fa1653b6cd5ed1ff12ef1acdf534e91b9b895604
1
2
3
4
5

image-20240508104653713

# 线上同步

(´・Д・)」

- 通过http连接从gitee仓库克隆代码
  yum install git
  git clone https://gitee.com/One_PieceDC/order.git

■ 配置gitee密钥!!/ssh连接
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.gitee
cat ~/.ssh/id_rsa.gitee.pub
将公钥配置到gitee上
"""
执行ssh-add ~/.ssh/id_rsa.gitee
若提示信息Could not open a connection to your authentication agent.
那么在该命令之前先执行 命令 ssh-agent bash
"""
ssh-add ~/.ssh/id_rsa.gitee
ssh -T git@gitee.com

- 通过ssh连接从gitee仓库克隆代码
  git clone git@gitee.com:One_PieceDC/order.git
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

我们本地想要通过SSH连接服务器, 每次连接都输入密码也觉得比较烦, 此时也可以使用秘钥的方式直接连接服务器

cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.Aliserver
# - 会让输入服务器的密码!上传的公钥内容在服务器的/root/.ssh/authorized_keys里!!
ssh-copy-id -i ~/.ssh/id_rsa.Aliserver.pub root@47.109.154.134  
ssh-add ~/.ssh/id_rsa.Aliserver
ssh root@47.109.154.134  # 不用输入服务器的密码啦!!
1
2
3
4
5
6

# ★★★总结(简略版)

对到目前所学的知识点,做一个归纳总结!! 上面都可以不看, 看这里就行!Hhhh

image-20240508140346901

◎ 本地配置gitee的ssh免密登陆
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.gitee  # - 一路回车即可  -f是为了指定名字
cat ~/.ssh/id_rsa.gitee.pub  # - ★ 将该公钥给gitee!!
ssh-add ~/.ssh/id_rsa.gitee  # !!一定记得执行这步.
ssh -T git@gitee.com

◎ 线上服务器配置gitee的ssh免密登陆
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.gitee
cat ~/.ssh/id_rsa.gitee.pub  # - ★ 将该公钥配置到gitee上
ssh-add ~/.ssh/id_rsa.gitee  # !! 若通过不了,则执行该命令之前先执行命令 ssh-agent bash
ssh -T git@gitee.com

◎ 在本地配置线上服务器的ssh免密登陆
cd ~/.ssh
ssh-keygen -t rsa -f id_rsa.Aliserver
# - 会让输入服务器的密码!上传的公钥内容在服务器的/root/.ssh/authorized_keys里!!
ssh-copy-id -i ~/.ssh/id_rsa.Aliserver.pub root@47.109.154.134  
ssh-add ~/.ssh/id_rsa.Aliserver  # !!
ssh root@47.109.154.134  # 棒! 不用输入服务器的密码啦!!

------ ------ ------

在gitee上创建仓库,拿到新建仓库的http地址和ssh地址!!
eg: 
  https://gitee.com/One_PieceDC/order.git
  git@gitee.com:One_PieceDC/order.git

------ ------ ------

本地项目,添加.gitignore文件!!
配置local_settings.py文件,以便实现线上环境和本地环境的隔离.
- [<进入本地项目的根目录>], 第一次需要执行的命令:
  git config --global user.name "菜市场"
  git config --global user.email "[email protected]"
  git init
  git add .
  git commit -m "第一次提交"
  """
  git remote add origin https://gitee.com/One_PieceDC/order.git
  git push origin main
  """
  # - 因为前面在本地配置了gitee的ssh免密登陆
  git remote add origin-ssh git@gitee.com:One_PieceDC/order.git
  git push origin-ssh main
- [<进入本地项目的根目录>], 往后提交代码只需执行命令:
  git add .
  git commit -m "xxxx"
  git push origin-ssh main
  
------ ------ ------

线上服务器,克隆代码 (可通过云服务器厂商提供的web地址登陆服务器,也可在本地通过终端的ssh工具登陆服务器!!)
- 你想将仓库里的项目克隆到哪个目录下,你就进入哪个目录 第一次拉取项目需要执行以下命令
  yum install git
  """
  git clone https://gitee.com/One_PieceDC/order.git  # origin指代远程的http地址
  """
  # - 因为前面在线上服务器上配置了gitee的ssh免密登陆
  git clone git@gitee.com:One_PieceDC/order.git  # origin指代远程的ssh地址
- 以后获取项目最新代码,只需[<进入项目根目录下>]
  cd order
  git pull origin main 

------ ------ ------

在本地或者线上服务器上进行项目的版本控制,回滚操作
- 查看记录
  git log
  git reflog
- 回滚到指定版本
  git reset --hard fa1653b6cd5ed1ff12ef1acdf534e91b9b895604
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

若ssh的形式 push、pull失败, 先执行下 ssh-add 相关命令试试!!

image-20240508194832657


worker
部署之线上运行

← worker 部署之线上运行→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式