3。1。2 安装Git
开发人员第一次配置项目环境需确保已经安装Git:
sudo apt-get install git
Git是一个十分强大的版本控制系统,一旦我们修改了某个文件出现错误,可以立即恢复上一个版本的状态。特别在多人开发项目时,可以创建多个分支,并行地开发。但也要注意提交时文件的修改,以避免冲突。
clone代码到本地
注意先配置好SSHkeys。从远程初始化代码库到本地:
git clone https://github。com/NJUST-FishTeam/NJUST_OnlineJudge_M6。git
3。1。3 配置虚拟开发环境virtualenv
开发过程中,使用virtualenv来统一项目组件的版本号,同时隔离开发环境的软件版本和本机的版本。python的virtualenv用来隔离不同应用的环境。假设开发的时候遇到你的应用A需要一个包的Version 1,而应用B需要同一个包的Version 2。如果你直接在整个目录下进行更新,就会导致包出错。virtualenv可以创建一个自己的安装目录,不与其他virtualenv环境重叠。
安装virtualenv:论文网
sudo apt-get install python-virtualenv
创建初始虚拟环境:
virtualenv venv
3。1。4 日常开发流程
每次开发前需要进入虚拟开发环境:
source venv/bin/activate
从Git远程代码库上拉取远程,更新本地代码,与远程同步:
git pull origin master
进入自己的Git开发分支:
git checkout dev_id
提交自己的修改:
git add
git commit –m “XXX”
每天工作完成,或者一个阶段工作完成,请及时将代码推送到自己的分支上去:
git push origin dev_id
3。2 使用etcc进行配置文件管理
代码位于:https://github。com/NJUST-FishTeam/etcc clone下来,按照上面的Readme进行安装。 在工程目录下,在进入venv开发环境下。
3。2。1 安装
pip install -r requirements。txt
3。2。2 部署运行
修改api/config。py中STORE_PATH的值,表示存储配置文件的路径,修改到config目录下:
STORE_PATH = '/home/<用户名>/<目录>/etcc/config/'
运行如下命令,进行部署:
gunicorn -b 0。0。0。0:8009 api。app
测试方法进入http://0。0。0。0:8009/services/web2
{"status": "success", "count": 2, "data": ["production", "dev"]} 表示配置正确。
3。2。3 加载MySQL配置
进入Judge代码目录下,打开settings。py,30行左右能看到:
if 'test' not in sys。argv:
try:
mysql_setting = requests。get(
'http://127。0。0。1:8009/services/mysql-01/configures/production/')。json()['data']
except Exception, e:
print 'Getting configures failed, maybe etcc is not running。'
raise
按照这个url里面的格式,在etcc/config目录下创建mysql-01/production。json。json文件请按照原先config/web2目录下的类似,按照后面的代码设置成自己的USER,HOST,PASSWORD
DATABASES = {
'default': {
# Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'。
'ENGINE': 'django。db。backends。mysql',
# Or path to database file if using sqlite3。