Nginx uWsgi Django环境搭建
2019獨角獸企業重金招聘Python工程師標準>>>
由于一個監控項目(使用django開發)交接到所在項目組,需要了解python的web開發和環境搭建。
這里記錄環境的搭建流程,以及遇到的問題和處理方案。
環境信息: CentOS 6.6 (內網IP:100.84.73.45) Nginx 1.2.8 Python 2.6.6 Django 1.6 uwsgi 2.0.11.2
注意:Django1.6匹配的python最高版本是2.6,如果安裝太高版本的django,需要使用python2.6以上版本,否則安裝過程會報錯:invalid syntax
這里我的機器自帶了python2.6.6,就不介紹python的安裝了。
安裝pip
pip是python的包管理工具,我們使用pip進行python的管理
# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py # python get-pip.py安裝uWSGI
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。
- 使用pip安裝 uwsgi
- 測試uwsgi
創建一個test.py的測試文件
# pwd /home/test/django # touch test.py # vim test.pytest.py內容如下:
def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return "Hello World"- 啟動uwsgi
在瀏覽器中輸入:http://100.84.73.45:13010
uwsgi安裝和啟動正常。
安裝django
- 使用pip安裝 django
由于使用的是python2.6.6,因此需要安裝1.6版本的django。
安裝指定版本的django的方式如下:
# pip install -v django==1.6- 新建Django工程
- 使用uwsgi啟動django工程
在瀏覽器中輸入:http://100.84.73.45:13010
到此django安裝成功,并且和uwsgi結合成功。
- 補充信息
也可以使用如下命令啟動django工程
# pwd /home/test/django/MySite # uwsgi --http :13010 --module MySite.wsgi如果是單獨調試django,可以使用django自帶的簡單服務器進行。
# pwd /home/test/django/MySite # python manage.py runserver 0.0.0.0:13010安裝nginx
- 源碼安裝nginx
我們采用源碼方式安裝。 搜狐鏡像下載地址:http://mirrors.sohu.com/nginx/ 我選擇的是 1.2.8 版本
安裝步驟,可以看這里:http://xyuex.blog.51cto.com/5131937/1013414
- 配置nginx
nginx_django_unix.conf內容如下:
worker_processes 2;events {use epoll;worker_connections 1024; }http {include conf/mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;keepalive_timeout 65;gzip on;upstream django {#server 127.0.0.1:13010; # nginx使用tcp方式與uwsgi交互server unix:///home/test/django/MySite/MySite.sock; # nginx使用unix本地socket方式與uwsgi交互}server {listen 13000;server_name uwsgi_django;client_max_body_size 75M;location / {uwsgi_pass django;uwsgi_pass_header http;uwsgi_read_timeout 300;include conf/uwsgi_params;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}- 啟動uwsgi 和 nginx
在瀏覽器中輸入:http://100.84.73.45:13000
到此 nginx uwsgi django三個完成了結合。
過程中遇到的問題
uwsgi的交互方式
nginx與uwsgi有三種交互方式:http、tcp、unix本地sock http方式主要是利用nginx的反向代理功能。 TCP方式是ngix通過tcp方式和uwsgi交互。 unix本地sock是通過本地的sock文件進行交互。
- 如果使用本地sokc方式,uwsgi的啟動應該是
并且nginx的upsteam配置sock文件地址
- 如果是TCP方式,uwsig的啟動應該是
并且nginx的upsteam配置ip和端口
- 采用反向代理方式,uwsgi的啟動應該是
nginx的完整配置如下:
worker_processes 2;events {use epoll;worker_connections 1024; }http {include conf/mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;keepalive_timeout 65;gzip on;upstream django {server 127.0.0.1:13010;}server {listen 13000;server_name uwsgi_django;client_max_body_size 75M;location / {proxy_pass http://django; # 注意這里使用的是proxy_pass協議是http}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}轉載于:https://my.oschina.net/u/583362/blog/593896
總結
以上是生活随笔為你收集整理的Nginx uWsgi Django环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [LeetCode]题解(python)
- 下一篇: JMeter专题系列(二)录制脚本