当前位置: 首页 > news >正文

一个开源的多播放源自动采集在线影视网站

这里写自定义目录标题

  • 欢迎使用Markdown编辑器
  • GoFilm
    • 简介
    • 项目部署
    • 1、前置环境准备
      • 1.2 redis 配置
    • film-api 后端服务配置
    • 将 GoFilm 项目根目录下的 film 文件夹上传到 linux 服务器的 /opt 目录下
  • 2. 构建运行
    • 1. docker 部署
      • 1.1 安装 docker , docker compose 环境
    • 注意事项:
  • 2、 1panel 部署
    • 安装 1Panel
    • 登录 1Panel 管理面板
    • 启动容器
      • 依次点击 容器 --> 编排 ---> 创建编排
  • 3. 程序初始化
    • 3.1. 管理后台
      • 登录项目管理后台
      • 采集设置初始化
      • 影视分类初始化
      • 影片定时更新
    • 3.2. 网站首页
      • 4. 常见问题
      • 5. 管理后台基本使用说明
  • 1Panel部署(可视化面板操作)
      • 环境准备 (Docker)
      • Centos 系统安装Docker Engine示例
      • 1. 1卸载旧版本Docker
      • 1.2. 设置存储库
      • 1.3. 安装最新版本Docker
      • 启动 Docker 服务
      • 2. 启动流程
    • 配置使用的用户名密码信息需和ocker-compose.yml文件中设置的一致
    • docker-compose.yml (设置服务的启动端口和服务名以及账户密码信息)
      • 3. 常见问题
      • 5. 管理后台基本使用说明
    • 目录结构
    • 关注我的CSDN博客

欢迎使用Markdown编辑器

GoFilm

一个基于 vue 和 gin 实现的在线观影网站

在这里插入图片描述

简介

GoFilm

项目采用vite + vue作为前端技术栈, 使用 ElementPlus 作为UI 框架进行开发

后端程序使用 Gin + gorm + go-redis 等相关框架提供接口服务, 使用 gocolly 和 robfig/cron 进行公共影视资源采集和定时更新功能

项目部署

部署方式

1、前置环境准备

  • linux 服务器
  • 下载 GoFilm 项目

修改默认信息 ( 直接使用默认配置则跳过此步骤 )

###容器默认启动端口,默认账户密码配置

# 文件路径: GoFilm/film/docker-compose.yml
# nginx 容器配置
ports:
- port:80 # port 为浏览器访问的默认端口
# film 容器配置
environment:	# 环境变量,暂未使用MYSQL_PORT: 3661	# mysql 服务连接端口MYSQL_USER: root	# mysql 连接用户MYSQL_PASSWORD: root # mysql 连接用户的密码MYSQL_DBNAME: FilmSite # 默认使用的 mysql 数据库名称REDIS_PORT: 3662	# redis 服务连接端口
ports:- port:3601 # port 为 go 服务端的默认访问端口
# mysql 容器配置
ports:
- port:3306	# port 为 mysql 服务的外部访问端口
environment:MYSQL_ROOT_PASSWORD: 默认密码	# 修改 Mysql 的 root 用户的默认密码MYSQL_DATABASE: 数据库名 # 默认创建的数据库名称
# redis 容器配置
ports:- prot:6379 # port 为 redis 服务的外部访问端口

1.2 redis 配置

# 文件路径 Gofilm/film/data/redis/redis.conf
daemonize no
requirepass 密码 # 设置 redis 服务的访问密码
appendonly no
tcp-keepalive 300 
stop-writes-on-bgsave-error no

film-api 后端服务配置

# 文件路径 GoFilm/film/server/config/DataConfig.go
# mysql 服务配置信息 设置 mysql 的 root 用户密码和数据库名为 docker-compose.yml 中对应的信息
MysqlDsn = "root:密码@(mysql:3306)/数据库名称?charset=utf8mb4&parseTime=True&loc=Local"
# Redis 连接信息,设置 redis 访问密码为 Gofilm/film/data/redis/redis.conf 中的密码
RedisPassword = `root`

将 GoFilm 项目根目录下的 film 文件夹上传到 linux 服务器的 /opt 目录下

上传完成后路径为: /opt/film (只上传 GoFilm 项目中的 film 文件夹)
效果如下图所示

B

2. 构建运行

1. docker 部署

