五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
NOTE:不使用nginx,只使用uwsgi+django也是可以实现WEB服务的。uwsgi也可以直接处理WEB请求。
第一步先解决uwsgi与django的桥接。解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的Web服务器。
第二步解决uwsgi与Nginx的桥接。通过nginx与uwsgi的桥接,打通nginx与django的连通,从而比较完美的实现django的部署。
环境介绍
安装uwsgi
<spanpalatino linotype new roman color:rgb>$ <spanpalatino linotype new roman color:rgb>export <spanpalatino linotype new roman color:rgb>LDFLAGS<spanpalatino linotype new roman color:rgb>=<spanpalatino linotype new roman color:rgb>"-Xlinker --no-as-needed"<spanpalatino linotype new roman color:rgb>$ pip install uwsgi </spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino>
测试uwsgi
# test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return "Hello World"
uwsgi --http :8001 --wsgi-file test.py
配置django
NOTE:
请保证你的django项目是正常使用的。可以使用
python manage.py runserver 0.0.0.0:8002
来测试一下你的django项目是否能正常跑起来。
注意: 编写文件时需要注意语句os.environ.setdefault。比如,如果你的项目为mysite,则你的语句应该是
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<spanpalatino linotype new roman color:rgb font-style:italic>#!/usr/bin/env python<spanpalatino linotype new roman color:rgb font-style:italic># coding: utf-8<spanpalatino linotype new roman color:rgb font-weight:bold>import<spanpalatino linotype new roman color:rgb font-weight:bold>os<spanpalatino linotype new roman color:rgb font-weight:bold>import<spanpalatino linotype new roman color:rgb font-weight:bold>sys<spanpalatino linotype new roman color:rgb font-style:italic># 将系统的编码设置为UTF8<spanpalatino linotype new roman color:rgb>reload<spanpalatino linotype new roman>(<spanpalatino linotype new roman>sys<spanpalatino linotype new roman>)<spanpalatino linotype new roman>sys<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>setdefaultencoding<spanpalatino linotype new roman>(<spanpalatino linotype new roman color:rgb>'utf8'<spanpalatino linotype new roman>)<spanpalatino linotype new roman>os<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>environ<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>setdefault<spanpalatino linotype new roman>(<spanpalatino linotype new roman color:rgb>"DJANGO_SETTINGS_MODULE"<spanpalatino linotype new roman>,<spanpalatino linotype new roman color:rgb>"mysite.settings"<spanpalatino linotype new roman>)<spanpalatino linotype new roman color:rgb font-weight:bold>from<spanpalatino linotype new roman color:rgb font-weight:bold>django.core.handlers.wsgi<spanpalatino linotype new roman color:rgb font-weight:bold>import<spanpalatino linotype new roman>WSGIHandler<spanpalatino linotype new roman>application<spanpalatino linotype new roman color:rgb>=<spanpalatino linotype new roman>WSGIHandler<spanpalatino linotype new roman>()</spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino>
连接django和uwsgi,实现简单的Web服务器。
uwsgi --http :8000 --chdir /home/work/src/sites/testdjango1/testdjango/mysite --module django_wsgi
最后:
参考、解释及其它
wsgi: WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。
关于WSGI协议看这里:WSGI
uWSGI: http://uwsgi-docs.readthedocs.org/en/latest/index.html uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
uwsgi: uwsgi同WSGI一样是一种通信协议,而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。
关于uwsgi协议看这里:The uwsgi protocol
有了uWSGI为什么还需要nginx?
nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。
参考文献:http://heipark.iteye.com/blog/1750970
环境介绍
配置uWSGI
<spanpalatino linotype new roman color:rgb font-weight:bold><uwsgi><spanpalatino linotype new roman color:rgb font-weight:bold><socket>:8077<spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></socket><spanpalatino linotype new roman color:rgb font-weight:bold><chdir>/home/work/src/sites/testdjango1/testdjango/mysite<spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></chdir><spanpalatino linotype new roman color:rgb font-weight:bold><module>django_wsgi<spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></module><spanpalatino linotype new roman color:rgb font-weight:bold><processes>4<spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></processes><spanpalatino linotype new roman color:rgb font-style:italic><!-- 进程数 --><spanpalatino linotype new roman color:rgb font-weight:bold><daemonize>uwsgi.log<spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></daemonize><spanpalatino linotype new roman color:rgb font-weight:bold></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></uwsgi></spanpalatino>
配置Nginx
<spanpalatino linotype new roman color:rgb font-weight:bold>server<spanpalatino linotype new roman>{<spanpalatino linotype new roman>listen<spanpalatino linotype new roman color:rgb>80<spanpalatino linotype new roman>;<spanpalatino linotype new roman>server_name<spanpalatino linotype new roman>www<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>you<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>com<spanpalatino linotype new roman>;<spanpalatino linotype new roman>access_log<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>home<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>work<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>var<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>test<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>logs<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>access<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>log<spanpalatino linotype new roman>;<spanpalatino linotype new roman>error_log<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>home<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>work<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>var<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>test<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>logs<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>error<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>log<spanpalatino linotype new roman>;<spanpalatino linotype new roman color:rgb>#charse<spanpalatino linotype new roman>t<spanpalatino linotype new roman>koi8<spanpalatino linotype new roman color:rgb>-<spanpalatino linotype new roman>r<spanpalatino linotype new roman>;<spanpalatino linotype new roman color:rgb>#access<spanpalatino linotype new roman>_log<spanpalatino linotype new roman>logs<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>host<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>access<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>log<spanpalatino linotype new roman>main<spanpalatino linotype new roman>;<spanpalatino linotype new roman>location<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>{<spanpalatino linotype new roman><strong>include</strong><spanpalatino linotype new roman>uwsgi_params<spanpalatino linotype new roman>;<spanpalatino linotype new roman>uwsgi_pass<spanpalatino linotype new roman color:rgb>127<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman color:rgb>0<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman color:rgb>0<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman color:rgb>1<spanpalatino linotype new roman color:rgb>:<spanpalatino linotype new roman color:rgb>8077<spanpalatino linotype new roman>;<spanpalatino linotype new roman>}<spanpalatino linotype new roman color:rgb>#error_page<spanpalatino linotype new roman color:rgb font-weight:bold>404<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>404<spanpalatino linotype new roman color:rgb font-weight:bold>.html<spanpalatino linotype new roman color:rgb>;<spanpalatino linotype new roman>#<spanpalatino linotype new roman color:rgb font-weight:bold>redirect<spanpalatino linotype new roman color:rgb font-weight:bold>server<spanpalatino linotype new roman color:rgb font-weight:bold>error<spanpalatino linotype new roman color:rgb font-weight:bold>pages<spanpalatino linotype new roman color:rgb font-weight:bold>to<spanpalatino linotype new roman color:rgb font-weight:bold>the<spanpalatino linotype new roman color:rgb font-weight:bold>static<spanpalatino linotype new roman color:rgb font-weight:bold>page<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>50x<spanpalatino linotype new roman color:rgb font-weight:bold>.html<spanpalatino linotype new roman>#<spanpalatino linotype new roman color:rgb font-weight:bold>error_page<spanpalatino linotype new roman color:rgb font-weight:bold>500<spanpalatino linotype new roman color:rgb font-weight:bold>502<spanpalatino linotype new roman color:rgb font-weight:bold>503<spanpalatino linotype new roman color:rgb font-weight:bold>504<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>50x<spanpalatino linotype new roman color:rgb font-weight:bold>.html<spanpalatino linotype new roman color:rgb>;<spanpalatino linotype new roman color:rgb font-weight:bold>location<spanpalatino linotype new roman color:rgb>=<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>50x<spanpalatino linotype new roman color:rgb font-weight:bold>.html<spanpalatino linotype new roman>{<spanpalatino linotype new roman>root<spanpalatino linotype new roman>html<spanpalatino linotype new roman>;<spanpalatino linotype new roman>}<spanpalatino linotype new roman color:rgb font-weight:bold>location<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>static<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>{<spanpalatino linotype new roman>alias<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>home<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>work<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>src<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>sites<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>testdjango1<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>testdjango<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>collectedstatic<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>;<spanpalatino linotype new roman>index<spanpalatino linotype new roman>index<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>html<spanpalatino linotype new roman>index<spanpalatino linotype new roman color:rgb>.<spanpalatino linotype new roman>htm<spanpalatino linotype new roman>;<spanpalatino linotype new roman>}<spanpalatino linotype new roman color:rgb font-weight:bold>location<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman color:rgb font-weight:bold>media<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>{<spanpalatino linotype new roman>alias<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>home<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>work<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>src<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>sites<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>testdjango1<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>testdjango<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>public<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>media<spanpalatino linotype new roman color:rgb>/<spanpalatino linotype new roman>;<spanpalatino linotype new roman>}<spanpalatino linotype new roman>}</spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino></spanpalatino>
Nginx+uWSGI+Django的实现方式
重启Nginx服务器,以使Nginx的配置生效。
nginx -s reload
重启后检查Nginx日志是否有异常。
启动uWSGI服务器
cd /home/work/src/sites/testdjango1/testdjango/mysite uwsgi -x djangochina_socket.xml
检查日志 uwsgi.log 是否有异常发现。
访问服务
基于上面的假设你的域名是www.you.com
因此,我们访问 www.you.com,如果发现程序与 单独使用Django启动的程序一模一样时,就说明成功啦!
关闭服务的方法
将uWSGi进程杀死即可。
一些建议
uWSG配置文件的进程数,可以根据实际情况分配。不要开得太大,否则机器可能会内存耗用太高。一般来说,对于一个小社区来说,4个进程已经足够了。
一般情况下,可以编写一下 stop.sh 脚本 来关闭uWSGI。
以上就介绍了五步教你实现使用Nginx+uWSGI+Django方法部署Django程序,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.
