这里写自定义目录标题
- 欢迎使用Markdown编辑器
- GoFilm
- [2. 构建运行](#2. 构建运行)
-
- [1. docker 部署](#1. docker 部署)
-
- [1.1 安装 docker , docker compose 环境](#1.1 安装 docker , docker compose 环境)
- 注意事项:
- [2、 1panel 部署](#2、 1panel 部署)
-
- [安装 1Panel](#安装 1Panel)
- [登录 1Panel 管理面板](#登录 1Panel 管理面板)
- 启动容器
-
- [依次点击 容器 --> 编排 ---> 创建编排](#依次点击 容器 --> 编排 ---> 创建编排)
- [3. 程序初始化](#3. 程序初始化)
- 1Panel部署(可视化面板操作)
-
-
- 环境准备 (Docker)
- [Centos 系统安装Docker Engine示例](#Centos 系统安装Docker Engine示例)
- [1. 1卸载旧版本Docker](#1. 1卸载旧版本Docker)
- [1.2. 设置存储库](#1.2. 设置存储库)
- [1.3. 安装最新版本Docker](#1.3. 安装最新版本Docker)
- [启动 Docker 服务](#启动 Docker 服务)
- [2. 启动流程](#2. 启动流程)
- 配置使用的用户名密码信息需和ocker-compose.yml文件中设置的一致
- docker-compose.yml (设置服务的启动端口和服务名以及账户密码信息)
-
- [3. 常见问题](#3. 常见问题)
- [5. 管理后台基本使用说明](#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. 卸载旧版本 Docker
sudo 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:port
RedisPassword redis访问密码
RedisDBNo 使用第几号库
*/
RedisAddr = `服务名:服务端口`
RedisPassword = `密码`
RedisDBNo = 0
)
docker-compose.yml (设置服务的启动端口和服务名以及账户密码信息)
mysql:
container_name: film_mysql
image: mysql
ports:
- 3610:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: FilmSite
redis:
container_name: film_redis
image: redis
ports:
- 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小时内更新的数据, 开启后则基本满足资源更新需求
可自定义定时任务, 使用相关功能可自主选择对某些站点进行定时更新功能
目录结构
text
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博客