记坑一个:
如果服务器上的代码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