Skip to content

💻作者 : SoEasy 📅时间 : 2024年4月3日 🪢个人公众号 : SoEasy同学

一、Hipy项目介绍

1.1 简介

hipy项目是道长的drpy项目仓库的升级版,原drpy仓库组件停止维护。hipy是一个TVBox仓库&源的配置与管理系统。其核心功能如下:

  • 提供了TVBox壳子用的js源的配置整理,可以在线导入,设置,排序,导出完整json配置文件等
  • 支持在服务端管理系统界面上操作
  • 可以内嵌java的t3类型的源,内置custom_spider.jar包
  • 支持在线升级

登录后的页面效果如图: img.png

1.2 项目组成

本项目的仓库分为两个:前端ui和后端server。

仓库地址为:

text
# 前端
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以后,国内环境可以配置一些镜像地址加速镜像下载:

shell
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环境运行。

安装步骤如下:

shell
# 手动下载
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 准备代码

  1. 下载前后端代码到本地,并解压,按照以下规则命令:
  • 后端: hipy-server
  • 前端:hipy-ui
  1. 将代码放在指定目录下,由于docker-compose.yml脚本内配置了文件挂载等,为避免修改,可以按照仓库的默认目录安装。 将hipy-ui 和 hipy-server 放在 /home/hipy/ 目录下
  2. 后端项目提供了启动脚本,启动脚本在 hipy-server/hipy-all-docker/目录下,将该目录下的所有文件复制到 /home/hipy/ 目录下

文件安放位置如下:

shell
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

内容修改如下:

yaml
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即可

shell
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给一下权限

shell
cd /home/hipy
./local_build.sh

脚本会按照上述几大步骤执行,执行成功后,会启动如下4个容器:

shell
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容器的日志,检查请求是否到后端,有无报错

shell
sudo docker logs -f hipy-server

一般是前端连后端地址问题,后端连数据库redis、postgres数据库问题。后者后端初始化数据库问题。

2.Q:执行打包脚本时,docker-compose报错

A: docker-compose需要对应版本,yaml的格式有差异,本项目使用docker-compose.yml文件中,新建了一个网桥,该写法是v2.x.x版本的写法,不能混用