Nginx+uWSGI+Django部署

2022-04-07 13:49:05 浏览数 (1)

照常的周五TestOps测试运维课程总结时间~

在通过前面的学习,我们对Python web开发框架——Django有了一定认识之后,今天这篇文章芒果给大家介绍一下如何将Django部署到服务器上。

Django部署概要

在前面的课程或者文章里,芒果给大家介绍的关于Django所用的 web 服务器是Django自带的runserver。但是这样runserver Django的方式明显不适合在生产环境中使用,因此需要进一步将 Django 应用程序部署到 Web。这里我们将使用Nginx uWSGI Django的方式进行部署。

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能。它支持WSGI协议,同时它也支持自有的uWSGI协议,该协议据说性能非常高,而且内存占用率低。它还支持多应用的管理及应用的性能监控。虽然uWSGI本身就可以直接用来当Web服务器,但一般建议将其作为应用服务器配合Nginx一起使用,这样可以更好的发挥Nginx在Web端的强大功能。

这里我们使用Nginx,以及Nginx中HttpUwsgiModule与uWSGI服务器一起来搭建Django环境。

Django项目文件管理

先备份需要安装的第三方模块:

pip freeze >requirements.txt

添加.gitignore文件(用来管理忽略文件):

__pycache__/

.idea/

上传代码:

代码语言:javascript复制
cd mywebsite
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/mangozuo/mywebsite.git
git push -u origin master

构建Django虚拟环境,并下载项目代码:

代码语言:javascript复制
python3 -m venv myweb_venv
cd myweb_venv/
git clone https://github.com/mangozuo/myweb.git
source bin/activate
cd myweb
pip install -r requirements.txt
python manage.py makemigrations myblog
Python manage.py migrate
deactivate

Nginx uWSGI Django部署

uWSGI运行Django:

此处项目文件路径为:

/root/myweb/myweb_venv/mywebsite

在该路径下新建一个配置文件uwsgi.ini:

代码语言:javascript复制
[uwsgi]
chdir = /root/myweb/myweb_venv/mywebsite
module = mywebsite.wsgi
socket = 127.0.0.1:8000
master = true
daemonize = /root/myweb/log/run.log
disable-logging = true

安装配置Nginx:

此处省略Nginx安装步骤

配置/etc/nginx/conf.d/default.conf文件,添加配置以下内容:

代码语言:javascript复制
server {
    listen       8008;
    server_name  localhost;
    charset utf-8;
location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
    }
location /static/ { alias /root/myweb/myweb_venv/mywebsite/myblog/static/; }
}

启动uwsgi:

uwsgi uwsgi.ini

启动Nginx:

systemctl start nginx

如此便可以将Ngin uWSGI Django部署好。

小结

当然上面的内容只是我们TestOps测试运维课程关于Django部署的其中很小一部分内容,还有许多关于版本管理,Django模板设置等内容没有介绍到,想要更多了解Django使用。

0 人点赞