nginx+uwsgi+django多站点配置过程及注意事项
文章目录
服务器配置
概述
Django是现在最流行的网络框架之一。Python作为它的编程语言,多平台兼容性、易开发、速成是主要的优点。官网&文档
Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及一个IMAP / POP3代理服务器(读作 engine-x)。
Uwsgi可以理解为是Nginx和Django之间的桥梁。uwsgi本身也是web服务器,实现了wsgi协议和uwsgi协议。uwsgi文档
-A web server faces the outside world. It can serve files (HTML, images, CSS, etc) directly from the file system. However, it can’t talk directly to Django applications; it needs something that will run the application, feed it requests from web clients (such as browsers) and return responses.
-A Web Server Gateway Interface - WSGI - does this job. WSGI is a Python standard.
-uWSGI is a WSGI implementation. In this tutorial we will set up uWSGI so that it creates a Unix socket, and serves responses to the web server via the uwsgi protocol.
----摘自uwsgi官网介绍
总体原理:Nginx负责处理请求,由于nginx只能处理静态请求,如果是静态请求,就直接将页面返还给用户,如果是动态页面的请求,需要通过Uwsgi将请求传递给后端的django,django处理请求后再将页面通过uwsgi给nginx,渲染后传递到用户。
配置流程
以下在Debian/Deepin/Ubuntu系列机上进行
1. 安装nginx
sudo apt install nginx
2. 安装Django
需要python3的环境和pip3,如果有请忽略
sudo apt install python3
sudo apt install pip3
安装django
sudo pip3 install django
**Notes:**由于不同机器上默认python版本不同,如果机器上python3和python2同时存在的话,在运行python3的和pip命令的时候需要带着版本号,即使用python3和pip3,如果机器只有python3的话,则直接使用python和pip命令即可。
3. 安装uwsgi
pip3 install uwsgi
4. 关于nginx的配置
nginx的配置文件在/etc/nginx。
在/etc/nginx目录下,主配置文件为nginx_conf。 在末尾包含了 conf.d目录下的全部配置文件(版本不一样可能文件夹名称不同)
这里每个文件作为一个站点进行配置。如
#filename: mydjango.conf
upstream django {
server 127.0.0.1:8001;#for a web port socket;
#server unix:///home/wwwroot/mysite/mysite.sock; #文件sock用这
}
#configuration of server
server {
listen 80 ;
server_name xxxx.com ; #你的域名,如 server_name www.baidu.com;
charset utf-8;
client_max_body_size 75M;
access_log /home/wwwroot/mcloud/log/nginx_access.log; #配置访问该网址的log输出记录
error_log /home/wwwroot/mcloud/log/nginx_error.log;
location /static {
alias /home/wwwroot/mcloud/static; #静态地址。
}
location /media {
alias /home/wwwroot/mcloud/media; #直接在浏览器中就能访问。如mcloud.forever18.xyz/media
}
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}
}
如果想要配置多个站点,则最好为每个站点都编写一个格式类似的配置文件。
5. uwsgi的配置
根据这个官方教程配置一般都不不会有问题。
uwsgi官方配置地址
主要注意事项
1. 关于uwsgi配置文件。文件名uwsgi.ini
#filename: uwsgi.ini
[uwsgi]
socket=127.0.0.1:8001 #注意一致
chdir=/home/wwwroot/mcloud
module=mcloud.wsgi #工程文件中的.wsgi的地址
#the virtualenv full path Note add this will make a Internal Server Error!
#home=/root/uwsgi-env #虚拟环境使用
master=true
processes=4
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize=/home/wwwroot/mcloud/log/uwsgi.log # log地址
2. 关于启动uwsgi
uwsgi --ini uwsgi.ini # the --ini option is used to specify a file
可以写一个重启脚本
#filename:restartUwsgi.sh
killall -9 uwsgi
sleep 1
uwsgi -i uwsgi.ini