Django Nginx+uwsgi installation configuration
In the previous chapters we used python manage.py runserver to run the server. This is only suitable for use in a test environment.
For officially released services, we need a stable and sustainable server, such as apache, Nginx, lighttpd, etc. This article will use Nginx as an example.
Install the basic development package
The installation steps under 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 install 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
Install Python package management
easy_install package https://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 advantage of installing pip is that you can manage Python packages through pip list and pip uninstall. easy_install does not have this function, only 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 normal:
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 it in the terminal:
uwsgi --http :8001 --wsgi-file test.py
Browse Enter: http://127.0.0.1:8001 into the server and check whether there is "Hello World" output. If there is no output, please check your installation process.
Install Django
pip install django
Test whether django is normal, run:
django-admin.py startproject demosite cd demosite python2.7 manage.py runserver 0.0.0.0:8002
Enter in the browser: http://127.0.0.1:8002, check django Whether it 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 read Nginx installation configuration to learn more.
uwsgi configuration
uwsgi supports ini, xml and other configuration methods. This article takes ini as an example. Create a new uwsgi9090.ini in the /ect/ directory and add the following configuration:
[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 (such as: /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 read Nginx installation configuration to learn more.
After the setting is completed, run in the terminal:
uwsgi --ini /etc/uwsgi9090.ini & /usr/local/nginx/sbin/nginx
Enter in the browser: http://127.0.0.1, you can see "It work" of django.