2026-07-31 16:13:31 +08:00
2026-07-31 16:13:31 +08:00
.
2026-06-11 16:25:34 +08:00
2026-07-11 11:19:43 +08:00
2026-07-31 16:13:31 +08:00
2026-06-10 13:10:20 +08:00
2026-07-31 16:13:31 +08:00
2026-07-11 11:19:43 +08:00
2026-07-11 11:19:43 +08:00
2026-07-31 16:13:31 +08:00
2026-07-11 11:19:43 +08:00
2026-07-31 16:13:31 +08:00
2026-07-11 11:19:43 +08:00
2026-05-28 18:28:09 +00:00
2026-07-31 16:13:31 +08:00
2026-07-11 11:19:43 +08:00
2026-07-11 11:19:43 +08:00
2026-07-31 16:13:31 +08:00

Sport Era 服务器部署脚本

部署脚本位置:

  • Windows 原生:scripts/deploy-server.ps1
  • Bash 兼容版:scripts/deploy-server.sh

脚本通过 SSH 别名 sbnews 连接服务器,打包本地 server 代码并在服务器目录解压安装。Windows 下优先使用 deploy-server.ps1,不依赖 WSL。

Docker 爬虫定时任务

Docker 只负责运行 Python 爬虫和容器内 cron。MySQL、Redis、Nginx 继续使用宿主机服务,容器通过运行时环境变量连接宿主机服务。

配置源:

  • Docker Composedocker/docker-compose.crawler.yml
  • Compose 路径变量示例:docker/.env.example
  • 环境变量示例:docker/.env.docker.example
  • 爬虫源码:docker/crawler
  • 任务清单:docker/crawler/config/crawler_tasks.yaml
  • 任务日志:管理后台 系统设置 -> 系统维护 -> 爬虫任务日志
  • 错误日志:管理后台 系统设置 -> 系统维护 -> 爬虫错误日志

docker/docker-compose.crawler.yml 默认使用 ./crawler 作为构建上下文和 logs/data 挂载目录。如果服务器上的 docker/.env 已存在,需要确认里面是 CRAWLER_DIR=./crawler,或者删除该变量让 Compose 使用默认值。

禁用的定时任务不要放进 Docker 执行清单;如需临时停用某个 Docker 爬虫任务,将 crawler_tasks.yaml 对应任务的 active 改为 false,然后重建或重启 crawler 容器。

当前 Docker 定时任务列表

任务标识 任务名称 动作 Cron
video 视频列表采集 video 54 * * * *
lottery_draw 彩种开奖数据采集 lottery_draw */2 * * * *
match_finish 超时比赛收尾 match_finish */1 * * * *
error_report 爬虫错误报告邮件 error_report */1 * * * *
csl_match 中超赛程页面采集 csl_match 0 */1 * * *
nba_match NBA赛程页面采集 nba_match */1 * * * *
cba_match CBA赛程页面采集 cba_match 0 */1 * * *
epl_match 英超赛程页面采集 epl_match 0 */1 * * *
bundesliga_match 德甲赛程页面采集 bundesliga_match 0 */1 * * *
laliga_match 西甲赛程页面采集 laliga_match 0 */1 * * *
seriea_match 意甲赛程页面采集 seriea_match 0 */1 * * *
ligue1_match 法甲赛程页面采集 ligue1_match 0 */1 * * *
ucl_match 欧冠赛程页面采集 ucl_match 0 */1 * * *
uel_match 欧联赛程页面采集 uel_match 0 */1 * * *
tennis_match 网球赛程页面采集 tennis_match 0 */1 * * *
esports_match 电竞赛程页面采集 esports_match 0 */1 * * *
sports_match 体坛赛程页面采集 sports_match 0 */1 * * *
truth_social Truth Social帖子采集+同步 truth_social 0 */12 * * *
league_news 中超资讯采集 league_news */30 * * * *
article_content 文章内容补全 article_content */1 * * * *
live_detail 实时比赛详情更新 live_detail */1 * * * *
crypto_news 加密货币新闻采集 crypto_news 0 */1 * * *
article_content_fetch 资讯正文抓取 article_content_fetch */1 * * * *
dqd_worldcup 懂球帝世界杯采集 dqd_worldcup */10 * * * *
fifa_worldcup_news FIFA世界杯资讯 fifa_worldcup_news */10 * * * *
lottery_community 49宝典新旧澳六合彩社区采集 lottery_community */10 * * * *
taiwan_lottery_news 台湾彩券资讯采集 taiwan_lottery_news 15 */2 * * *
hkjc_lottery_news 香港赛马会资讯采集 hkjc_lottery_news 45 */2 * * *
cba_news CBA资讯采集 cba_news 20 * * * *
nba_news NBA资讯采集 nba_news 10 * * * *

