Uwsgi+Nginx+Django部署
Django+Uwsgi+Nginx部署
这几天一直在捣腾Django部署,一只菜鸡的上山路
如果什么不对,还请多多指教。
参考:如何使用Django与uWSGI,Uwsgi文档
Linux使用的是ubuntu18.04.4版本,自带python3.6
更新Linux资源
sudo apt-get update
sudo apt-get upgrade
安装pip3
sudo apt install python3-pip # 完成之后,使用pip3 -version 查看版本则安装成功
安装uwsgi
pip3 install uwsgi # 提示没有权限,使用sudo进行安装
创建测试文件
cd /home
vim test.py
test.py
def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"]
将其部署HTTP9090端口上
启动uWSGI来运行HTTP服务器/路由器,将请求传递到您的WSGI应用程序:
uwsgi --http :9090 --wsgi-file test.py
如果显示
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 3797, cores: 1)
[pid: 3797|app: 0|req: 1/1] 123.10.3.118 () {38 vars in 827 bytes} [Mon Feb 24 08:58:53 2020] GET / => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
[pid: 3797|app: 0|req: 2/2] 123.10.3.118 () {38 vars in 769 bytes} [Mon Feb 24 08:58:53 2020] GET /favicon.ico => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
则为运行成功。
如果是
# 提示端口号已被使用,如果想继续使用则找到端口的pid,然后kill掉
# 最简单的就是换个端口号,用以测试
thunder lock: disabled (you can enable it with --thunder-lock)
probably another instance of uWSGI is running on the same address (:8000).
bind(): Address already in use [core/socket.c line 769]
如果还有其他的报错,请在云管理中将端口打开
测试是否运行成功
公网ip:9090 打开页面显示Hello World则为成功
导入Django项目
在可以正常运行的情况下批量导出所需模块
pip freeze >requirements.txt
将文件放在linux的目录下进行批量导入
sudo pip3 install -r requirements.txt
创建Django存放目录,并运行
mkdir -p projkect
然后将Django项目导入
修改settings.py
DEBUG = False
ALLOWED_HOSTS = ["*"]
在项目下运行
python3 manage.py runserver 0.0.0.0:8000
然后在浏览器中输入公网ip:8000,如果正确访问则没有问题
安装Nginx
sudo apt install niginx
启动nginx
service nginx start
在浏览器中测试,输入公网ip会出现
给项目创建一个uwsgi的配置文件,以ini结尾
mysite_uwsgi.ini
[uwsgi]
# Django-related settings
socket = 127.0.0.1:9001
# 项目绝对路径
chdir = /home/project/mysite //此处要修改 此处是你项目的路径
# Django的wsgi文件相对路径
wsgi-file = mysite/wsgi.py //此处也要修改 填写项目的名称
# process-related settings
# master
master = True
# 最大进程数
processes = 4
# 线程数
threads = 2
#设置此参数,有一个主进程
master=True
#守护进程的方式运行,log日志存在此log文件里
deamonize=/var/log/uwsgi/djangoProject.log
#主进程id写入文件里
pidfile= /var/log/nginx/uwsgi.pid
# ... with appropriate permissions - may be needed
# chmod-socket = 664
#退出时,清理环境
vacuum = True
reload-mercy = 10
max-requests = 5000
limit-as = 512
buffer-size = 30000
注意:上述文件后的双斜杠注释在文件中是不存续存在的,只是在本文章中作为说明存在
# 检查nginx配置文件是否正确
nginx -t
正确输出为:
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is sucessful
错误按照上面的提示进行修改
找到nginx的配置文件
vim /etc/nginx/nginx.conf
默认加载/etc/nginx/conf.d目录下的以.conf结尾的配置文件
# 进入conf.d
cd /etc/nginx/conf.d
# 创建自己的配置文件
vim mysite_nginx.conf# 内容如下
server {# 监听8000端口listen 8000;server_name 127.0.0.1;access_log /var/log/nginx/mysite_access.log;# 错误日志error_log /var/log/nginx/mysite_error.log;# 编码charset utf-8;# 浏览器最大缓存client_max_body_size 75M;root /home/project/mysite;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:9001;uwsgi_read_timeout 2;}# 项目所需的静态文件location /static/ {expires 30d;autoindex on;add_header Cache-Control private;alias /home/project/mysite/static/;}# 项目所需资源文件location /media/ {expires 30d;autoindex on;add_header Cache-Control private;alias /home/project/mysite/media/;}}
配置完成,重启nginx
sudo service nginx restart
网上找的资源提示说 重启报错,但是nginx -t 不报错,需要重启服务器 --ps:这个情况我没有遇到
最后一步让uwsgi使用自定义的ini文件
uwsgi --ini /home/mysite_uwsgi/mysite_uwsgi.ini
上述需要ini配置文件的全路径
到此为全文
最后在浏览器中输入ip即可
如果报错,查看mysite_error.log
,对应解决。
但是nginx -t 不报错,需要重启服务器 --ps:这个情况我没有遇到
最后一步让uwsgi使用自定义的ini文件
uwsgi --ini /home/mysite_uwsgi/mysite_uwsgi.ini
上述需要ini配置文件的全路径
到此为全文
最后在浏览器中输入ip即可
如果报错,查看mysite_error.log
,对应解决。
截至到目前为止,才对Uwsgi和Nginx有一点点的了解,呜呜呜
Uwsgi+Nginx+Django部署相关推荐
- uWSGI + Nginx + Django 部署
来源:https://www.cnblogs.com/midworld/p/10992005.html 1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server ...
- Django+Linux+Uwsgi+Nginx项目部署文档
Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...
- 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤
文章目录 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤 先决条件 步骤 本地运行测试 上传服务器 环境安装 准备django程序 完美解决! 瞬间心情愉 ...
- Django+uwsgi+nginx服务器部署
准备工作 推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题 安装anaconda: wget https://repo.anaconda.com/arch ...
- Nginx + uWSGI + Python + Django部署实例
Nginx: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的 ...
- Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署
网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细.这里就记录一下分享给大家 共分为以下几个步骤: 一.开始前准备信息 二.使用前端code获取用户的openid 三.对接小程序v3接口下单 ...
- Ubuntu下Django+uWSGI+nginx部署
本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...
- 【django云服务器部署】django+uwsgi+nginx 部署的完整流程
本篇博客完整地记录了我从购买服务器到完成部署的全过程,需要的朋友可以参考一下我的流程,看这一篇文章就能成功部署项目啦. 写这个的本意是为备忘( 保姆级步骤),同时由于我在最开始部署项目时,没有找到一个 ...
- python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue
简介 * 1.两年前接触docker是因为要部署selenium_gird,后来呢发现zalenium可以录制ui自动化视频的工具,都是直接pull镜像,启动容器.所以一直以来就只用到了pull. r ...
最新文章
- php mysql emoji表情_php 让MySQL支持Emoji表情 mysql 5.5.3+
- java写微信小程序答辩问题_微信小程序毕业设计选题和毕业论文怎么写,答辩流程是怎样的?...
- Spring Boot怎么样处理静态资源(静态资源映射规则)_Web开发
- 湫湫系列故事——消灭兔子(优先队列)
- 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...
- Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由
- Gitlab管理Create Merge Request,new Merge Request创建合并请求
- sin查找表 matlab,FPGA利用查找表实现sin正弦函数
- 阿里云物联网平台如何通过云产品流转使两个设备互相通信
- Redis6:第六章:(2)Redis6 新数据类型:HyperLogLog
- 【JavaScript】(二)俄罗斯方块
- 微信小程序 MinUI 组件库系列之 price 价格组件
- 家庭自酿葡萄酒入门(转)
- 布莱克斯科尔斯模型(五) 方程求解过程
- es6方法 数组去重 多个数组去重 数组对象去重
- python中判断一个数是否为素数_【转载】Python脚本判断一个数是否为素数的几种方法...
- 完美世界刘航:异构计算要避免昙花一现
- vue源码分析-响应式系统(二)
- 网民特大好消息ipv9根服务器,ipv9根服务器
- python批量下载ECMWF欧洲中心数据