如何部署一个好的django项目到Centos服务器上面去了,下面来记录一下

1:将项目拷贝到Centos服务器上,不管是xftp,还是scp,还是lrzsz,看自己的爱好了,我这里用的是xftp

(xftp和xshell配合起来食用,效果更佳哦)

2:这里我们将开发的好的study项目压缩包上传到服务器的/op/test目录下面

django centos django centos部署方案_django


3:解压缩,放到上一级目录,解压地址看自己爱好

unzip test.zip  ../

4:新建一个虚拟环境,专门用来运行此项目,这里我们用ven3来做试验

[root@localhost opt]# virtualenv --python=python  ven3

5:激活一下虚拟环境

[root@localhost opt]# source  /opt/ven3/bin/activate

6:接下来就是解决study项目运行所需的模块依赖
在开发电脑上面执行如下命令

#将所需安装包导出到一个文件,服务器安装此文件就可以安装物理机所需的依赖啦
pip3 freeze > requirements.txt

上传至linux服务器
在Centos服务器的虚拟环境中,安装此文件即可

如果没有此模块依赖文件,那么就手动解决吧,。。。。
此时你要注意
python3 manage.py runserver 这个命令,并不是让你启动django项目的!!!
因为此命令,调用的是python 内置的wsgiref单机socket模块,性能低下,单进程单线程。。。
7:在Centos服务器上面执行

pip3  install  -r  ./requirements.txt

ps:如果不想用这个快捷办法安装所有依赖模块,那么就只能用老办法,启动项目然后看对应报错信息,然后再一个个安装依赖哦,不推荐

查看一下我的虚拟环境已经安装好的所以依赖包

django centos django centos部署方案_数据库_02

8:启动项目,因为项目需要用到数据库mysql,但是我们还没有安装,所以会报错,安装一下

#缺少mysql,因此需要安装mariadb,且启动
(ven3) [root@ localhost study]# yum install mariadb-server  mariadb -y

ps:mariadb-server 就是mysql的兼容版本,性能更好。。。
9:安装完了之后,由于没有对于的数据库和表,所以需要手动建立一下数据库和导入对应的表

#必须先登录数据库再建立
(ven3) [root@ localhost study]# mysql -u  root  -p
create  database study;
show  databases;
use  study;
show  tables;

10:手动建好数据库后,就需要导入数据表了

我的是window10,所以执行如下操作就可以了生成

django centos django centos部署方案_数据库_03


django centos django centos部署方案_mysql_04


mac电脑可以执行如下命令

#将本地所有数据库导入到一个alldb.sql,可以根据需要只导出自己需要的数据库
mysqldump  -uroot -p  --all-databases   >  alldb.sql 
#-d 参数是只导出表结构,不要表中的数据
mysqldump -uroot -p123 -d study > study .sql     #用它
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql   #实例代码

11:上传到Centos服务器,执行此命令
如果导入报错,可能是数据库服务没有启动,启动mariadb数据库

(ven3) [root@ study]# systemctl start mariadb

12:发送此alldb.sql文件,给Centos机器,再进行数据导入
就是将SQL文件,通过lrzsz、scp、xftp等方式,发送此文件,给Centos服务器

#导入数据库表结构
mysql -uroot -p  study  <  /opt/study.sql   #指定数据库导入,否则会报错找不到数据库

我的导入完毕,查询一下,生成了对应的很多张表

django centos django centos部署方案_mysql_05


13:启动项目进行测试

python3  study/study/manage.py  runserver  0.0.0.0:8888

ps:注意检查修改settings.py中的allowed_host字段设置和数据库连接设置密码哦,否则会启动失败报错

发现报错了
用python3连接MySQL数据库出现问题“AttributeError: ‘str‘ object has no attribute ‘decode‘“解决办法

修改mysql源码,原因是python3不支持python2的编码格式导致的

django centos django centos部署方案_django_06

django centos django centos部署方案_centos_07


将145,146代码进行注释就可以了

再次启动,最后效果图

django centos django centos部署方案_centos_08


大功告成~~~~~