照常的周五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使用。