百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 应用 uWSGI + Nginx 部署

off999 2024-11-25 15:55 35 浏览 0 评论

新建一个 Django 应用部署

?使用 py 文件启动 uWSGI

def application(env, start_response):    start_response('200 ok', [('Content-type', 'text/html')])    return [b'Hello uWSGI.']

启动:

uwsgi --http-socket :8000 --plugin python3 --wsgi-file uwsgi_test.py

可能需要安装

sudo apt install uwsgi-plugin-commonsudo apt install uwsgi-plugin-python3

视情况也可能是apt install uwsgi-plugin-python,看自己使用的 Python 版本和软链接情况。

这样,在对应的 IP 下的 8000 端口可以访问到文件。

?新建 Django 项目

django-admin startproject django_deployment

?通过修改配置允许外部访问

setting.py:ALLOWED_HOSTS = ["*"]

?启动

python3 manage.py runserver 0.0.0.0:8000

打通 Django 与 uWSGI 的链路

先停止应用

?启动 uwsgi 打通关系

在项目根目录启动

uwsgi --http-socket :8000 --plugin python3 --module django_deployment.wsgi

?将命令行配置改为文件配置

新建django-uwsgi.ini:

touch django-uwsgi.inivim django-uwsgi.ini
# 配置域[uwsgi]# 工作目录chdir = /source/python/deployment/django_deployment# 模块module = django_deployment.wsgi# 请求端口http-socket = :8000# mastermaster = True# 进程processes = 4# 线程threads = 1# 是否退出是清理相关内容vacuum = true

?启动

uwsgi --ini django-uwsgi-ini

?后台启动

后台运行程序并打印日志

# 配置域[uwsgi]# 工作目录chdir = /source/python/deployment/django_deployment# 模块module = django_deployment.wsgi# 请求端口http-socket = :8000# mastermaster = True# 进程processes = 4# 线程threads = 1# 是否退出是清理相关内容vacuum = true# backend run uwsgidaemonize = %(chdir)/log/uwsgi-8000.loglog-maxsize = 1024*1024*1024pidfile = %(chdir)/pid/uwsgi-8000.pid

创建文件夹 log 和 pid

?启动

uwsgi --ini django-uwsgi.ini

?停止

uwsgi --stop pid/uwsgi-8000.pid

Django Nginx + uWSGI 部署

uWSGI 启动 Django 服务器

?启动并查看 pid

uwsgi --ini django-uwsgi-inicat pid/uwsgi-8000.pidps -aux | grep xxx

修改 Nginx 配置文件,完成反向代理

复制备份配置文件 nginx.conf 为 nginx.conf.back

修改 nginx.conf

在 63 行处:

