4.媒体宝-环境
由于代码需要放在服务器上才能让所有的功能正常运行,所以,开发测试时也需要将代码同步到服务器。可以用的代码同步方案有三种:
-
基于IDE的Deployment的功能实现
-
基于git + 手动pull的方案
-
基于git + hook + 自动git pull(模拟公司的持续集成&持续交付)
4.1 本地->Gitee
-
第一步:【本机】在自己电脑上安装git(一路next即可)
https://git-scm.com/
-
第二步:【gitee】在gitee上注册账号并创建仓库
-
city,vue项目
-
mtb,django项目
-
-
第三步:【本机】将代码push到gitee仓库
# 全局配置在git init初始化后操作 git config --global user.name "武沛齐" git config --global user.email "[email protected]"
cd 项目目录 git init //这个只做一次 初始化 git remote add origin https://gitee.com/zhang_zeng/mtb.git // 将仓库地址添加上 在git push origin master这个命令上以后就不用每次都输了
cd 项目目录 git add . git commit -m '提交信息' git push origin master
4.2 Gitee的Hook
在gitee的项目中可以设置hook,当你向项目提交代码时,他可以自动向某个地址发送请求,表示有新代码提交了。
4.3 部署脚本
在服务器上基于Flask开发一个持续集成的程序,监听gitee的提交,只要提交,就在服务器上去更新项目代码。基于git去gitee拉最新代码:
cd 项目上级目录 git clone git项目的网址 git clone https://gitee.com/wupeiqi/mtb.git
cd 项目目录 git pull origin master
所以需要提前:
-
在服务器上安装git
-
在服务器上安装python + flask
基于Flask编写的部署脚本:
import os import subprocess from flask import Flask, request app = Flask(__name__) @app.route("/hook", methods=["POST"]) def hook(): repo_dict = { "mtb": { # 如果是linux系统使用linux路径 /root/code "folder": r"C:\code", "install": "npm install" }, "city": { "folder": r"C:\code", "install": "pip3.9 install -r requirements.txt" } } # 获取项目名称:mtb city repo_name = request.json['project']['path'] # 放在服务器的那个目录? local_info = repo_dict.get(repo_name) # 判断请求的项目名是否是 mtb city if not local_info: return "error" # 项目的父级 folder要安装在服务器的项目路径 parent_folder_path = local_info['folder'] install_command = local_info['install'] # 项目的目录 project_file_path = os.path.join(parent_folder_path, repo_name) # git仓库地址 https://gitee.com/wupeiqi/mtb.git git_http_url = request.json['project']['git_http_url'] # 项目目录是否存在 if not os.path.exists(project_file_path): # cd c:\code # git clone https://gitee.com/wupeiqi/mtb.git subprocess.check_call('git clone {}'.format(git_http_url), shell=True, cwd=parent_folder_path) else: # cd c:\code\mtb # git pull origin master subprocess.check_call('git pull origin master', shell=True, cwd=project_file_path) # 安装依赖包 # cd c:\code\mtb # pip3.9 install -r requirements.txt 安装所有的需要的三方包 subprocess.check_call(install_command, shell=True, cwd=project_file_path) return "success" if __name__ == '__main__': app.run(host="0.0.0.0", port=9000, debug=True)
将文件放到服务器上
进入到此文件目录 执行文件 : python hook.py
中间会让填写gitee的账号密码
请求确保已完成的步骤:
-
gitee上设置了webhook
-
服务器安全组加上了9000端口
-
服务器上已安装git
-
服务器上已安装python + node.js
-
服务器上的python已安装flask框架
-
python生成requirements.txt文件
1、命令:pip install -r requirements.txt
2、操作步骤:
第一步:用pip freeze > requirements.txt自动生成requirement.txt
-
执行成功后,会自动生成requirement.txt文件。
-
第二步:更换环境,分享项目的同时,带上requirement.txt文件!方便其他人配置。
-
第三步:安装requirement.txt,执行命令即可一键安装完所需要的第三方库。
requirements.txt 文件是项目的依赖包及其对应版本号的信息列表,即记载你这个项目所安装的依赖。
作用:用来重新构建项目或者记录项目所需要的运行环境依赖,你从 GitHub上下载了一个 Python 项目,然后要运行这个项目,你需要安装和项目一样的依赖,这个时候 requirements.txt 文件就起作用,运行命令 pip install -r requirements.txt 来安装该项目所依赖的所有包(前提是这个项目有requirements.txt 文件)。
1、先安装pipreqs库
pip install pipreqs
2、在当前目录使用生成
pipreqs ./ --encoding=utf8 --force --encoding=utf8 :为使用utf8编码 --force :强制执行,当 生成目录下的requirements.txt存在时覆盖 . /: 在哪个文件生成requirements.txt 文件
4.4 数据库
local_settings.py git不会管理此文件 因为将此文件放到了gitignore文件中 用于本地开发
由于我们程序组要运行在服务器上,所以MySQL必须安在服务器上,才能正常运行,所以,接下来你需要做两步:
https://blog.csdn.net/qq_45415226/article/details/123031415
线上服务器数据库密码 set password for 'root'@'localhost'=password('Zeng9817.19941219');
-
服务器上安装MySQL & 创建用户 & 授权 & 创建数据库mtb
create database mtb DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create user mtb@'%' identified by 'Zeng9817.19941219'; grant all privileges on mtb.* to 'mtb'@'%'; flush privileges;
-
mtb项目连接数据库配置修改 & 重新初始化数据(local_settings.py)
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mtb', 'USER': 'mtb', # mtb 'PASSWORD': 'Zeng9817.19941219', # Zeng9817.19941219 'HOST': '47.92.2.110', # 47.92.2.110 'PORT': 3306, } } # 创建表 python manage.py makemigrations python manage.py migrate
注意:在服务器的安全组中一定要打开3306端口。
4.5 运行&开发
环境准备好后,接下来就需要让程序运行起来并测试,后续开发只需要做到一下几点:
-
在服务器上开启部署的Hook脚本。
-
在服务器上运行起来django程序
-
修改settings文件
ALLOWED_HOSTS = []
# 允许别人访问此服务器此项目 ALLOWED_HOSTS = [*]
手动在服务器上runserver启动django(修改文件自动重启)
-
# 进入到项目目录运行
python manage.py runserver 0.0.0.0:8000
-
在腾讯云开启8000端口
-
-
在服务器上运行vue程序
-
修改axios向后端发送请求的地址
127.0.0.1:xxxx 改为 124.222.193.204:8000
-
启动vue程序
npm run serve -- --port 80
-
后续开发时,编写 + git提交 hook会自动拉取。
小结
以后本地只做代码的编写,想要测试看效果,就需要将代码提交到gitee,由gitee和服务器hook脚本进行代码更新,这样就可以看到同步开发效果。
本质是:搞了一个线上开发机。
他与公司线上服务器的正式环境不同点有:
-
线上服务器Linux操作系统 vs windows操作系统
-
线上代码Nginx+uwsgi运行项目 vs 项目用django、npm自带的功能运行(性能差)
-
线上持续集成&交付用的jekins vs 用自己写的hook脚本
标签:git,媒体,项目,环境,gitee,准备,mtb,服务器,txt From: https://www.cnblogs.com/erhuoyuan/p/16581470.html