#本文欢迎转载,转载请注明出处和作者。
之前的代码都是在开发机器写的,总不能直接就把开发机当作服务器转生产了。因此需要把代码upload到生产环境的服务器,然后启动服务,持续对外提供服务。
1、手工发布
最低效率的方式,就是按照开发环境机器安装过的安装包,在生产环境的服务器手动重新安装一遍,然后手工把代码打包拷贝到生产环境配置好的目录,把数据库在开发环境导出离线文件,然后到生产环境进行导入,然后启动服务。类似之前使用现成的apache、tomcat网站,使用linux服务器部署。
【实战演练】Linux操作系统05-用LAMP搭建网站zhuanlan.zhihu.com2、通过代码仓库发布
可以通过部署git或者SVN作为代码仓库服务器,然后客户端将代码提交给代码仓库,然后生成服务器也安装git或者SVN客户端,直接拉取代码,进行发布。
2.1安装SVN服务器
使用VisualSVN-Server-3.9.3-x64,双击安装即可。
SVN安装包下载地址www.visualsvn.com2.2创建项目代码仓库
2.3客户端仓库
注意,一般都是先checkout了目录,再开始创建django工程的。如果django工程已经创建,可以先将django工程项目里面的全部文件先剪切到其他目录,将目录checkout出来后,再剪切回来。
2.4导出项目依赖
pip3 freeze > requirements.txt
会生成一个本项目虚拟环境的第三方依赖包文件。
Django==1.11.27
mysqlclient==1.4.6
pytz==2019.3
2.5开发机代码提交
2.6部署生产服务器
可以参考前面的linux服务器安装文章。
【实战演练】Linux操作系统01-CentOS6安装zhuanlan.zhihu.comCentOS7自带python2.7,因为开发机器用的python3,项目也是用的python3进行开发的,所以需要升级。
另外yum源配置可以参考:
【实战演练】Linux操作系统04-配置yum源zhuanlan.zhihu.com2.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.comCentOS7可以修改为
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的数据库配置保持一致。
在开发机的数据库导出离线文件,
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地址加端口号,可以访问测试所有功能是否正常。