Python技巧
daphne+nginx+channels+redis 在Ubuntu 24.04布署流程
ubuntu24设置uwsgi和nginx开机自启动(设置并开启service)
如何在Ubuntu 24.04上使用uwsgi+django+Nginx来部署python3应用程序
开启nginx 开机自启动服务
网站建设
ubuntu 裸机安装相关包
sitemap.xml相关操作
项目更新时数据表迁移相关操作
ubuntu 防攻击,扫描相关的命令
ubuntu 运维相关的命令
DetailView 的自动机制
C盘清空指南
ubuntu 上的 Redis 配置
linux ubuntu centos 清理垃圾
在nginx 里 配置跨域访问控制
MYSQL数据库常用操作命令
将MYSQL数据库从一台服务器移植到另一台服务器
向Mysql插入Emoji表情时失败了,python代码报以下异常:InternalError: 1366
Centos7+nginx下为域名免费安装ssl证书
Centos7,Centos8防火墙相关的命令
Centos7.5+nginx布署python3+django WEB服务器
js/jQuery技巧
VPS推荐
在 Google Search Console(谷歌搜索控制台)相关操作
如何在 本地win11 安装 Rclone,并使用Rclone上传文件到Cloudflare
域名申请
111111
构建安卓APP
Android Studio 如何修改 Package Name
Android使用WebView将H5网站打包成apk,如何去掉标题,如何更换应用图标
Android使用WebView加载网站,无法上传图片的解决方法
sitemap.xml相关操作
只要你在 Nginx 里加了这几行,原来在 urls.py 里配置的那个 sitemap 路由就彻底“退居幕后”了。外网进来的谷歌爬虫,会被 Nginx 在第一关直接截住,拿走
一, /home/myvideo/sitemap.xml 这个死文件。 location = /sitemap.xml { alias /home/myvideo/sitemap.xml; access_log off; add_header Content-Type "text/xml; charset=utf-8"; } 终极完善后的 Crontab 命令 请在终端输入 crontab -e,并在最底部填入以下这行(注意看开头的 python 路径): 0 3 * * * cd /home/myvideo && /root/youvideo/bin/python3 manage.py shell -c "from django.test import Client; c = Client(); response = c.get('/sitemap.xml', HTTP_HOST='hlfuli.com'); open('sitemap.xml', 'wb').write(response.content)"
二,但需要注意:models.py 和 sitemaps.py 并没有失效,它们依然是核心功臣。 只是它们不再服务于“外网用户的实时请求”,而是转为服务于你每天凌晨运行的那个定时任务命令。 下面我把这个长命令给你拆得清清楚楚、明明白白: 第一部分:时间定时器 (0 3 * * *) 这是 Linux 内置的 crontab 标准时间格式: 0:第 0 分钟 3:凌晨 3 点 * * *:每天、每个月、每周的任意日子 连起来就是:在每天凌晨 3:00 整,雷打不动地执行后面那一长串命令。选这个时间是因为凌晨网站流量最低,哪怕服务器抽风也不会影响白天用户看视频。
三,第二部分:环境准备 (cd /home/myvideo &&) cd /home/myvideo:进入到你的 Django 项目根目录。只有在这个目录下,Python 才能找到 manage.py。 &&:Linux 的逻辑连字符。意思是“当前面的 cd 命令成功进入目录后,才继续执行后面的操作”。 第三部分:Django 内部执行器 (/root/youvideo/bin/python3 manage.py shell -c "...") manage.py shell:启动 Django 的后台命令行交互环境(加载了你所有的数据库配置和模型)。 -c:这是 Python 的一个参数(Command),意思是“不要让我进去手动打字,直接执行我后面双引号里的 Python 代码”
四,第四部分:双引号里的 Python 代码核心 这四句代码,就是你在 python manage.py shell 里手动跑通的那几行,它们各司其职: from django.test import Client; 作用:引入 Django 官方的“虚拟浏览器”(客户端模拟器)。 c = Client(); 作用:实例化一个虚拟浏览器对象 c。 response = c.get('/sitemap.xml', HTTP_HOST='hlfuli.com'); 作用:核心触发点 让这个虚拟浏览器在服务器内部自己去访问 /sitemap.xml。就是在这个时候,你写在 sitemaps.py 里的代码被激活了! 它会去读取 models.py,去 MySQL 查那 2000 多个视频,切分那 150 个标签,并在内存里拼装好最新的 XML 数据。HTTP_HOST 确保拼出来的链接全都是 https://hlfuli.com/。 open('sitemap.xml', 'wb').write(response.content) 作用:在当前目录下,新建或覆盖写入一个名为 sitemap.xml 的物理文件,把刚才内存里拼好的大段 XML 文本死死地写进硬盘。
五,总结来说: 现在的架构把“重活”和“轻活”彻底分开了。sitemaps.py 每天只需要在凌晨 3 点给它自己人(Django Shell)默默打工一次,把数据吐成静态文件。白天的谷歌爬虫,全部由 Nginx 拿着这个静态文件去应付。服务器压力直接降为 0,Cloudflare 也绝对不可能再报 520 错误了。
删除文章
展示文章
友情链接
2026.6.8