Django应用部署:nginx+uwsgi方式
环境准备#
nginx+uwsgi方式部署顾名思义,需要nginx和uwsgi两个软件包。
nginx不用说,是必备的,关于nginx的安装本文不再赘述,详情可以自行搜索或者参考我以前的文章:
Debian8搭建LEMP环境
安装uwsgi#
pip install uwsgi
上传项目代码 & 测试#
# 进入项目目录,具体目录请自行选择
cd /path/to/project
# 建立虚拟环境
virtualenv venv
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install -r requirement.txt
# 开启测试服务器
python manage.py runserver 0.0.0.0:8001
配置uwsgi#
uwsgi支持多种格式的配置文件,本文选择ini格式。
在项目目录中创建uwsgi.ini
文件,内容如下:
[uwsgi]
# Django-related settings
socket = :8001
# Virtualenv
home = /var/www/html/_project/ClassHelperWxApp/venv
# the base directory (full path)
chdir = /var/www/html/_project/ClassHelperWxApp
# Django s wsgi file
module = Config.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
开启uwsgi测试#
# 进入项目目录
cd /path/to/project
# 开启uwsgi服务器
uwsgi -s --ini uwsgi.ini
这个时候还不能访问,因为服务器设置成socket模式,如果想先访问一下试试看,可以把ini配置文件里面的socket改成http,即可访问项目网站,不过静态文件暂时访问不了。
nginx配置反向代理#
在/etc/nginx/sites-available
目录中新建一个配置文件。
例如:domain.com.conf
,配置代码如下
附赠了https的配置,如果不需要的话把ssl相关的配置行删除即可。
server {
# the port your site will be served on
listen 80;
listen 443 ssl;
# the domain name it will serve for
server_name domain.com; # substitute your machine's IP address or FQDN
charset utf-8;
ssl on;
#证书文件
ssl_certificate /path/to/keys/1_domain.com_bundle.crt;
#私钥文件
ssl_certificate_key /path/to/keys/2_domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /path/to/project/media; # your Django project's media files - amend as required
}
location /static {
alias /path/to/project/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
include uwsgi_params; # the uwsgi_params file you installed
uwsgi_pass 127.0.0.1:8001;
}
}
然后使用ln -s
创建一个到sites-enabled
的软链接,重新加载nginx即可。
service nginx reload

About#

了解更多有趣的操作请关注我的微信公众号:DealiAxy
每一篇文章都在我的博客有收录:blog.deali.cn
作者:DealiAxy
出处:https://www.cnblogs.com/deali/p/9201053.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
微信公众号:「程序设计实验室」
新版StarBlog已经上线,地址:http://blog.deali.cn
微信公众号:「程序设计实验室」
专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 上周热点回顾(2.17-2.23)