1.1 安装 docker , docker compose 环境

Centos 安装 Docker Engine 官方文档链接

Ubuntu 安装 Docker Engine 官方文档链接

# Centos 系统安装 Docker Engine 示例
# 1. 卸载旧版本 Dockersudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

进入项目部署文件目录 /opt/film

执行命令 cd /opt/film 进入项目目录

执行构建并运行容器

执行命令 docker compose up -d 构建拉取相关镜像并启动

等待容器构建并启动,启动完毕后可通过 docker compose ps 查看容器是否均正常启动
在这里插入图片描述

docker compose 相关命令

docker compose ps 查看已启动的相关容器, docker compose ps -a 查看所有相关容器
docker compose start 启动相关服务容器
docker compose restart 重启相关服务容器
docker compose up -d 以后台服务的方式构建并启动相关服务
docker compose down 删除相关服务容器及关联资源

注意事项:

docker compose 系列命令需在 docker-compose.yml 文件目录下执行
在其他路径下执行需使用 -f /opt/film/docker-compose.yml 指定关联的文件路径
server 相关文件改变后,需使用 docker rmi 容器名|ID 删除 film-film 镜像

2、 1panel 部署

安装 1Panel

  • 根据服务器系统选择对应的安装命令,1Panel 官方文档
# RedHat, Centos
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
# Ubuntu
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
# Debian
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
  • 通过设置的启动端口,在浏览器中进行访问,默认访问路径 : http://目标服务器 IP 地址:目标端口/安全入口

登录 1Panel 管理面板

启动容器

依次点击 容器 --> 编排 —> 创建编排

在这里插入图片描述

  • 选择 来源 --> 路径选择,输入 GoFilm 安装文件的存放路径 /opt/film/docker-compose.yml
    在这里插入图片描述
  • 等待编排完成,关闭编排添加页,点击 容器 查看容器启动状态
    在这里插入图片描述

3. 程序初始化

3.1. 管理后台

登录项目管理后台

访问路径: http://服务器IP:3600/manage
默认账户密码: admin admin

采集设置初始化

  • 点击左侧菜单,采集管理 --> 影视采集,选择启用默认采集站点或自行添加站点信息

  • 启用需要采集的站点,将对应站点的是否启用状态设置为启用
    在这里插入图片描述

  • 选择主站点 (必要), 在需要设置的站点操作栏点击蓝色编辑按钮,设置站点权重为主站点
    在这里插入图片描述

  • 点击一键采集,选择需要执行采集的站点,设置采集时长为 - 1 (采集全部), 点击确认执行
    在这里插入图片描述

  • 等待采集完成 (手动采集一次即可,后续无需重复手动采集)

影视分类初始化

  • 点击左侧菜单,影片管理 --> 影视分类,对需要展示和隐藏的分类进行设置 (用于网站顶部导航以及首页数据展示)
  • 点击对应的分类操作栏对分类名称等默认信息进行修改
    在这里插入图片描述

影片定时更新

  • 点击左侧菜单,定时任务 --> 任务管理,选择启用默认的定时任务 (默认每 20 分钟采集一次最新 6 小时内更新的影片)
  • 自定义定时任务:
  • 任务类型 (自动更新), 指定周期内对所有已启用的采集站点进行更新采集
  • 任务类型 (自定义更新), 指定周期内仅对选中的站点进行更新采集
    在这里插入图片描述

3.2. 网站首页

管理后台进行相关设置并完成主站点采集后,访问首页地址: http://服务器IP:3600/index

首页访问提示导航数据获取失败或服务器繁忙,请等待数据采集完成后,重新访问

4. 常见问题

CPU 架构为 ARM 的服务器部署时 需修改Dockerfile 文件中的 GOARCH=amd64 为 GOARCH=arm
服务器内存偏小时, 可能自行将redis容器关闭, 需在宿主机 /etc/sysctl.conf 文件中追加 vm.overcommit_memory = 1 配置, 并执行 sysctl vm.overcommit_memory=1 使其生效

5. 管理后台基本使用说明

访问 http://xxx.xxx.xxx/manage 进行登录, 用户名 密码: admin admin , 登录成功后自行修改
使用 采集管理 -> 影视采集 功能进行采集站信息的添加和更新, 系统初始化时有预留站点信息, 自行斟酌选择
首先选择一个站点为主站点, 然后选择 采集一周, 一天, 或 全部, 进行主站点的数据采集, (前台数据全来自于主站点, 因此主站点只需要存在一个, 否则会冲突)
主站点信息采集完成后则可在 影片管理 -> 影视分类 中进行主页分类展示信息的设置, 选择需要展示的分类信息, 以及分类的名称管理 (自行摸索如何使用)
附属站点即影片的多个播放来源, 可自行进行选择性的采集添加
定时任务:
系统默认添加一条规则, 但未启用, 该规则为每20分钟更新一次所有已开启的采集站的近3小时内更新的数据, 开启后则基本满足资源更新需求
可自定义定时任务, 使用相关功能可自主选择对某些站点进行定时更新功能

1Panel部署(可视化面板操作)

使用指南

  • 后端项目路径 GoFilm/server, 包含 项目结构说明, 后端程序源码, API接口说明, 本地启动注意事项 查看
  • 前端项目路径 GoFilm/client, 包含 项目结构说明, 前端项目源码, 配置文件说明, 本地启动方式 [查看]/GoFilm/tree/main/client)
  • 部署文件 GoFilm/film, 包含项目部署所需的所有文件以及相应的说明文件 查看
  • 程序使用文档: 提供项目安装部署以及相应的初始化使用步骤说明 点击前往

环境准备 (Docker)

Linux 服务器
安装 docker, docker compose 服务
Centos 安装 Docker Engine 官方文档链接
Ubuntu 安装 Docker Engine 官方文档链接

Centos 系统安装Docker Engine示例

1. 1卸载旧版本Docker

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

1.2. 设置存储库

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

1.3. 安装最新版本Docker

$ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动 Docker 服务

sudo systemctl start docker

2. 启动流程

如果使用默认配置信息,则执行如下流程

将本项目中的 film 文件夹完整的上传到服务器的 /opt/ 目录下 (放在其他目录下时需同步修改 Dockerfile 以及 docker-compose.yml 文件中的相关路径)
进入服务器中的 /opt/film/ 目录并执行 docker compose build 构建相关docker镜像
在 /opt/film/ 目录下执行命令 docker compose up -d (后台运行服务)
使用 docker ps 命令查看相关服务是否成功启动
等待后端程序初始化工作和数据爬取, 大概3~8分钟左右
停止服务 docker compose down
查看服务容器运行状态 docker ps
在浏览器中访问管理后台: http://xxx.xxx.xxx/manage,
登录 默认 用户名 密码: admin admin
使用后台功能中的采集管理功能进行影视数据采集 (采集任务开启后需等待一段时间)
浏览器中访问前台地址查看效果, 例: http://xxx.xxx.xxx/index (点击管理后台的logo菜单可直接跳转到前台页面)
3.服务配置信息修改
film 后端接口服务配置, film/server 下存放了程序的构建文件, 修改后重新构建镜像即可
mysql 用户名密码和端口信息直接修改 docker-compose.yml 文件中的相关配置即可
redis 服务信息配置需修改 /film/data/redis/redis.conf 文件
nginx 配置文件 /film/data/nginx/nginx.conf
注意事项

mysql 和 redis 服务配置修改后需要同步修改 /film/server/config/DataConfig.go 中的连接地址和账户名信息

配置使用的用户名密码信息需和ocker-compose.yml文件中设置的一致

const (
// mysql服务配置信息修改
mysqlDsn = “用户名:密码$@(服务名:服务端口)/FilmSite?charset=utf8mb4&parseTime=True&loc=Local”

/*redis 配置信息RedisAddr host:portRedisPassword redis访问密码RedisDBNo 使用第几号库
*/
RedisAddr = `服务名:服务端口`
RedisPassword = `密码`
RedisDBNo = 0

)

docker-compose.yml (设置服务的启动端口和服务名以及账户密码信息)

mysql:container_name: film_mysqlimage: mysqlports:- 3610:3306environment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: FilmSiteredis:container_name: film_redisimage: redisports:- 3620:6379

3. 常见问题

CPU 架构为 ARM 的服务器部署时 需修改Dockerfile 文件中的 GOARCH=amd64 为 GOARCH=arm
服务器内存偏小时, 可能自行将redis容器关闭, 需在宿主机 /etc/sysctl.conf 文件中追加 vm.overcommit_memory = 1 配置, 并执行 sysctl vm.overcommit_memory=1 使其生效

5. 管理后台基本使用说明

访问 http://xxx.xxx.xxx/manage 进行登录, 用户名 密码: admin admin , 登录成功后自行修改
使用 采集管理 -> 影视采集 功能进行采集站信息的添加和更新, 系统初始化时有预留站点信息, 自行斟酌选择
首先选择一个站点为主站点, 然后选择 采集一周, 一天, 或 全部, 进行主站点的数据采集, (前台数据全来自于主站点, 因此主站点只需要存在一个, 否则会冲突)
主站点信息采集完成后则可在 影片管理 -> 影视分类 中进行主页分类展示信息的设置, 选择需要展示的分类信息, 以及分类的名称管理 (自行摸索如何使用)
附属站点即影片的多个播放来源, 可自行进行选择性的采集添加
定时任务:
系统默认添加一条规则, 但未启用, 该规则为每20分钟更新一次所有已开启的采集站的近3小时内更新的数据, 开启后则基本满足资源更新需求
可自定义定时任务, 使用相关功能可自主选择对某些站点进行定时更新功能

目录结构

  • client 客户端项目目录 Client简介
  • server 服务端接口项目目录 Server简介
  • film 项目部署相关配置目录 film 项目安装
  • 详细说明请查看具体目录中的README文件
GoFilm-main                            
├─ client                              
│  ├─ public                           
│  │  └─ favicon.ico                   
│  ├─ src                              
│  │  ├─ assets                        
│  │  │  ├─ css                        
│  │  │  │  ├─ classify.css            
│  │  │  │  ├─ film.css                
│  │  │  │  └─ pagination.css          
│  │  │  └─ image                      
│  │  │     ├─ 404.png                 
│  │  │     └─ play.png                
│  │  ├─ components                    
│  │  │  ├─ Loading                    
│  │  │  │  ├─ index.ts                
│  │  │  │  └─ Loading.vue             
│  │  │  ├─ FilmList.vue               
│  │  │  ├─ Footer.vue                 
│  │  │  ├─ Header.vue                 
│  │  │  ├─ RelateList.vue             
│  │  │  └─ Util.vue                   
│  │  ├─ router                        
│  │  │  └─ router.ts                  
│  │  ├─ utils                         
│  │  │  ├─ cookie.ts                  
│  │  │  └─ request.ts                 
│  │  ├─ views                         
│  │  │  ├─ error                      
│  │  │  │  └─ Error404.vue            
│  │  │  ├─ index                      
│  │  │  │  ├─ FilmClassify.vue        
│  │  │  │  ├─ FilmClassifySearch.vue  
│  │  │  │  ├─ FilmDetails.vue         
│  │  │  │  ├─ Home.vue                
│  │  │  │  ├─ Play.vue                
│  │  │  │  └─ SearchFilm.vue          
│  │  │  └─ IndexHome.vue              
│  │  ├─ App.vue                       
│  │  ├─ main.ts                       
│  │  ├─ style.css                     
│  │  └─ vite-env.d.ts                 
│  ├─ auto-imports.d.ts                
│  ├─ components.d.ts                  
│  ├─ index.html                       
│  ├─ package.json                     
│  ├─ README.md                        
│  ├─ tsconfig.json                    
│  ├─ tsconfig.node.json               
│  └─ vite.config.ts                   
├─ film                                
│  ├─ data                             
│  │  ├─ nginx                         
│  │  │  ├─ html                       
│  │  │  │  ├─ assets                  
│  │  │  │  │  ├─ 404-b813c94a.png     
│  │  │  │  │  ├─ index-984712d6.js    
│  │  │  │  │  ├─ index-de4c7ff5.css   
│  │  │  │  │  └─ play-bb9c8990.png    
│  │  │  │  ├─ favicon.ico             
│  │  │  │  └─ index.html              
│  │  │  └─ nginx.conf                 
│  │  └─ redis                         
│  │     └─ redis.conf                 
│  ├─ server                           
│  │  ├─ config                        
│  │  │  └─ DataConfig.go              
│  │  ├─ controller                    
│  │  │  ├─ IndexController.go         
│  │  │  └─ SpiderController.go        
│  │  ├─ logic                         
│  │  │  ├─ IndexLogic.go              
│  │  │  └─ SpiderLogic.go             
│  │  ├─ model                         
│  │  │  ├─ Categories.go              
│  │  │  ├─ Movies.go                  
│  │  │  ├─ RequestParams.go           
│  │  │  ├─ ResponseJson.go            
│  │  │  └─ Search.go                  
│  │  ├─ plugin                        
│  │  │  ├─ common                     
│  │  │  │  ├─ dp                      
│  │  │  │  │  ├─ ProcessCategory.go   
│  │  │  │  │  └─ ProcessMovies.go     
│  │  │  │  └─ param                   
│  │  │  │     └─ SimpleParam.go       
│  │  │  ├─ db                         
│  │  │  │  ├─ mysql.go                
│  │  │  │  └─ redis.go                
│  │  │  └─ spider                     
│  │  │     ├─ Spider.go               
│  │  │     ├─ SpiderCron.go           
│  │  │     └─ SpiderRequest.go        
│  │  ├─ router                        
│  │  │  └─ router.go                  
│  │  ├─ go.mod                        
│  │  ├─ go.sum                        
│  │  ├─ main.go                       
│  │  └─ README.md                     
│  ├─ docker-compose.yml               
│  ├─ Dockerfile                       
│  └─ README.md                        
├─ server                              
│  ├─ config                           
│  │  └─ DataConfig.go                 
│  ├─ controller                       
│  │  ├─ IndexController.go            
│  │  └─ SpiderController.go           
│  ├─ logic                            
│  │  ├─ IndexLogic.go                 
│  │  └─ SpiderLogic.go                
│  ├─ model                            
│  │  ├─ Categories.go                 
│  │  ├─ Movies.go                     
│  │  ├─ RequestParams.go              
│  │  ├─ ResponseJson.go               
│  │  └─ Search.go                     
│  ├─ plugin                           
│  │  ├─ common                        
│  │  │  ├─ dp                         
│  │  │  │  ├─ ProcessCategory.go      
│  │  │  │  └─ ProcessMovies.go        
│  │  │  ├─ param                      
│  │  │  │  └─ SimpleParam.go          
│  │  │  └─ util                       
│  │  │     ├─ FileDownload.go         
│  │  │     └─ Request.go              
│  │  ├─ db                            
│  │  │  ├─ mysql.go                   
│  │  │  └─ redis.go                   
│  │  └─ spider                        
│  │     ├─ Spider.go                  
│  │     └─ SpiderCron.go              
│  ├─ router                           
│  │  └─ router.go                     
│  ├─ go.mod                           
│  ├─ go.sum                           
│  ├─ main.go                          
│  └─ README.md                        
├─ LICENSE                             
└─ README.md                           

【更新汇总】

关注我的CSDN博客

更多资源可以查看我的CSDN博客

相关文章:

  • 15.进程间通信(一)
  • c++复习_第一天(引用+小众考点)
  • 2025吉林CCPC 题解(前六题)
  • 【NLP基础知识系列课程-Tokenizer的前世今生第四课】生物信息中的 Tokenizer 策略:如何切开一段基因?
  • 【NLP基础知识系列课程-Tokenizer的前世今生第五课】从静态到可学:Tokenizer 的自适应演化之路
  • C/C++的OpenCV的锐化
  • ojs导入显示空白页错误信息
  • Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【高通蓝牙hal主要流程介绍-下】
  • Jmeter一些元件使用的详细记录
  • 详解MYSQL索引失效问题排查
  • 如何描述BUG
  • ubuntu22.04 安装 SecureCRT8.7.3
  • 5.0.7 TabControl的使用
  • Java+Playwright自动化-2-环境准备与搭建-基于Maven
  • ViewModel
  • 设计模式系列(06):抽象工厂模式(Abstract Factory)
  • Vue组件化
  • 用AxumStatusCode细化Rust Web标准格式响应
  • [Vue]浅浅了解vue3响应式的基本原理
  • 企业网站建设太原网站建设/2022近期时事热点素材摘抄
  • 整形网站开发/搜索引擎优化的定义是什么
  • 南京建站方案/营销战略有哪些内容
  • 建一个自己的网站价格/网址关键词查询网站
  • 西坝河网站建设/三只松鼠有趣的软文
  • wordpress 二级目录404/百度关键词网站排名优化软件