Docker 爬虫常用命令

以下命令默认在测试服执行:

ssh sbnews
cd /www/wwwroot/api.sbnews.net/docker

查看容器状态:

sudo docker ps --filter name=sport-era-crawler
sudo docker compose -f docker-compose.crawler.yml ps crawler

构建并启动 crawler

sudo docker compose -f docker-compose.crawler.yml up -d --build crawler

重启 crawler

sudo docker compose -f docker-compose.crawler.yml restart crawler

查看容器日志:

sudo docker logs --tail 100 sport-era-crawler

查看容器内已渲染的 cron

sudo docker exec sport-era-crawler sed -n '1,260p' /etc/cron.d/sport-era-crawler

手动执行并写入“爬虫任务日志”:

sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run nba_match --task-key nba_match --task-name 'NBA赛程页面采集' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run live_detail --task-key live_detail --task-name '实时比赛详情更新' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run match_finish --task-key match_finish --task-name '超时比赛收尾' --cron-expression 'manual'
sudo docker exec sport-era-crawler python scripts/docker_task_runner.py run article_content_fetch --task-key article_content_fetch --task-name '资讯正文抓取' --cron-expression 'manual'

仅调试 Python 动作,不写入“爬虫任务日志”:

sudo docker exec sport-era-crawler python main.py nba_match

检查容器依赖:

sudo docker exec sport-era-crawler python -c "import scrapling, browserforge; print('crawler runtime ok')"

PowerShell 一次执行命令

在 Windows PowerShell 中执行:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -RemoteDir /www/wwwroot/api.sbnews.net

如果 sbnews 配置在 C:\Users\Administrator\.ssh\config 中,默认会使用 Windows 的 ssh.exe 读取该配置。

全量发布

不传 commit id 即为全量发布:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -RemoteDir /www/wwwroot/api.sbnews.net

全量模式默认以仓库根目录为源,只打包以下四个子目录:

server/
uniapp/
admin/
docker/

也就是说,远端 RemoteDir 下最终会形成:

<RemoteDir>/server
<RemoteDir>/uniapp
<RemoteDir>/admin
<RemoteDir>/docker
<RemoteDir>/docker/crawler

默认会排除运行态、密钥或较大目录,例如 server/.envdocker/.envdocker/.env.dockerserver/vendorserver/runtimeserver/public/uploadsserver/public/adminserver/public/mobile、爬虫 data/logs/venv,以及 uniapp/node_modulesuniapp/distadmin/node_modulesadmin/dist。如确实需要包含,可追加参数:

--include-env
--include-vendor
--include-runtime
--include-uploads
--include-public-builds
--include-crawler-data

增量发布

传入两个 commit id,脚本会对比差异,只打包 --to 版本中的变更文件,并在服务器删除两个 commit 之间被删除的文件:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -From <old_commit> -To <new_commit> -RemoteDir /www/wwwroot/api.sbnews.net

示例:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -From abc1234 -To def5678 -RemoteDir /www/wwwroot/api.sbnews.net

自动增量发布

如果只是发布最近一次提交的后端改动,可以使用 -AutoIncremental,脚本会默认对比 HEAD~1HEAD

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -AutoIncremental -RemoteDir /www/wwwroot/api.sbnews.net

如果需要一次发布最近 N 个提交的后端改动,可以追加 -AutoIncrementalCommits <n>,例如发布最近 3 个提交会对比 HEAD~3HEAD

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -AutoIncremental -AutoIncrementalCommits 3 -RemoteDir /www/wwwroot/api.sbnews.net

