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