将django项目部署在linux系统下nginx+uwsgi环境的云服务器上

nginx是当下比较流行的服务器,收到越来越多人的欢迎,django也是新兴的python的web框架,那么怎么把django项目部署到nginx上呢?

我的项目目录:

项目根目录:/opt/www/MyProject
---|MyProject
----------|__init__.py
----------|views.py
----------|wsgi.py
---|manage.py
---|uwsgi.ini

首先安装uwsgi:

pip install uwsgi

然后在项目与manage.py同级的目录下创建一个uwsgi.ini的空文件,该文件为本项目对应uwsgi服务器的应用配置文件,然后在文件中写入如下配置代码:

[uwsgi]
uid = 1000      ##用户组
gid = 1000      ##用户组

pythonpath=/opt/MyProject/        ##项目根目录
module=MyProject.wsgi            ##新建项目时自动创建的wsgi.py的位置
plugins=python                ##指定项目为python项目
processes = 32                ##进程数,这里为32
socket =127.0.0.1: 7777     ##与nginx的应用配置一致,是uwsgi与nginx进行通讯端口,这里为7777
vacuum=true
prio=20
master=true              ##服务器在主进程中运行,这个没有的话会在启动时出现警告
async=true
pidfile=/opt/logs/MyProject.pid    ##pid文件所在的位置,pid文件自己创建
logto=/opt/logs/MyProject.log     ##日志文件所在的位置,日志文件自己创建

然后就是nginx部分了。

首先安装nginx(这里一centos系统为例):

yum install nginx

然后找出nginx的启动配置文件的位置:

ps -ef | grep nginx

返回的nginx.conf即nginx启动配置文件,其所在路径即nginx启动配置文件所在的路径,修改nginx.conf文件:

user  www www;           ##linux系统的用户名
worker_processes auto;   ##工作进程
error_log  /www/wwwlogs/nginx_error.log  crit;   ##日志文件所在目录
pid        /www/server/nginx/logs/nginx.pid;     ##pid文件所在目录
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
		fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        ##access_log off;
        include /etc/nginx/sites-enabled/default;  ##nginx的站点配置目录

include /www/server/panel/vhost/nginx/*.conf;     ##关键点,指示nginx应用配置文件的位置
}

在 /www/server/panel/vhost/nginx/目录下创建本django对应nginx的应用配置文件,格式为*.conf,配置代码如下:

erver{
   listen   80;    ##默认HTTP端口
   server_name 00.11.222.75;          ##你的云服务器的ip地址

   access_log /var/log/nginx/access.log;         ##访问日志文件路径名,自己创建
   error_log /opt/logs/error.log error;             ##错误日志文件路径名,自己创建

   error_page 404 /404.html;
   #error_page 500 502 503 504 /50x.html

   root /opt/MyBlog/blog/Templates/;       ##项目HTML文件的保存目录
   location / {                          ##通过location连接nginx与uwsgi
       include uwsgi_params;         
       uwsgi_pass 127.0.0.1:7777;     ##与uwsgi通过socket进行通信,端口7777,于uwsgi配置一致
   }

}

启动uwsgi,在与项目manage.py同级目录下输入启动命令:

uwsgi uwsgi.ini

启动nginx:

sudo nginx

通过本地浏览器输入云服务器ip地址即可访问。

附:
流程(原理):web请求--->nginx代理--->uwsgi代理--->python项目


uwsgi启动:
uwsgi XX.ini
uwsgi停止:
sudo killall -9 uwsgi


nginx启动:
nginx
nginx停止:
nginx -s stop

猜你喜欢

转载自blog.csdn.net/swordboy_fire/article/details/81256929