python - django的项目要如何部署呢?
伊谢尔伦
伊谢尔伦 2017-04-18 10:09:27
[Python讨论组]

刚写了个项目,部署文章都太乱了,没头绪,求大神写好的文档。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(7)
ringa_lee

使用virtualenv+supervisor。
virtualenv用来创建单独的python执行环境,supervisor用来控制进程在后台运行。

ringa_lee

http://www.cnblogs.com/fnng/p... 可以去看一看

PHP中文网

Python 2.x: Virtualenv + Supervisor + Nginx + Gunicorn

Python 3.x: Viatuelenv + Circus + Nginx

黄舟

首先看你要部署的系统,如果是linux那可以选择的方式就比较多,可以使用uwsgi、gunicorn、flup,如果是Python3可以安装flup6的包。如果是windows系统的话,方式就稍微单一一些,可以使用flup、tornado、cherrypy来实现部署。当然,建议使用linux进行部署会方便些。

大家讲道理

pyvenv + Supervisor + uwsgi + Nginx
感觉题主是不太了解http服务器,可以去看一下有关的文章,会对各个工具等等有更深的了解
或者直接用runserver部署啊
逃......

阿神

看官方文档有直接说明
https://docs.djangoproject.co...
http://python.usyiyi.cn/djang...

天蓬老师

django的环境搭建,我折腾了2个星期,搜了N多的部署文章,因版本的不同,或说的不全等原因,很多文章并不能解决问题。
我搞了2个星期才搞定,能够理解楼主的状态
本回答旨在打造最详细的Django部署

我的部署环境: CentOS6.5+Python2.7+httpd2.4+Django1.10


0.准备工作

CentOS的yum源建议用阿里云,会比较方便
阿里云yum镜像官方教程如下:

1、备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、之后运行yum makecache生成缓存

基础安装:

yum -y install gcc make wget
yum -y install zlib-devel openssl-devel

*备注:不安装zlib-devel的话,在安装setuptools时会报错。不安装openssl-devel的话,在安装django时会报错。


1.安装python2.7

安装python

wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar xzf Python-2.7.12.tgz
cd Python-2.7.12/
./configure --prefix=/usr/local/python CFLAGS=-fPIC
make && make install

将python加入环境变量

export PATH=/usr/local/python/bin:$PATH
. /etc/profile

坑1:为什么不能用自带的python2.6?

Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3.
Django 1.6.x 支持 Python 2.6.X, 2.7.X, 3.2.X 和 3.3.X
Django 1.7.x 支持 Python 2.7, 3.2, 3.3, 和 3.4 (注意:Python 2.6 不支持了)
Django 1.8.x 支持 Python 2.7, 3.2, 3.3, 3.4 和 3.5. (长期支持版本 LTS)
Django 1.9.x 支持 Python 2.7, 3.4 和 3.5. 不支持 3.3 了
Django 1.10.x 支持 Python 2.7, 3.4 和 3.5.

我在centos6自带的python2.6直接pip install django,然后按照了1.10各种报错,懵逼了很长时间.
才知道,Django1.7及以上,不支持python2.6及以下版本了
建议用django1.7以上,因为差别还是挺大的。


2.setuptools和pip的安装

方法1,下载安装

wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz
tar xzf setuptools-28.3.0.tar.gz
cd setuptools-28.3.0/
python setup.py install

wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
tar xzf pip-8.1.2.tar.gz
cd pip-8.1.2/
python setup.py install

方法2,yum安装

yum install python-setuptools
yum install python-pip

3.安装apache

yum install apr apr-util 
yum install httpd httpd-devel

坑2:httpd-devel一定要装,否则mod_wsgi找不到模块,这块我卡了好长时间


4.安装mod_wsgi

yum install mod_wsgi

注意mod_wsgi.so是否被放在httpd/modules下面

chmod 755 /usr/local/httpd/modules/mod_wsgi.so

修改权限,yum会自动执行,如果其他安装方式要手动执行


5.安装Django

yum install django

完成后进入python,查看版本

import django
django.VERSION

在命令行创建项目,加入在root下

django-admin.py startproject mysite

6.配置Django
在mysite/mysite下的settings.py里:

import sys
sys.path.append('/root/mysite')

import os    
from django.core.wsgi import get_wsgi_application    
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OMMS.settings")  
application = get_wsgi_application()

坑3:前两句需要自己添加,后面的是Django自动生成的


7.配置httpd

编辑/usr/local/httpd/conf/httpd.conf文件,找到下面这句并取消注释:

#Include conf/extra/httpd-vhosts.conf

在LoadModule开头的段落下添加一行:

LoadModule wsgi_module modules/mod_wsgi.so

编辑/usr/local/httpd/conf/extra/httpd-vhosts.conf文件,将原来的配置全部注释掉,在末尾添加以下内容:

<VirtualHost *:80>
    DocumentRoot "/root/mysite/mysite"
    WSGIScriptAlias / "/root/mysite/mysite/wsgi.py"

    <Directory "/root/mysite/mysite">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

坑4:注意路径/root/mysite/mysite,这里是mysite(工程目录)里面的mysite(主APP目录)


完成

如果用Django自带的It works测试程序,还需要安装python之前,安装sqlite3

yum install sqlite-devel

大功告成

apachectl start

就可以看到Django部署的页面了

我摆弄部署时,很大参考了这篇博文
http://www.cnblogs.com/yestre...
但这博文缺了安装httpd-devel,而且莫名其妙还安装perl.
很多地方还是yum安装更方便一些


-本文写了大概两个小时

-如果有问题可以私信我
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号