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部署相关推荐

  1. uWSGI + Nginx + Django 部署

    来源:https://www.cnblogs.com/midworld/p/10992005.html 1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server ...

  2. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

  3. 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤

    文章目录 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤 先决条件 步骤 本地运行测试 上传服务器 环境安装 准备django程序 完美解决! 瞬间心情愉 ...

  4. Django+uwsgi+nginx服务器部署

    准备工作 推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题 安装anaconda: wget https://repo.anaconda.com/arch ...

  5. Nginx + uWSGI + Python + Django部署实例

    Nginx: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的 ...

  6. Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署

    网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细.这里就记录一下分享给大家 共分为以下几个步骤: 一.开始前准备信息 二.使用前端code获取用户的openid 三.对接小程序v3接口下单 ...

  7. Ubuntu下Django+uWSGI+nginx部署

    本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...

  8. 【django云服务器部署】django+uwsgi+nginx 部署的完整流程

    本篇博客完整地记录了我从购买服务器到完成部署的全过程,需要的朋友可以参考一下我的流程,看这一篇文章就能成功部署项目啦. 写这个的本意是为备忘( 保姆级步骤),同时由于我在最开始部署项目时,没有找到一个 ...

  9. python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue

    简介 * 1.两年前接触docker是因为要部署selenium_gird,后来呢发现zalenium可以录制ui自动化视频的工具,都是直接pull镜像,启动容器.所以一直以来就只用到了pull. r ...

最新文章

  1. php mysql emoji表情_php 让MySQL支持Emoji表情 mysql 5.5.3+
  2. java写微信小程序答辩问题_微信小程序毕业设计选题和毕业论文怎么写,答辩流程是怎样的?...
  3. Spring Boot怎么样处理静态资源(静态资源映射规则)_Web开发
  4. 湫湫系列故事——消灭兔子(优先队列)
  5. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...
  6. Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由
  7. Gitlab管理Create Merge Request,new Merge Request创建合并请求
  8. sin查找表 matlab,FPGA利用查找表实现sin正弦函数
  9. 阿里云物联网平台如何通过云产品流转使两个设备互相通信
  10. Redis6:第六章:(2)Redis6 新数据类型:HyperLogLog
  11. 【JavaScript】(二)俄罗斯方块
  12. 微信小程序 MinUI 组件库系列之 price 价格组件
  13. 家庭自酿葡萄酒入门(转)
  14. 布莱克斯科尔斯模型(五) 方程求解过程
  15. es6方法 数组去重 多个数组去重 数组对象去重
  16. python中判断一个数是否为素数_【转载】Python脚本判断一个数是否为素数的几种方法...
  17. 完美世界刘航:异构计算要避免昙花一现
  18. vue源码分析-响应式系统(二)
  19. 网民特大好消息ipv9根服务器,ipv9根服务器
  20. python批量下载ECMWF欧洲中心数据

热门文章

  1. 只用div+CSS做淘宝手机端首页
  2. Python 之 如何一行输入多个整数
  3. socket接口技术和相关函数(socket,bind,listen,accept)
  4. 大数据学习路线图(知识体系整理)
  5. sap客户信贷_信贷控制配置全过程-SAP
  6. 实体零售纷纷转型,苏宁、乐语到底能给我们带来哪些启示?
  7. 什么是https?http和https之间区别是什么?
  8. Filename和chunkFilename的区别
  9. 汇付国际为跨境电商赋能:做合规的跨境支付平台!
  10. 一个几乎免费的云服务器和虚拟主机平台