Nginx + Gunicorn + Django 部署小记

这段时间在用Django开发一个论坛,打算做一个Cocoa开发者社区。这几天在学习如何部署,正好前段时间UCloud送了三个月主机,可以拿来练练手。VPS用的64位的Ubuntu 12.04,折腾两天总算走通了,赶忙记录下来...

apt-get
服务器拿到手后第一件事就是更新apt-get,要换源什么的自己搜一大堆。之前因为系统不小心选成了Ubuntu 10.04了,遇到一大堆问题,后来换到12.04一切顺利。

apt-get update
pip
pip还是建议更换源,速度是飞一般的感觉。具体方法可以看看我之前介绍的那篇文章《Pythoner的福利,豆瓣的PyPI源》

sudo apt-get install python-pip
Django
Django不用说肯定是用pip装,我一般是用的最新版,这样就可以了。

sudo pip install django
Nginx
首先给默认的Nginx配置备个份,这是好习惯。目录位于/etc/nginx/sites-available/default

cp /etc/nginx/sites-available/default default.bak
然后Vim编辑

 代码如下 复制代码

vim /etc/nginx/sites-available/default
server {
        listen   80;

        server_name www.111cn.net;
        access_log  /var/log/nginx/isaced.log;

        location / {
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /static/ {
                root /data/isaced; #Django项目所在目录
        }

以上是最简单的Nginx配置,目的是为能跑起来就行,更多其他详细配置还请参照其他文章。

Gunicorn
Gunicorn是一个朋友(CloverStd)推荐的,一个开源Python WSGI UNIX的HTTP服务器,Github仓库地址在这,传说速度快(配置快、运行快)、简单,默认是同步工作,支持Gevent、Eventlet异步,支持Tornado,官方有很详细的文档可以参阅。

需要在你的Django项目的settings.py中的INSTALLED_APPS加入:gunicorn

gunicorn --worker-class=gevent isaced.wsgi:application
•--worker-class
指定工作方式,这里我用的gevent
如果提示You need gevent installed to use this worker则表示你还没有安装gevent。
•isaced.wsgi:application
这里是指你的项目名,在Django创建项目的时候会自动生成对应名字文件夹中的wsgi.py,这里就是指的它。
nohup
nohup是一个Linux命令,用来不挂断地运行某条命令。这里我们用它来执行gunicorn,来保持gunicorn进程不会被挂断。

nohup gunicorn --worker-class=gevent NSLoger.wsgi:application -b 127.0.0.1:8000&
--worker-class来指定工作方式为gevent,-b指定地址和端口号。

注意:在尾部加上&(and)字符表示后台运行

执行这条命令后可以用ps命令查看进程,就能看到gunicorn了~

Start
好了,以上就是整个服务器的配置了。然后我们重启下Nginx,刷新页面就能看到你的Django App了。

sudo service nginx restart
一篇小白的部署日记就到这里了,如有什么错误的地方还请各位大大指正!

时间: 2024-09-20 00:57:13

Nginx + Gunicorn + Django 部署小记的相关文章

Nginx+Gunicorn+Django配置时出现“Bad Request (400)”解决方法

配置Nginx+Gunicorn+Django时,发现所有请求都是返回"Bad Request (400)". 最开始,很直观地想到是Django的settings.py中配置的ALLOWED_HOSTS,检查了一下我的配置已经为:ALLOWED_HOSTS = ['*']表示允许所有的host.注:如果DEBUG=True,则不检查request header中的HTTP_HOST:只有关闭DEBUG模式才有这个检查. 这样的情况下,我就很奇怪了~~ 后来找了好一阵子才忽然发现,我用

Django+Nginx+uwsgi的部署

先决条件: nginx(>0.8):uwsgi:django: flup 下载地址: wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz 安装: sudo apt-get libxml2-dev python-dev flup和django   都是用 python setup.py install tar zxvf uwsgi-0.9.9.2.tar.gz cd uwsgi-0.9.9.2 make -f Makefil

django-谁能帮帮我,Django部署问题,nginx和uWSGI

问题描述 谁能帮帮我,Django部署问题,nginx和uWSGI 测试uWSGI是否正常在django项目的根目录下创建test.py文件,添加源码如下: test.py def application(env start_response): start_response('200 OK' [('Content-Type''text/html')]) return [""Hello World""] # python2 #return [b""

Ubuntu Nginx uwsgi django 初试

/************************************************************************************** * Ubuntu Nginx uwsgi django 初试 * 说明: * 最近打算通过Python搭建一个数据收集的网站,先做一个搭建测试. * * 2016-8-5 深圳 南山平山村 曾剑锋 ***************************************************************

服务器-请教各位大神关于django部署的问题

问题描述 请教各位大神关于django部署的问题 各位大神,我把django部署在阿里云的服务器上面,admin页面一直提示404错误, 解决方案 向各位大神请教个问题 解决方案二: 出现这种情况,通常是文件urls.py中的urlpatterns出了问题,你将 url(r'^admin/', include(admin.site.urls)), 修改成 url(r'^admin$', include(admin.site.urls)), 再测试一下看看

nginx+uwsgi+django中的uwsgi.ini配置问题

问题描述 nginx+uwsgi+django中的uwsgi.ini配置问题 最近配置了nginx+uwsgi+django,其中项目目录下我新建了uwsgi.ini配置文件 [uwsgi] socket = 127.0.0.1:8088 master = true pidfile = /tmp/uwsgi.pid processes = 8 chdir = /home/test daemonize=/home/log/uwsgi.log module = test.wsgi:applicati

免费SSL安全证书Let's Encrypt申请及Nginx WEB站点部署HTTPS

如今,尤其是购物类.外贸类网站越来越多的需要将站点安装SSL证书,实现HTTPS网址格式,一来体现网站的数据安全性,二来主流需求且对于搜索引擎有一定的帮助(只是听说,应该不至于),不过对于中文类网站来说目前使用SSL安全证书还不是很普遍,不过后面肯定也会流行起来的. 毕竟互联网的资源是丰富的,老蒋在之前的博客文章中也有介绍过多个免费SSL安全证书资源,比如WoSign,StartSSL,UK2提供的Comodo PositiveSSL免费证书,这也包括在这篇文章需要分享的Let's Encryp

Django Nginx Gunicorn Centos7 环境部署,将项目上线

序言:相信很多人遇到了这样的问题,将自己的django项目完成后,准备部署到Linux上,遇到了很多的麻烦,网上的教程大多数使用python2的django项目,一旦用于python3后,就会出很多的bug.本教程详细描述python3 Django 1.11项目上线的详细过程 创建一个虚拟环境 cd /home/ mkdir djangoproject cd ./djangoproject/ python -m venv djangoprojectenv 其中 python -m venv x

如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)

因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题不太大. nginx分前后两级,uwsgi配置要作相应更改,django的setting需要变量登陆网址. 这样,在正式网站访问二级目录,测试环境仍然可以根目录访问. nginx_front: server { listen 80; server_name localhost; location /