LNMP+uWSGI部署Django项目

部署环境说明:

本次部署在Linux上、CentOS7、LNMP(PHP7、MySQL5.6、Nginx)

首先安装pip工具:

 #下载pip
 wget https://bootstrap.pypa.io/get-pip.py
 #安装pip
 python get-pip.py

1、安装Django

  pip install Django

2、安装python操作MySQL工具

  pip install MySql-python
  yum install MySQLdb

3、安装uWSGI工具

  pip install uWSGI

4、创建Django项目

  #进入到项目所要安装的目录
  cd /home/wwwroot/python
  #创建django项目,项目名为:django_one
  django-admin.py startproject django_one
  #进入项目目录
  cd django_one
  #创建新的应用:hello
  django-admin.py startapp hello

5、配置uWSGI

    [uwsgi]

    socket = :8000
    
    # 项目目录绝对路径
    chdir           = /home/wwwroot/python/django_one
    
    # Django的wsgi文件
    module          = django_one.wsgi
    
    # 开启主进程
    # master
    master          = true
    
    # 一个主进程最多允许子进程数
    processes       = 4
    
    # 赋予权限
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true

6、配置nginx

    server
         {
              listen         80;
              server_name    jinkuang.com;
              charset UTF-8;
              access_log      /var/log/nginx/myweb_access.log;
              error_log       /var/log/nginx/myweb_error.log;
        
              client_max_body_size 75M;
        
              location / {
        
                  include uwsgi_params;
                  #uwsgi_pass 192.168.137.123:8000;
                  uwsgi_pass 127.0.0.1:8000;
                  uwsgi_read_timeout 2;
              }
        
              location /static {
                  expires 30d;
                  autoindex on;
                  add_header Cache-Control private;
                  alias /home/wwwroot/python/django_one/static;
              }
        
        }

7、重启nginx(lnmp)

    lnmp restart

8、启动uWSGI文件

    #进入到uwsgi文件目录
    cd /home/wwwroot/python/django_one
    #运行
    uwsgi --ini uwsgi.in
    #运行后出现如下结果说明部署成功:
    [uWSGI] getting INI configuration from uwsgi.ini
    *** Starting uWSGI 2.0.15 (64bit) on [Wed Sep 27 10:27:54 2017] ***
    compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-16) on 25 September 2017 15:49:07
    os: Linux-3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017
    nodename: localhost.localdomain
    machine: x86_64
    clock source: unix
    pcre jit disabled
    detected number of CPU cores: 1
    current working directory: /home/wwwroot/python/django_one
    detected binary path: /usr/bin/uwsgi
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
    chdir() to /home/wwwroot/python/django_one
    your processes number limit is 65535
    your memory page size is 4096 bytes
    detected max file descriptor number: 65535
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uwsgi socket 0 bound to TCP address :8000 fd 3
    Python version: 2.7.5 (default, Aug  4 2017, 00:39:18)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
    *** Python threads support is disabled. You can enable it with --enable-threads ***
    Python main interpreter initialized at 0xfb4d60
    your server socket listen backlog is limited to 100 connections
    your mercy for graceful operations on workers is 60 seconds
    mapped 363840 bytes (355 KB) for 4 cores
    *** Operational MODE: preforking ***
    WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0xfb4d60 pid: 17242 (default app)
    *** uWSGI is running in multiple interpreter mode ***
    spawned uWSGI master process (pid: 17242)
    spawned uWSGI worker 1 (pid: 17247, cores: 1)
    spawned uWSGI worker 2 (pid: 17248, cores: 1)
    spawned uWSGI worker 3 (pid: 17249, cores: 1)
    spawned uWSGI worker 4 (pid: 17250, cores: 1)