先演练不上传:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -AutoIncremental -RemoteDir /www/wwwroot/api.sbnews.net -DryRun

脚本会在打包和上传前先检查默认打包范围(server + uniapp + admin + docker);如果这些目录内存在未提交、删除或未跟踪文件,会先自动提交这些变更,再继续计算增量范围。可以通过 -AutoCommitMessage "提交说明" 自定义这次自动提交的说明。若存在合并冲突,需要先手动解决。

注意:自动增量只包含指定提交范围内已经提交到 Git 的差异,不会包含工作区未提交文件。需要指定任意起止提交时,继续使用 -From <old_commit> -To <new_commit>

如果当前根目录 Git 只把 serveruniappadmin 记录为 gitlink/submodule,脚本无法拿到对应目录内部的文件级差异;此时会跳过该 gitlink 的自动提交,并把该目录从当前工作区按源码目录补进增量包,保证可以继续发布。

只演练不上传

先确认打包范围、包大小和增量删除清单:

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -RemoteDir /www/wwwroot/api.sbnews.net -DryRun

脚本会在打包后打印 update log:增量模式包含 commit 范围、commit 摘要、变更文件和删除文件;全量模式包含当前最新 commit 和默认打包目录。

每条部署日志都会带耗时,例如 [+0.123s][total 1.456s]+ 表示距离上一条日志的耗时,total 表示本次脚本启动后的累计耗时。服务器解压安装阶段会额外打印 [deploy][remote] 日志,用来判断耗时是在本地、上传还是远端解压。

发布后执行命令

如果需要解压后在服务器项目目录执行命令,可使用 --post-install

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 -Sudo -RemoteDir /www/wwwroot/api.sbnews.net -PostInstall "php think optimize:clear"

发布 uniapp 源码到服务器并在服务器构建

默认发布命令会把 server/uniapp/admin/docker/ 一起同步到远端根目录;如果需要在服务器端构建 uniapp,建议在远端根目录执行构建,再把 H5 产物写回同一套代码下的 server/public/mobile

cd D:\www\sport-era
powershell -ExecutionPolicy Bypass -File .\scripts\deploy-server.ps1 `
  -Sudo `
  -RemoteDir /www/wwwroot/api.sbnews.net `
  -UniappReleasePath ../server/public/mobile `
  -PostInstall "cd uniapp && npm install && npm run build:h5"

说明:

  • -RemoteDir 指向服务器上的项目根目录,解压后里面会同时有 server/uniapp/admin/docker/
  • -UniappReleasePath 会通过环境变量 UNIAPP_RELEASE_PATH 传给 uniapp/scripts/release.mjs;这里传 ../server/public/mobile,是因为构建命令会先 cd uniapp,再把 H5 产物回写到兄弟目录 server/public/mobile
  • 服务器需要预先安装 node >= 18.19.0npm,否则 npm install / npm run build:h5 无法执行。

常见问题

  1. ssh: Could not resolve hostname sbnews:检查 Windows 的 C:\Users\Administrator\.ssh\config 是否存在 Host sbnews,或直接用 -HostName <服务器IP>
  2. PowerShell 禁止执行脚本:使用示例中的 -ExecutionPolicy Bypass -File,或以管理员身份调整当前用户执行策略。
  3. tar: Cannot utimeCannot change mode:远端目录权限不足,请加 -Sudo。脚本会使用 sudo tar 覆盖解压,并默认跳过还原 owner/permission,减少权限冲突。
  4. 增量发布提示 commit 无效:确认 commit id 属于当前根目录 Git 可识别的历史。
  5. root gitlink include paths will be copied from working tree:脚本检测到默认发布范围里仍有 gitlink/submodule 目录,会把这些目录从当前工作区源码补进增量包。
  6. 仍需使用 Bash 兼容版时,可继续运行 bash ./scripts/deploy-server.sh ...
  7. 服务器运行 uniappnode: command not foundnpm: command not found:先在服务器安装 Node.js 18.19+ 与 npm,再执行 -SourceDir uniapp 的发布命令。

likeshop全开源商城
likeshop全开源商城
BuildingAI

likeadminPHP 通用管理后台

🚀快速开发 🛠️ 一键生成代码 后台多端自适应 📱手机端 🖥️PC(电脑)端前台

