linux + 宝塔 + django + websocket 部署

server/2024/9/21 10:35:13/

记坑一个:

     如果服务器上的代码views.py/settings.py/模板html等更新了,需要重启daphne服务,否则还是显示旧内容。测试中某段代码修改后,尝试重启python项目、重启nginx都依然显示旧内容,莫名其妙到怀疑人生,最后重启daphne后正常了。用户访问80端口时其实时候被反向代理到daphne,再经过asgi.py分流去http或ws的


1、宝塔面板: 网站--python项目--添加python项目

3、删除站点根目录下面index.html和404.html,然后上传文件到网站根目录
这时应该可以通过"添加python项目"时所设置的端口访问到网站
4、在ssh终端,通过命令source py-project-env [项目名称] 进入该项目虚拟环境,安装依赖。退出时使用deactivate
5、打开 网站--python项目--(具体项目)设置 对话框,
[域名管理]中填写域名,[外网访问]中打开"外网映射",
[配置文件]
主要是修改网站跟目录 "/" 地址的指向"location / {}"
如果不需要websocket,就指向uwsgi端口
如果需要websocket,就指向daphne端口。 由于asgi.py及settings.py中设置了http指向 <项目名称>.wsgi.application。所以http流量去到asgi.py时会被分流到wsgi(uwsgi)
[uwsgi配置]中填写:

#添加配置选择
[uwsgi]
module = <项目名称>.wsgi:application  # wsgi应用的入口
#配置和nginx连接的socket连接
socket=127.0.0.1:9001
#配置项目路径,项目的所在目录
chdir=/www/wwwroot/<站点根目录>/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
wsgi-file=<项目名称>/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log

6、(临时测试)启动daphne:
ssh终端进入 /www/wwwroot/<站点目录>
执行:
export DJANGO_SETTINGS_MODULE=<项目名称>.settings
daphne -p 8001 <项目名称>.asgi:application -b 0.0.0.0

7、持久运行daphne需要借助supervisor:

(1) 安装宝塔插件“进程守护管理器” (supervisor)

(2) 以下代码保存为ws.sh 放在站点根目录

if [[ "$PATH" =~ "^/www/server/pyporject_evn/<(网站->python项目->添加python项目 时填写的)项目名称>_venv/bin:.*" ]]; then { echo "虚拟环境已就绪!"; } else { export PATH="/www/server/pyporject_evn/<(网站->python项目->添加python项目 时填写的)项目名称>_venv/bin:${PATH}"; echo "虚拟环境已就绪!"; } fiexport DJANGO_SETTINGS_MODULE=<(django-admin startproject 命令创建项目时填写的)项目名称>.settings
daphne -p 8001 backend.asgi:application -b 0.0.0.0

(3)进入supervisor创建进程守护:配置填写注意:项目目录是你.sh文件的目录,启动命令为/bin/bash ./ws.sh

参考:

https://www.cnblogs.com/Rrea/p/17668114.html

https://blog.csdn.net/xiao_a_lian/article/details/138492925


http://www.ppmy.cn/server/119776.html

相关文章

解决 Ubuntu 18.04 下与 TIFFField 和 Anaconda 冲突导致的库加载问题

在 Ubuntu 18.04 系统上&#xff0c;我在安装完ROS后&#xff0c;启动具有 GUI 的软件&#xff08;如 RViz 和 Gazebo&#xff09;时遇到了一个问题&#xff1a;每次尝试启动这些软件时&#xff0c;终端中都会报错&#xff0c;错误信息类似如下&#xff1a; rviz: relocation …

面试经典150题——删除有序数组中的重复项

目录 题目链接&#xff1a;26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 题目描述 判题标准: 示例 提示&#xff1a; 解法一&#xff1a;双指针 Java写法&#xff1a; 运行时间 C写法&#xff1a; 运行时间 论屎山代码是如何出现的 时间复杂…

华为云服务综合实验

一、实验需求 本次实验内容基于华为云平台模拟企业web集群的构建&#xff0c;其中涉及的知识点包括Linux系统知识、nginx服务的安装及配置应用、云数据库 RDS(Relational Database Service,简称RDS)、虚拟私有云vpc、安全组、SFS弹性文件服务器以及负载均衡等。要求学生通过本…

开源 AI 智能名片小程序:开启内容营销新境界

摘要&#xff1a;本文深入探讨了在当今数字化时代&#xff0c;内容营销的重要性以及如何实现让用户主动找你的最佳效果。通过引入开源 AI 智能名片小程序这一创新工具&#xff0c;阐述了其在明确目标用户群体、迎合用户需求痛点和打造风格特色方面的独特优势&#xff0c;为企业…

鸿蒙OS 线程间通信

鸿蒙OS 线程间通信概述 在开发过程中&#xff0c;开发者经常需要在当前线程中处理下载任务等较为耗时的操作&#xff0c;但是又不希望当前的线程受到阻塞。此时&#xff0c;就可以使用 EventHandler 机制。EventHandler 是 HarmonyOS 用于处理线程间通信的一种机制&#xff0c…

Oracle(129) 如何使用闪回归档(Flashback Archive)?

闪回归档&#xff08;Flashback Archive&#xff09;是Oracle数据库提供的一个功能&#xff0c;用于长期存储表的历史数据。通过启用和配置闪回归档&#xff0c;你可以查询表的历史数据&#xff0c;而不需要依赖撤销段或归档日志。这对于审计、合规性和历史数据分析非常有用。 …

OpenAI API key not working in my React App

题意&#xff1a;OpenAI API 密钥在我的 React 应用中不起作用 问题背景&#xff1a; I am trying to create a chatbot in my react app, and Im not able to generate an LLM powered response. Ive been studying documentation and checking out tutorials but am unable …

JavaWeb JavaScript 11.XML —— 配置文件

生活想埋没我&#xff0c;没想到我是颗种子 —— 24.9.19 一、XML 1.什么是XML XML是EXtensible Markup Languge的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签 可扩展 三个字…