Django Nginx+uwsgi Installation and Configuration
In the previous chapters, we usedpython manage.py runserverto run the server. This is only suitable for use in a test environment.
For a formally released service, we need a stable and continuous server, such as Apache, Nginx, lighttpd, etc. This article will use Nginx as an example.
You can also directly refer to:Python uwsgi Installation and Configuration
Install basic development packages
The installation steps on CentOS are as follows:
yum groupinstall "Development tools" yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
CentOS comes with Python 2.4.3, but we can also install Python 2.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
Install Python package management
easy_install packagehttps://pypi.python.org/pypi/distribute
Installation steps:
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
pip package:https://pypi.python.org/pypi/pip
The benefit of installing pip is that you can use pip list and pip uninstall to manage Python packages; easy_install doesn't have this feature, it only has uninstall.
Install uwsgi
uwsgi:https://pypi.python.org/pypi/uWSGI
Detailed explanation of uwsgi parameters:http://uwsgi-docs.readthedocs.org/en/latest/Options.html
pip install uwsgi uwsgi --version # 查看 uwsgi 版本
Test whether uwsgi is working properly:
Create a new test.py file with the following content:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
Then run in the terminal:
uwsgi --http :8001 --wsgi-file test.py
Enter http://127.0.0.1:8001 in your browser and check whether "Hello World" is output. If there is no output, please check your installation process.
Install Django
pip install django
To test whether django is working, run:
django-admin.py startproject demosite cd demosite python2.7 manage.py runserver 0.0.0.0:8002
Enter http://127.0.0.1:8002 in the browser to check whether Django is running normally.
Install Nginx
The installation command is as follows:
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
You can readNginx installation and configurationLearn more.
uwsgi configuration
uwsgiSupportedini、xmlwaitmany种Configuration Method,booktextwith ini isExample, In/etc/under the directoryNewuwsgi9090.ini,addFor exampleBottomConfiguration:
[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
Nginx configuration
Find the nginx installation directory (e.g., /usr/local/nginx/), open the conf/nginx.conf file, and modify the server configuration:
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;
}
}
You can readNginx installation and configurationLearn more.
After the setup is complete, run in the terminal:
uwsgi --ini /etc/uwsgi9090.ini & /usr/local/nginx/sbin/nginx
Enter http://127.0.0.1 in your browser, and you will see Django's "It work" page.