Ubuntu下的Nginx-Uwsgi-Django项目部署详细流程
Ubuntu下的Nginx+Uwsgi+Django项目部署详细流程
版本
- Ubuntu 18.04
- Python 3.6
- Django 3.2
- Nginx 1.14.0
Python 虚拟环境
- virtualenv是虚拟环境安装包,创建虚拟环境可以更好地控制包的版本,保证了项目的稳定性
- 不同虚拟环境之间的运行环境相互独立,互不干扰
1.安装virtualenv
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
2.创建虚拟环境
virtualenv myVenv
3.进入虚拟环境
source myVenv/bin/activate
Django项目代码上传
1.通过pycharm进行代码部署
- 选择:工具-Deployment-Configuration
- 点击 + 号,选择SFTP连接
- 选择远程主机
- 选择本地目录与上传目录
- 选择文件后进行上传
2.项目试运行
python3 manage.py runserver 0.0.0.0:8000
uWSGI 安装配置
1.Python 安装 uWSGI
在虚拟环境下安装uWSGI
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
2.测试uWSGI
从一个简单的 “Hello World” 开始,创建文件 test_uwsgi.py,代码如下:
def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"]
uWSGI Python 加载器将会搜索的默认函数 application 。
接下来我们启动 uWSGI 来运行一个 HTTP 服务器,将程序部署在HTTP端口 8001 上:
uwsgi --http :8001 --wsgi-file test_uwsgi.py
uWSGI部署Django
在项目根目录下(与manage.py同级)新建一个uwsgi.ini文件,内容如下:
[uwsgi]
socket = 0.0.0.0:8001
chdir = /data/myobject/
wsgi-file = myobject/wsgi.py
processes = 4
threads = 2
buffer-size = 65536
# .sock文件目录需与Nginx文件内的配置相同
# socket = /data/myobject/my_sock.sock
# chmod-socket = 666
# 存储pid进程
pidfile=uwsgi.pid# 存储log日志
daemonize=uwsgi.log
启动uWSGI,并指定配置文件
uwsgi --ini uwsgi.ini
- 可以看到,文字正常显示,图片无法显示,这是正常现象
- 以上步骤说明以下三个环节是相通的
web client <-> uWSGI <-> Django
Nginx
1.安装Nginx
sudo apt-get install nginx
2.Nginx命令
/usr/sbin/nginx # 启动Nginx
/usr/sbin/nginx -s stop # 停止Nginx
/usr/sbin/nginx -s reload # 重新启动Nginx
vi /etc/nginx/nginx.conf # 编辑Nginx配置文件
3.测试Nginx
启动Nginx后,浏览器访问ip地址:
看到如上页面,说明Nginx启动成功。
4.配置Nginx
将/etc/nginx/目录下的uwsgi_params复制到项目文件夹,对此文件不做任何改动
cp /etc/nginx/uwsgi_params /data/myobject
在项目根目录创建文件my_nginx.conf,并写入以下内容
upstream django {server 0.0.0.0:8001;# server unix:///data/myobject/my_sock.sock;
}server {listen 8000; # 端口号server_name 127.0.0.1; # 服务器 ip 或是域名charset utf-8; # 字符集# 最大上传限制client_max_body_size 75M;location /static {alias /data/myobject/static; # 静态文件所在文件夹}# 将所有非媒体请求转到Django服务器上location / {uwsgi_pass django; # 最上方已定义# 将所有参数都转到uwsgi下include /data/myobject/uwsgi_params; # uwsgi_params的路径}
}
这个配置文件表示将静态文件和媒体文件由Nginx处理,而其它的请求转入uWSGI处理
与Nginx配置目录建立软链接
sudo ln -s /data/myobject/my_nginx.conf /etc/nginx/sites-enabled/
Nginx & uWSGI & Django
1.测试Nginx
将一张测试图片test.jpg放入static文件夹中,在浏览器中输入<YOUR_SERVER_IP>:8000/static/test.jpg,如果出现403则将图片的权限改为666,成功显示图片。
2.测试uWSGI
回到项目根目录,输入以下命令
uwsgi --socket :8001 --wsgi-file test_uwsgi.py
打开浏览器,地址栏输入<YOUR_SERVBER_IP>,看是否能正常显示’Hello World’。
3.用UNIX socket取代TCP port
修改my_nginx.conf,最终版如下:
upstream django {# server 0.0.0.0:8001;server unix:///data/myobject/my_sock.sock;
}server {listen 8000; # 端口号server_name 127.0.0.1; # 服务器 ip 或是域名charset utf-8; # 字符集# 最大上传限制client_max_body_size 75M;location /static {alias /data/myobject/static; # 静态文件所在文件夹}# 将所有非媒体请求转到Django服务器上location / {uwsgi_pass django; # 最上方已定义# 将所有参数都转到uwsgi下include /data/myobject/uwsgi_params; # uwsgi_params的路径}
}
修改uwsgi.ini,最终版如下:
# socket = 0.0.0.0:8001
chdir = /data/myobject/
wsgi-file = myobject/wsgi.py
processes = 4
threads = 2
buffer-size = 65536
# .sock文件目录需与Nginx文件内的配置相同
socket = /data/myobject/my_sock.sock
chmod-socket = 666
# 存储pid进程
pidfile=uwsgi.pid
# 存储log日志
daemonize=uwsgi.log
重启Nginx和uWSGI
/usr/sbin/nginx -s reload
uwsgi --stop uwsgi.pid
uwsgi --ini uwsgi.ini
打开浏览器,地址栏输入网址<YOUR_SERVER_IP>:8000,查看图片和文字是否显示正常
此时以下环节已全部打通
web client <-> web server(nginx) <-> the socket <-> uwsgi <-> Django
Ubuntu下的Nginx-Uwsgi-Django项目部署详细流程相关推荐
- 阿里云运行python项目_荐个人博客开发-06:Nginx + uWSGI + Django项目部署到阿里云服务器运行...
版本:Python-3.8.1 + Django-2.2 + 阿里云服务器 Ubuntu-16.04 在正式部署前,需要确认几点: 服务器上已经安装相应的 Python MySQL Nginx uWS ...
- Docker部署Angular+Nginx+uwsgi+Django项目
Docker部署Angular+Nginx+uwsgi+Django项目 0.前言 在开发部署时,容易遇到服务器环境不一致,多台服务重复部署操作过于繁杂的情况.这时可以采用Docker来提供一套统一的 ...
- Nginx+uWSGI+Django方法部署Django程序
在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理(这是NGINX的强项).然后,NGINX将所有非静态请求通过u ...
- nginx+uwsgi+django环境部署部署
首科常昊技术部 Django框架部署文档: 硬件环境:阿里云ecs服务器8核心.16GB.10Mbps 环境结构:nginx+uwsgi+django 所需软件:python-3.6.1.pip3.6 ...
- nginx + uwsgi + Django 应用部署
今天来看下基于Django开发的应用如何在Centos6环境部署 系统环境:Centos6.5 x64 软件版本:Django 1.9.5 .uwsgi-2.0.13.1 nginx 安装配置(略)请 ...
- 【NGINX】nginx+uwsgi+django+python部署总结
(记录一下) 环境如下: 操作系统: Ubuntu 10.04 nginx: 1.0.12 uwsgi: 1.0.4 python: 2.6.5 django: 1.2.7 一.安装uwsgi 到h ...
- 阿里云服务器从购买到项目部署详细流程
1.购买服务器流程 官网 注册阿里云账号登录后点击控制台 点击侧边栏展开 选择云服务器ECS 由于我已经购买完毕,所以这里会出现一个服务器.=我们可以点击创建实例来购买 操作系统尽量选择 CentOS ...
- Ubuntu Nginx uwsgi django 初试
/*************************************************************************************** Ubuntu Ngin ...
- nginx+uWSGI + django部署项目
项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...
最新文章
- KS103超声波测距模块
- Netty消息接收类故障案例分析
- Sayjoy┊多媒体在线编辑创作工具
- MariaDB主从复制、主主复制
- 新手学逆向,调试abexcm1过程
- Lotus,协作领域的常青树
- 使用tomcat时,Add and Remove出现异常
- 计算机组装与维护时dm是指,《计算机组装与维护》试题答案
- 今天辞去了联盟的版主职务
- atitit.软件设计模式大的总结attialx总结
- HeadFirstJava学习心得——网络编程
- 网络编程——TCP编程及UDP编程
- RabbitMQ实现即时通讯
- demoのpython学习笔记【2】——文件操作、面向对象的函数、HTML基础
- Learning Convolutional Neural Networks for Graphs
- 关于自动驾驶中毫米波雷达传感器的一些知识(涉及多传感器融合)
- 锐龙R3 4300U和i5-9300H 哪个好
- ubuntu18.04 分辨率突然变小,添加1920x1080分辨率,转完变卡默认成集显llvmpipe改独显方法
- Java工程师修炼之道! | 送10本书籍
- 最简单方法!!用python生成动态条形图(解决报错问题!)