·

Djano云服务器部署 uwsgi+nginx+https部署

Published at 2024-05-15 10:46:48Viewed 347 times
Professional article
Please reprint with source link

Django启动服务器的命令runserver,其实也是启动了一个自带的uwsgi服务。如果想要一直在后台不停的运行django项目,需要部署uwsgi服务器。

uwsgi安装官方文档:

安装uWSGI — uWSGI 2.0 文档 (uwsgi-docs-zh.readthedocs.io)

可以直接用pip安装uwsgi:

pip install uwsgi

在django项目根地址,即跟manage.py同目录下新建配置文件uwsgi.ini,如:mysite1/uwsgi.ini

uwsgi.ini必须以[uwsgi]开头,内容如下:

[uwsgi]
chdir=/mysite1
module=mysite1.wsgi:application
socket=127.0.0.1:8000
master=True
pidfile=uwsgi.pid
vacuum=True
max-requests=5000
daemonize=uwsgi.log

chdir为django项目根地址,socket为django启动服务器的ip地址,daemonize为日志地址。注意,每个django项目中自动生成一个mysite1/wsgi.py文件。

接下来cd 到 uWSGI 配置文件所在目录,执行以下代码即可:

uwsgi --ini uwsgi.ini

uWSGI的运行说明

  1. 无论是启动还是关闭,都要执行ps aux|grep 'uwsgi’确认是否符合预期
  2. 当uwsgi启动后,当前django项目的程序已变成后台守护进程,在关闭当前终端时此进程也不会停止
  3. 启动成功后,进程在后台执行,所有日志均输出在配置文件所在目录的uwsgi.log
  4. Django中代码有任何修改,都需要重启uwsgi(重启即为先关闭,再开启)

配置好uwsgi服务后,还需要进一步配置nginx服务器,原因见为什么有了uwsgi 还要 nginx 服务器?Nginx服务器反向代理。为了更高的加密性,我们可以使用nginx配置HTTPS协议。以下我们以腾讯云服务器为例,通过nginx配置HTTPS:

首先找到/etc/nginx/conf.d,然后创建新文件django_nginx.conf

sudo vim django_nginx.conf

接下来输入以下设置

# 这种写法比较方便配合负载均衡
upstream backend {
	# 这里的IP端口即Django项目的IP端口
    server 127.0.0.1:8000;
    # 如果uwsgi使用的本地文件,此处写法参考
    # server unix:/path/to/your/mysite/mysite.sock;
}
server {
     listen 443 ssl;
     autoindex on;
     client_max_body_size 1024m;
     #请填写绑定证书的域名
     server_name example.com; 
     #请填写证书文件的相对路径或绝对路径
     ssl_certificate example.com_bundle.crt; 
     #请填写私钥文件的相对路径或绝对路径
     ssl_certificate_key example.com.key; 
     ssl_session_timeout 5m;
     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     
     location /static {
        alias /path/to/your/mysite/static/;
    }
    location / {
        include uwsgi_params;
        uwsgi_pass backend;
    }
}

最后重新加载nginx,就大功告成啦!

sudo nginx -s reload


0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

Vertically aligning CSS :before and :after content

I am trying to centre the link with the image, but can't seem to move the content vertically in any way.<h4>More Information</h4> <a href="#" class="pdf">File Name</a>The icon is 22 x 22px.pdf { font-size: 12px; } .pdf:before { padding:0 5px 0 0; content: url(../img/icon/pdf_small.png); } .pdf:after { content: " ( .pdf )"; font-size: 10px; } .pdf:hover:after { color: #000; }

Get connected with us on social networks! Twitter

©2024 Guangzhou Sinephony Technology Co., Ltd All Rights Reserved