💻作者 : SoEasy 📅时间 : 2024年4月3日 🪢个人公众号 : SoEasy同学
一、Hipy项目介绍
1.1 简介
hipy项目是道长的drpy项目仓库的升级版,原drpy仓库组件停止维护。hipy是一个TVBox仓库&源的配置与管理系统。其核心功能如下:
- 提供了TVBox壳子用的js源的配置整理,可以在线导入,设置,排序,导出完整json配置文件等
- 支持在服务端管理系统界面上操作
- 可以内嵌java的t3类型的源,内置custom_spider.jar包
- 支持在线升级
登录后的页面效果如图:
1.2 项目组成
本项目的仓库分为两个:前端ui和后端server。
仓库地址为:
# 前端
https://github.com/hjdhnx/hipy-ui
# 后端
https://github.com/hjdhnx/hipy-server
前端项目基于以下技术栈实现:vue2 | ruoyi | element-ui。通过nginx发布,可以在vercel上托管
后端项目基于以下技术栈: python|fastapi|redis|sqlachemy|postgresql|mysql|sqlite|playwright
1.3 项目架构
前后端分离架构,后端为单体hipy-server服务,依赖redis缓存以及数据库(postgres、sqlite、mysql等)。推荐使用postgres数据库
本地启动,需要先搭建好中间件环境redis和postgres数据库。
后端基于python3.8实现,需要提前设置好开发环境及依赖环境,
推荐使用docker或者docker-compose安装,项目提供了相关脚本
二、如何安装启动
2.1 准备工作
2.1.1 安装依赖环境
首先准备ubuntu20.0.4系统环境,以本地安装的虚拟机为例,虚拟机本地ip为 192.168.85.128
登录虚拟机后,安装docker环境,和docker-compose环境。
2.1.2 安装docker
docker环境要求版本尽量高,至少1.9以上。不清楚安装教程的自行谷歌
安装好docker以后,国内环境可以配置一些镜像地址加速镜像下载:
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
"https://dockerproxy.com"
]
}
systemctl daemon-reload
systemctl restart docker
2.1.3 安装docker-compose
由于hipy后端依赖两个中间件,在没有k8s容器编排环境下,可以安装docker-compose环境运行。
安装步骤如下:
# 手动下载
wget https://ghproxy.liuzhicong.com/https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-linux-x86_64
# 上传文件到root目录,并移动
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose --version
安装文档在项目的目录下: /hipy-server/hipy-all-docker/安装docker-compose.sh
注意docker-compose的版本是v2.x.x。如果是其它环境如v1、V3那仓库提供的yaml脚本可能不兼容
2.2 准备代码
- 下载前后端代码到本地,并解压,按照以下规则命令:
- 后端: hipy-server
- 前端:hipy-ui
- 将代码放在指定目录下,由于docker-compose.yml脚本内配置了文件挂载等,为避免修改,可以按照仓库的默认目录安装。 将hipy-ui 和 hipy-server 放在 /home/hipy/ 目录下
- 后端项目提供了启动脚本,启动脚本在 hipy-server/hipy-all-docker/目录下,将该目录下的所有文件复制到 /home/hipy/ 目录下
文件安放位置如下:
root@ubuntu:/home/hipy# pwd
/home/hipy
root@ubuntu:/home/hipy# ls -la
total 52
-rw-r--r-- 1 root root 2492 Apr 2 18:37 build.sh
-rw-r--r-- 1 root root 1665 Apr 2 18:53 docker-compose.yml
-rw-r--r-- 1 root root 1186 Apr 2 18:37 Dockerfile
-rw-r--r-- 1 root root 676 Apr 2 20:24 .env
-rw-r--r-- 1 root root 172 Apr 2 18:45 .env.staging
drwxr-xr-x 5 root root 4096 Apr 2 18:27 hipy-server
drwxr-xr-x 4 root root 4096 Mar 21 08:19 hipy-ui
-rw-r--r-- 1 root root 1855 Apr 2 18:37 hipy_update.sh
-rwxr-xr-x 1 root root 2539 Apr 2 19:12 local_build.sh
drwxr-xr-x 3 root root 4096 Apr 2 18:37 nginx
-rw-r--r-- 1 root root 3582 Apr 2 18:37 package.json
-rw-r--r-- 1 root root 1510 Apr 2 18:37 使用说明.txt
-rw-r--r-- 1 root root 338 Apr 2 18:37 安装docker-compose.sh
注意有两个隐藏文件.env和.env.staging
分别是前后端的配置文件,需要修改。后面会介绍~
2.3 修改配置
本次启动过程可以参看/home/hipy/使用说明.txt,大致描述了过程
以本地启动脚本/home/hipy/local_build.sh为例进行介绍。
local_build.sh是本项目的全容器一键搭建HIPY项目————本地文件搭建脚本,为了给访问github不方便的环境准备的。 基本流程如下:
- 1.清理旧项目,旧容器
- 2.创建数据库挂载路径
- 3.本地放好源代码,上面步骤已放好
- 4.准备hipy-server的配置文件及数据库初始化脚本
- 5.docker制作hipy-server容器镜像
- 6.docker-compose启动后端各个容器,hipy-server、redis、postgres
- 7.准备前端配置文件,创建打包容器,初始化后端数据库,重启所有环境
整个过程中需要按照以下步骤修改:
2.3.1 修改后端配置.env文件
由于docker-compose.yml中,是以postgres作为数据库的,故修改.env为pg启动。
将项目hipy-server/app/configs/hipy-postgresql.env模板文件复制到/home/hipy/目录下,文件名修改成.env
内容修改如下:
ECHO_SQL=false
# selenium,hipy-sniffer,playwright 三选一
DEFAULT_SNIFFER=selenium
SNIFFER_URL=http://192.168.85.128:5708
API_DOMAIN=http://192.168.85.128:5707
AUTO_ADD_PERM_LABEL=true
PORT=5707
RELOAD=false
LOGIN_WITH_CAPTCHA=false
PROJECT_NAME=HiPy-嗨派
WEB_DOMAIN=https://192.168.85.128:8008
#SECRET_KEY=DFGG45645674GHFGHFH
SQLALCHEMY_ENGINE=postgresql
SQL_HOST=192.168.85.128
SQL_PORT=5432
SQL_USERNAME=hipy
SQL_PASSWORD=hipy
SQL_DATABASE=hipy
REDIS_HOST=192.168.85.128
REDIS_PORT=6379
REDIS_PASSWORD=hipy
REDIS_DB=3
SMTP_HOST=smtp.qq.com
SMTP_USER=john_doe_1996@foxmail.com
SMTP_PASSWORD=ndkhgrgoimyvbhei
EMAIL_FROM_EMAIL=john_doe_1996@foxmail.com
IP_AGENTS=[""]
主要修改了以下配置:
1.SNIFFER_URL、API_DOMAIN、WEB_DOMAIN地址,默认127.0.0.1,修改为虚拟机ip地址,不同环境可能不同
2.pg数据库的SQL_HOST地址,也修改为虚拟机ip地址。因为后端hipy-server是运行在容器中,连接其它容器里的pg时,要么通过网桥、要么通过宿主机连接,这里配置虚拟机ip
3.redis的连接地址同上,由于docker-compose.yml脚本中redis配置了密码,这里也要指定密码:REDIS_PASSWORD=hipy
2.3.2 修改前端配置文件.env.staging
前端需要配置访问api地址,修改/home/hipy/.env.staging文件,VUE_APP_BASE_API和VUE_APP_MEDIA_BASE,指定虚拟机ip即可
NODE_ENV=production
# just a flag
ENV='staging'
# base api
VUE_APP_BASE_API='http://虚拟机ip:5707/api/v1/'
VUE_APP_MEDIA_BASE='http://虚拟机ip:5707/media/'
2.4 运行打包
运行脚本:/home/hipy/local_build.sh,碰到需要执行权限的chmod +x xxx给一下权限
cd /home/hipy
./local_build.sh
脚本会按照上述几大步骤执行,执行成功后,会启动如下4个容器:
root@ubuntu:/home/hipy# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
968eec78f827 nginx "/docker-entrypoint.…" 4 hours ago Up 4 hours 8008/tcp, 0.0.0.0:8008->80/tcp, :::8008->80/tcp hipy-ui
934183bc176e hipy-server:hipy "python3 ./main.py" 4 hours ago Up 4 hours 0.0.0.0:5707->5707/tcp, :::5707->5707/tcp hipy-server
70b11ea942cc postgres:latest "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp hipy-pg
e6498fc38c2c redis:latest "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp hipy-redis
2.5 访问测试
访问地址:http://虚拟机ip:8008/
初始化账号:
角色 用户名 密码
管理员 admin admin123
运维员 opt opt123
普通用户 user 123456
道长 hjdhnx 123456
三、问题
1.Q:前端能够打开页面,登录失败,后端超时。
A: 查看hipy-server容器的日志,检查请求是否到后端,有无报错
sudo docker logs -f hipy-server
一般是前端连后端地址问题,后端连数据库redis、postgres数据库问题。后者后端初始化数据库问题。
2.Q:执行打包脚本时,docker-compose报错
A: docker-compose需要对应版本,yaml的格式有差异,本项目使用docker-compose.yml文件中,新建了一个网桥,该写法是v2.x.x版本的写法,不能混用