Linux端部署

更新历史
日期 版本 作者 更新内容
2024-04-19 1.2 mxdyeah 增删内容
2024-04-12 1.1 mxdyeah 修复说明方法
2024-04-01 1.0 mxdyeah 初版

初版教程,写的还不够完善,请等待后续更新
有问题欢迎到Github发Issues,或者i#mxdyeah.top(# -> @)联系我

注意CentOS官方已计划停止维护CentOS Linux项目
本教程用可能遇到CentOS无法部署情况,部署不了请换系统!

目前完美测试通过:Debian 11,Ubuntu20.04、22.04、23.10,Alpine Linux,Fedora 38、39。
Arm平台遇到BUG请理性提出Issues,Arm平台我手上设备不全。
OpenBSD目前尚未完全测试通过,请等待后续调试。

clone本仓库:

首先建立相关部署文件夹,并cd到相关目录
此位置将作为程序运行位置
以下是示例,请改为实际文件夹

mkdir /path/to/epg
cd /path/to/epg
使用Git Clone到本地
Github镜像站 Github wget下载

考虑到国内用户无法访问Github,所以从镜像站点下载.

  git clone https://bgithub.com/mxdabc/epg/

如果您可以访问Github,推荐使用以下方式下载.
国内用户请选择Github镜像站!!!

  git clone https://github.com/mxdabc/epg/

服务器没有Git的,可以wget以下压缩包
以下压缩包可能版本较老,建议还是用Git

wget -O epg.tar.gz https://res.mxdyeah.top/download/epg-latest.tar.gz

安装依赖

(1)Ubuntu、Debian系

sudo apt-get update 
sudo apt-get install curl git python3 python3-pip -y
pip3 install python-dateutil django==4.2.11 requests beautifulsoup4 mysql-connector-python pymysql urllib3 redis -i https://pypi.tuna.tsinghua.edu.cn/simple
# 如果出现break-system-package,请加强制选项。即在pip3命令最后加入--break-system-package

(2)Alpine Linux

# 默认sudo,有些可能是doas,看情况使用。
sudo apk add --update --no-cache curl jq py3-configobj py3-pip py3-setuptools python3 python3-dev git
pip3 install python-dateutil django==4.2.11 requests beautifulsoup4 mysql-connector-python pymysql urllib3 redis -i https://pypi.tuna.tsinghua.edu.cn/simple

配置数据库

如果您是内网安装,可以使用SQLite3数据库,配置如下。

修改[你的目录]/epg/settings.py,找到以下代码块。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    },
}

MySQL用户需要导入db文件夹中的mysql.sql到相应数据库

修改[你的目录]/epg/settings.py,找到以下代码块。

DATABASES = {
  'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': '数据库名称',
          'USER': '数据库用户名称',
          'PASSWORD': '数据库密码',
          'HOST': '127.0.0.1',
          'PORT': '3306',
  },
}

Linux 配置 Redis

仅并发量高或访问量大的用户需要配置Redis
内网访问量或请求数不高可以不用配置
请点上方链接查看

程序相关配置文件

[你的目录]/util/general.py中有大部分配置

  • crawl_info:需要采集的节目天数、生成xml的天数、是否需要换源等
  • dirs:生成测试文件目录
  • chuanliu_Authorization:如果使用川流TV来源,需要提供此信息

抓取数据并存入数据库

这是运行Web节面之前必须做的,否则Web界面为空。

python main.py  #抓取数据并存入数据库,可设置为定时任务
python main.py -channel #抓取所有来源的频道
python main.py -n CCTV1 #单独测试某一频道  

抓取的频道会加入Channel_list表,需要自己手动整理进Channel表中才可以抓取
可以打开http://ip地址:端口/admin/ 自己配置要抓取的列表

启动Web及API接口

python manage.py runserver 0.0.0.0:80

这里的0.0.0.0:80代表服务器运行在80端口,如果需要修改端口,请修改80为其他

同时服务器需在防火墙放行相应端口,在此不多赘述

Web界面地址

  • 浏览器访问http://ip地址:端口/ 查看已有数据抓取情况.
  • 浏览器访问http://ip地址:端口/admin/ 打开后台
  • 默认用户名密码:admin/admin请一定更改!
  • V2.2及以上版本已修改密码到epg123456
  • DIYP接口http://127.0.0.1/api/diyp/ 需要提供参数 ?ch=CCTV1&date=20230309

进阶配置

# pip 安装uwsgi,并配置相关配置
pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple

Django官方文档