upstream uwsgi {    server 122.51.1.19:8000;}server {    listen 80;    server_name 122.51.1.19;    charset utf-8;    location / {        proxy_pass http://uwsgi;    }}

?启动

nginx

查看启动进程情况

ps -aux | grep nginx

?添加 log 配置文件

upstream uwsgi {    server 122.51.1.19:8000;}server {        listen 80;        server_name 122.51.1.19;        charset utf-8;        access_log /var/log/nginx/nginx.log;        location / {            proxy_pass http://uwsgi;        }}

?重启

nginx -s reload

查看日志:

cd /var/log/ngxin/lstail -f nginx.log

收集静态文件,完成静态文件寻址配置

?收集静态文件

vim django_deployment/settings.pySTATIC_ROOT = os.path.join(BASE_DIR, 'static')python manage.py collectstatic

?配置静态文件路由

upstream uwsgi {        server 122.51.1.19:8000;}server {    listen 80;    server_name 122.51.1.19;    charset utf-8;    access_log /var/log/nginx/nginx.log;    location / {        proxy_pass http://uwsgi;    }    location /static {        allas /source/python/deployment/django_deployment/static;    }}

重新加载

nginx -s reload

HTTPS 加密部署

使用 443 端口,协议加密传输报文。

?申请 SSL 证书

在 Nginx 中新建文件夹 ssl,存放 crt 和 key

?远程拷贝到服务器

scp 2_topic.akashi.org.cn.crt root@122.51.1.19:/etc/nginx/ssl/scp 3_topic.akashi.org.cn.key root@122.51.1.19:/etc/nginx/ssl

?配置 Nginx 支持 HTTPS

nginx.conf:listen 443 ssl;ssl_certificate /etc/nginx/ssl/domain.com.crt;ssl_certificate_key /etc/nginx/ssl/domain.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;定义 80 端口的返回server {    listen 80;    server_name topic.akashi.org.cn;    rewrite ^(.*)$ https://$host$1 permanent;}

或者

server {    listen 80;    server_name topic.akashi.org.cn;    return 301 https://topic.akashi.org.cn;$request_rui;}

?重启生效

nginx -s reload

部署高可用服务

添加配置的启动端口,开启多个服务,并且转发到 nginx 上,还可以通过权重分配达到负载均衡

upstream uwsgi {    server 127.0.0.1:8000 weight=3;    server 127.0.0.1:8001 weight=1;}

?注意事项

1.不要使用 root 权限启动 uwsgi 服务2.关闭 uwsgi 外网访问

http-scoket = 127.0.0.1:8000http-scoket = 127.0.0.1:8001

原文链接:https://akashigakki.github.io/2019/10/30/Python_Deploy/deploy/#more


☆ END ☆

相关推荐

office2010家庭和学生版密钥

1.MicrosoftExcel2010家庭版的产品密钥是需要购买正版软件时提供的一串字符序列。2.这是为了确保用户使用正版软件,并且能够享受到软件的全部功能和服务。3.为了获得Micros...

16949认证费用是多少(16949审核员太难考了)

需要参加培训和考试,培训和考试是需要收费的,一般在300到500左右。内审员证书一般3年有效(因为标准是会更改的,更改标准则需要从新培训)大多数由企业组织人员参加培训。费用由企业承担,个人学这个的还是...

mba是什么意思(长江商学院emba是什么意思)
mba是什么意思(长江商学院emba是什么意思)

工商管理硕士(MBA)是工商管理类硕士研究生学位,MBA是培养能够胜任工商企业和经济管理部门高层管理工作需要的务实型、复合型和应用型高层次管理人才,兼具理论与实践相结合,而其他硕士研究生只是培养科研型和教学型人才,偏向理论,不参与实践。MB...

2026-01-14 07:51 off999

mdf文件游戏怎么安装(win10mdf文件游戏怎么安装)

朋友,应该还有一个只有几K的KuaiZipMount.mds文件吧?请确保这两个文件在同一个目录中然后用Daemontools等虚拟光驱软件,载入其中的mds文件之后进入虚拟光驱所在盘符执行...

c盘莫名其妙的满了怎么办(c盘莫名其妙的满了怎么办windows)

当C盘突然满了,首先需要找到原因。可能是因为系统更新或安装了大量软件,也可能是因为存在大量垃圾文件或临时文件。可以通过清理垃圾文件、卸载无用软件、更改默认下载路径等方式来释放C盘空间。另外,可以考虑将...

联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
  • 联通路由器怎么改wifi密码(联通路由器怎么改wifi密码和名称)
怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
  • 怎么查电脑型号配置(电脑怎么看型号配置)
电脑如何修改默认浏览器(电脑上怎样修改默认浏览器)

1、按下“windows+i”快捷键打开Windows设置,在设置界面选择系统。2、在系统里左边点击默认程序一项,右边会出现新的选项来。3、右边滚动鼠标滑轮下拉,点击web默认程序,点击选择想要默认打...

如何下载youtube视频(如何下载youtube视频2160p)

这个可以在应用宝中下载,就是在手机上下载一个应用宝,然后在搜索栏里输入软件名字,点击搜索,根据提示下载就可以了。将视频下载到电脑上有几种途径,如果是网络上的,可以下载的视频会设置有下载标记或按钮,点...

深度国际2025最新一期视频(今日关注最新一期的)

1、就算不快乐也不要皱眉,因为你永远不知道谁会爱上你的笑容。2、踏入社会的时候,不要什么话都跟别人讲,你说的是心里话,别人听的是笑话。3、该扔的就扔,该放弃就放弃,从今天起,余生做个俗人,以自己最好的...

华为最新系统版本(华为最新系统版本微信)

鸿蒙3.0。鸿蒙最新版本是3.0系统,相比2.0有着全面提升。尤其是在交互设计,多设备互联互通,流畅度性能,安全属性,用户关怀等方面升级幅度最大,而且升级并非是简单的更新换代,修复了不少鸿蒙2.0版本...

不知道原机主id密码如何激活

答案:如果忘记ID账号和密码,可以尝试以下方法激活手机:1.使用备用邮箱或手机号码:如果您已将备用邮箱或手机号码与您的ID账号绑定,可以使用备用邮箱或手机号码进行身份验证以激活手机。2.联系客服:...

win10安装需要输入产品密钥(win10安装程序要输入产品密匙)

可按照如下方式解决:1.右击桌面左下角的“Windows”按钮,然后点击“命令提示符”项。2.接下来再输入以下命令:slmgr/ipkW269N-WFGWX-YVC9B-4J6C9-T83GX按回...

手机秒变电脑摄像头(手机秒变电脑摄像头怎么设置)

可以的我用过,但是要你手机支持啊国产的山寨机很多都支持这个功能:支持这个功能的手机摄像头有两种工作状态:手机摄像状态和USB连接状态,在手机设置里把手机的摄像头改为USB连接状态,直接插到电脑上就可以...

苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因

取消回复欢迎 发表评论: