一个开源的多播放源自动采集在线影视网站
这里写自定义目录标题
- 欢迎使用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 文件夹)
效果如下图所示
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博客