⬇⬇SaaS版点击这里⬇⬇

🚀🚀🚀docker 本地一句命令快速部署体验

🐳 快速部署

安装启动 docker 之后,在终端运行以下命令即可体验。

 docker run -d --name likeadmin_php  -p 20221:80 -e MYSQL_ROOT_PASSWORD=root  registry.cn-guangzhou.aliyuncs.com/likeadmin/likeadmin_php:latest

如果需要自定义参数永久挂载数据,在终端运行以下命令,其中整个"[]"改成自定义参数。

docker run -d --name likeadmin_php \
-v 【主机存储数据库路径】:/var/lib/mysql \
-v 【主机存储项目代码文件路径】:/var/www/html/likeadmin_php \
-p 【访问端口】:80 \
-e MYSQL_ROOT_PASSWORD=【Mysql密码】 \
registry.cn-guangzhou.aliyuncs.com/likeadmin/likeadmin_php:latest

⚠️ 注意

1.如果出现无法访问,请等待 1 分钟,docker 部署每次会下载最新源码。
2.安装的时候,数据默认帐号为 root,默认密码为 root。
3.docker 快速部署只适合本地部署体验,不熟悉 docker 请勿用于生产环境,可能造成数据丢失等问题。

🛜 访问

访问安装程序:http://127.0.0.1:20221
PC 端管理后台:http://127.0.0.1:20221/admin/login
PC 端前台:http://127.0.0.1:20221/pc/
手机端前台:http://127.0.0.1:20221/mobile/

👀 体验后台

管理后台

地址:https://php.likeadmin.cn/admin
账号:admin 密码:123456

微信小程序前台


手机端网页前台

https://php.likeadmin.cn/mobile

PC(电脑)端网页前台

https://php.likeadmin.cn/pc/

开发文档

地址:https://www.likeadmin.cn

🖥️ 界面预览


📱 手机端前台界面


🖥️PC 端前台界面

👨‍💻 简介

我们希望能够为开源社区做出更多的贡献,推出永久免费开源的 likeadmin 通用前后端分离管理后台系统。遵循 MIT 开源许可协议,您可以免费使用,甚至允许把你基于 likeadmin 开发的软件应用开源、发布、销售。

🧐 进一步了解

🧰 场景介绍

1.likeadmin 已经搭建好前后端分离的底层,包含程序安装、登录、登出、工作台、菜单权限控制、角色、管理员、部门管理、岗位管理、素材管理、网站设置、图库管理等基础功能,无需重复造轮子。更有开发者工具功能,一键生成代码,大大节省开发时间。
2.可视化系统程序安装界面,可自定义安装数据,开发者可快速扩展发行自己的软件产品。
3.likeadmin 定位为通用的软件系统管理后台,方便开发者快速开发软件系统,文档清晰、代码易懂、简单易用。
4.集成通用的微信支付(API3)、微信小程序公众号登录、阿里云、腾讯云短信,阿里云 OSS、腾讯云 COS、七牛云 OSS 等通用模块。

🐙 后端架构方面

1.服务端使用 PHP8.0 开发,性能有突破性的提升。
2.使用最新 ThinkPHP8 框架,目前国内最流行的 PHP 框架,高性能、简单易用、文档齐全、支持 composer 快速安装组件、支持 Redis、支持 PSR 多种规范等。

🐹 前端架构方面

后台

1.使用最流性的前后端分离方案 typescript、vue3、vite 开发,保持了代码的简洁、一致和规范。
2.后台界面使用 element-plus UI 框架,简单精美的后台界面,丰富的组件库,方便快速开发,满足各种后台交互。

手机前台

手机端 uniapp 前台,可以编译成手机 H5 网页、微信小程序、安卓 App,苹果 App 等客户端。

PC 端前台

PC 端前台使用 Nuxt.js,支持服务器端渲染(SSR),对 SEO 友好。

🛠️  代码生成器

一键生成前后端业务代码,大大提升开发效率。

S
Description
No description provided
Readme MIT
97 MiB
Languages
java 25.6%
Vue 22.7%
HTML 17.3%
PHP 15.2%
JavaScript 9.5%
Other 9.7%