Linux上 Django+Nginx+uwsgi部署网站

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40695895/article/details/80939022

这里只讲配置问题,Nginx和 uwsgi的下载请自行百度

在往下看之前,强烈建议大家先看文档,文档看不懂再来看本教程,因为毕竟每台机器的具体情况都不同,文档链接:
uwsgi:http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html
Nginx:https://nginx.org/en/docs/

假设已经下载好了 Nginx和 uwsgi

首先配置 uwsgi

在 Django的项目目录下建立一个 script文件夹,这里假设我的 Django项目目录是

/root/mysite/
那么建立的 script文件夹目录路径是

/root/mysite/script/
在 script文件夹里新建一个 uwsgi.ini文件,这个文件是 uwsgi启动时的配置文件

打开 uwsgi.ini并编辑,写入如下内容:

#声明此文件是 uwsgi配置文件
[uwsgi]

#Django的项目目录
chdir=/root/mysite/
#Django和 uwsgi的接口文件,生成 Django项目时会自动生成
wsgi-file=mysite/wsgi.py

#静态文件目录 执行 python manage.py collectstatic命令之后生成的文件夹,这个留到后面讲
static-map=/static=/root/mysite/static

#与 Nginx进行通信的地址 两个软件的这项配置必须相同 否则无法进行通信
socket=localhost:8080

#保存 pid和 log的文件路径
pidfile=/root/mysite/script/pid_uwsgi
daemonize=/root/mysite/script/log_uwsgi

#直接复制粘贴
master=true
processes=4
vacuum=true
thunder-lock=true
enable-threads=true
harakiri=30
post-buffering=4096

配置好 uwsgi后再配置 Nginx
首先打开 Nginx的配置文件
通过 yum apt-get等安装的 Nginx,配置文件在 /etc/nginx/conf.d 下
打开 /etc/nginx/conf.d 新建一个配置文件 命名随意 我的就叫 mysite.conf
vim打开 mysite.conf编辑
如果你要部署 https站点的话,配置类似下面这样:

server {
    listen 443 ssl;
    server_name 域名;

    ssl_certificate 证书路径;
    ssl_certificate_key 密钥路径;


    #access_log /var/log/nginx/access.log main;
    charset utf-8; 
    gzip on;
    gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;

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

    location / { 
        include uwsgi_params;
        uwsgi_connect_timeout 30; 
        uwsgi_pass localhost:8080  #uwsgi中的 scoket地址; 
    }   

    location /static/ {
        alias /root/mysite/static/ #静态文件路径;
        index index.html index.htm;
    }   

}

#http重定向到 https
server {
    listen 80;
    server_name 域名;
    return 301 https://$host$request_uri;
}

http站点的话,就只要去掉证书、密钥和 http重定向,并把监听端口改为 80, ssl去掉。

最后讲一讲,Django的静态文件问题,在生产环境中 Django是不提供静态文件服务的,所以要把 Django的静态文件全部提取到一个文件夹里让 Nginx来提供静态文件服务。

第一步:在setting.py里添加STATIC_ROOT=os.path.join(BASE_DIR, ‘/static’)
第二步:在 Django项目目录下执行 python manage.py collectstatic
然后项目目录下就会多出一个 static文件夹,Django项目所需的所有 静态文件都在这个文件夹下

到这里 Django+Nginx+uwsgi部署网站就已经完成了。

猜你喜欢

转载自blog.csdn.net/qq_40695895/article/details/80939022
今日推荐