Konfigurasi pemasangan Django Nginx+uwsgi


Dalam bab sebelumnya kami menggunakan python manage.py runserver untuk menjalankan pelayan. Ini hanya sesuai untuk digunakan dalam persekitaran ujian.

Untuk perkhidmatan yang dikeluarkan secara rasmi, kami memerlukan pelayan yang stabil dan mampan, seperti apache, Nginx, lighttpd, dll. Artikel ini akan menggunakan Nginx sebagai contoh.


Pasang pakej pembangunan asas

Langkah pemasangan di bawah Centos adalah seperti berikut:

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

CentOS disertakan dengan Python 2.4.3, tetapi kami boleh memasang Python2. 7.5:

cd ~
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar xvf Python-2.7.5.tar.bz2
cd Python-2.7.5
./configure --prefix=/usr/local
make && make altinstall

Pasang pengurusan pakej Python

pakej mudah_pasang https://pypi.python.org/pypi/distribute

Langkah pemasangan:

cd ~
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
tar xf distribute-0.6.49.tar.gz
cd distribute-0.6.49
python2.7 setup.py install
easy_install --version

pakej pip: https://pypi.python.org/pypi/pip

Kelebihan memasang pip ialah anda boleh menguruskan pakej Python melalui senarai pip dan nyahpasang pip tidak mempunyai fungsi ini, hanya nyahpasang


Pasang uwsgi

uwsgi: https://pypi.python.org/pypi/uWSGI

Penjelasan terperinci tentang parameter uwsgi: http://uwsgi- docs.readthedocs.org/en/latest/Options .html

pip install uwsgi
uwsgi --version    #查看 uwsgi 版本

Uji sama ada uwsgi adalah normal:

Buat fail test.py baharu dengan kandungan berikut:

def application(env, start_response):
	start_response('200 OK', [('Content-Type','text/html')])
	return "Hello World"

Kemudian jalankannya di terminal:

uwsgi --http :8001 --wsgi-file test.py

Semak imbas Masukkan: http://127.0.0.1:8001 ke dalam pelayan dan semak jika terdapat output "Hello World" Jika tiada output, sila semak anda proses pemasangan.


Pasang Django

pip install django

Uji sama ada django adalah normal, jalankan:

django-admin.py startproject demosite
cd demosite
python2.7 manage.py runserver 0.0.0.0:8002

Masukkan dalam penyemak imbas: http://127.0.0.1:8002, semak django Sama ada ia berjalan seperti biasa.


Pasang Nginx

Arahan pemasangan adalah seperti berikut:

cd ~
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx-1.5.6 \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

Anda boleh membaca konfigurasi pemasangan Nginx untuk mengetahui lebih lanjut.


konfigurasi uwsgi

uwsgi menyokong ini, xml dan kaedah konfigurasi lain Artikel ini mengambil ini sebagai contoh. Cipta uwsgi9090.ini baharu dalam direktori /ect/ dan tambahkan konfigurasi berikut:

[uwsgi]
socket = 127.0.0.1:9090
master = true         //主进程
vhost = true          //多站模式
no-site = true        //多站模式时不设置入口模块和文件
workers = 2           //子进程数
reload-mercy = 10     
vacuum = true         //退出、重启时清理文件
max-requests = 1000   
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid    //pid文件,用于下面的脚本启动、停止该进程
daemonize = /website/uwsgi9090.log

Konfigurasi Nginx

Cari direktori pemasangan nginx (seperti: /usr/local/ nginx/), Buka fail conf/nginx.conf dan ubah suai konfigurasi pelayan:

server {
        listen       80;
        server_name  localhost;
        
        location / {            
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9090;              //必须和uwsgi中的设置一致
            uwsgi_param UWSGI_SCRIPT demosite.wsgi;  //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
            uwsgi_param UWSGI_CHDIR /demosite;       //项目根目录
            index  index.html index.htm;
            client_max_body_size 35m;
        }
    }

Anda boleh membaca konfigurasi pemasangan Nginx untuk mengetahui lebih lanjut.

Selepas tetapan selesai, jalankan dalam terminal:

uwsgi --ini /etc/uwsgi9090.ini &
/usr/local/nginx/sbin/nginx

Masukkan dalam penyemak imbas: http://127.0.0.1, anda boleh melihat "Ia berfungsi" django.