django项目转pyc_【实战演练】Python+Django网站开发系列13-代码发布生产环境

本文介绍了如何将Python Django项目从开发环境部署到生产环境,包括手工发布和通过代码仓库(如SVN)发布的步骤。涉及安装SVN服务器、创建代码仓库、导出项目依赖、提交代码、升级Python、安装MySQL、导入数据库、安装SVN客户端、启动服务等关键环节。
摘要由CSDN通过智能技术生成

#本文欢迎转载,转载请注明出处和作者。

之前的代码都是在开发机器写的,总不能直接就把开发机当作服务器转生产了。因此需要把代码upload到生产环境的服务器,然后启动服务,持续对外提供服务。

1、手工发布

最低效率的方式,就是按照开发环境机器安装过的安装包,在生产环境的服务器手动重新安装一遍,然后手工把代码打包拷贝到生产环境配置好的目录,把数据库在开发环境导出离线文件,然后到生产环境进行导入,然后启动服务。类似之前使用现成的apache、tomcat网站,使用linux服务器部署。

【实战演练】Linux操作系统05-用LAMP搭建网站​zhuanlan.zhihu.com
【实战演练】Linux操作系统07-用tomcat搭建网站​zhuanlan.zhihu.com

2、通过代码仓库发布

可以通过部署git或者SVN作为代码仓库服务器,然后客户端将代码提交给代码仓库,然后生成服务器也安装git或者SVN客户端,直接拉取代码,进行发布。

2.1安装SVN服务器

使用VisualSVN-Server-3.9.3-x64,双击安装即可。

SVN安装包下载地址​www.visualsvn.com

2.2创建项目代码仓库

5aed1a80ec5e7a1c192391a4b8029848.png

946e89ec5bc0527207186aeec9f73b01.png

58eceb79c1e8dbedc5d3e1f133c5379a.png

f22d677b0b17ed7a8db0f459a2797273.png

914b4e1e615f11833dc89a7549a3b4b2.png

2.3客户端仓库

注意,一般都是先checkout了目录,再开始创建django工程的。如果django工程已经创建,可以先将django工程项目里面的全部文件先剪切到其他目录,将目录checkout出来后,再剪切回来。

2bcef53759b9ed696011a5522b251140.png

3ee3fe7e7c35a003d397f0e3301c3ba5.png

2.4导出项目依赖

pip3 freeze > requirements.txt

会生成一个本项目虚拟环境的第三方依赖包文件。

Django==1.11.27
mysqlclient==1.4.6
pytz==2019.3

2.5开发机代码提交

23b4a358fba55e0b7cf15dca02a5e68b.png

577e4356f7017ea0db60c52e5fa16bf7.png

490d2a82c3a9a8d3fd1c428088743c73.png

2.6部署生产服务器

可以参考前面的linux服务器安装文章。

【实战演练】Linux操作系统01-CentOS6安装​zhuanlan.zhihu.com
【实战演练】Linux操作系统02-CentOS7安装​zhuanlan.zhihu.com

CentOS7自带python2.7,因为开发机器用的python3,项目也是用的python3进行开发的,所以需要升级。

261e9132233147f579190688c86bee1a.png

另外yum源配置可以参考:

【实战演练】Linux操作系统04-配置yum源​zhuanlan.zhihu.com

2.6.1CentOS7升级python2.7至python3

yum install python36

查看是否升级成功

python -V
Python 2.7
/usr/bin/python3.6 -V
Python 3.6.8

还需要修改环境变量

cd /usr/bin/
ll |grep python
mv /usr/bin/python  /usr/bin/python.bak
ll |grep python
ln -s /usr/bin/python3.6 /usr/bin/python

重新查看python版本

python -V
Python 3.6.8

升级后,yum不能正常使用,需要修改配置,编辑yum配置文件配置文件,将第一行记录#!/usr/bin/python改为

vim /usr/bin/yum 
#!/usr/bin/python2.7

以及修改libexec配置文件,将第一行记录#!/usr/bin/python改为

vim /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7

2.6.2安装mysql

可以参考之前的文章:

【实战演练】Linux操作系统06-Mysql5.7安装​zhuanlan.zhihu.com

CentOS7可以修改为

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

执行过程有报错,发现vi /usr/bin/yum-config-manager也要修改第一行为python2.7

#!/usr/bin/python2.7 -tt

并且需要补充安装一下mysql-devel

yum install mysql-devel

手动创建数据库,记得要与django里面的setting.py的数据库配置保持一致。

在开发机的数据库导出离线文件,

19194e4b08c8096ab2f3382c3d2697ca.png

c6109006ba1fb6ef4712934b92d457ef.png

linux可以使用如下命令导出

mysqldump -u dbuser -p dbname > dbname.sql

上传离线文件到生产环境机器目录,登录mysql,导入使用source命令导入即可。

mysql -u root -p
create database stumgr default character set utf8 collate utf8_bin;
use stumgr
source /root/software/stumgr.sql

2.6.3安装SVN客户端

rpm -qa subversion
yum remove -y subversion
yum install -y subversion
svnserver --version

2.6.4checkout代码

svn checkout http://10.1.30.17/svn/school

(安装mysqlclient还需要下载一些依赖)

yum install gcc
yum install python3-devel

然后生产机进入checkout的工程目录,根据requirement.txt文件,批量安装第三方库。

pip3 install -r requirements.txt

然后就可以进入django项目的工程目录,启动服务了。

python manage.py runserver 0.0.0.0:8000

注意,linux通过远程访问,打开的服务,在远程会话结束后,可能会关闭。

可以通过nohup &的方式后台保持运行。

nohup python manage.py runserver 0.0.0.0:8000 &

如果其他机器还是无法访问,请检查生产机器防火墙是否关闭/配置。

另外django项目/school/school/里面的settings.py,有一项allowhost需要放通访问,'*'代表允许所有访问。

ALLOWED_HOSTS = ['*']

通过IP地址加端口号,可以访问测试所有功能是否正常。

b951353b23eae51730477fc0b976aa41.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值