银幕动态网,是一个电影信息展示网站。前端使用 Vue 3 通过调用 api 接口展示数据,api 后端使用 Django REST framework 实现,通过 Scrapy 自动采集数据,数据库使用 MySQL,缓存使用 Redis,项目部署使用 Docker。本项目架设在阿里云 ESC,项目网址http://www.runand.run
- node:用于构建前端项目,构建完成后退出
前端 UI 使用 Element Plus,前端路由使用 Vue Router,状态管理使用 Pinia,网络请求使用 Axios。
- nginx:负责前端展示和反向代理
负责 www 域名的前端展示,负责 api 域名反向代理到 api 服务,负责 admin 域名反向代理到 admin 服务。
- api:后端接口
scrapyd 服务采集的数据转发到 api 服务存入数据库
-
admin:管理数据和管理定时任务
-
beat:定时采集任务
-
worker:采集任务
对采集任务转发到 scrapyd 服务,并监控采集任务的状态。
- scrapyd:数据采集
实际的数据采集功能,通过 log 记录采集日志。
-
mysql:数据存储
-
redis:数据缓存和充当 Celery 消息队列
-
./backend
-
./app
Django 项目代码,使用的第三方库见 ./backend/app/requirements.txt,其配置见 ./backend/app/settings.py -
./automation
Scrapy 项目代码,其配置见 ./backend/automation/scrapy.cfg 和 ./backend/automation/automation/settings.py -
./Dockerfile
Python 项目构建镜像文件,使用的基础镜像为 python:3.10-slim-bookworm
-
-
./frontend
Vue 3 项目代码,使用的第三方库见 ./backend/frontend/package.json -
./mysql
-
./conf/my.cnf
配置文件 -
./data
数据目录,挂载到容器 -
./.env
环境变量配置文件
-
-
./nginx
-
./conf/default.conf
配置文件
-
-
./nobody
用于 worker 和 beat 服务 -
./redis
-
./conf/redis.cnf
配置文件 -
./data
数据目录,挂载到容器
-
-
./scrapd
-
./.env
环境变量配置文件
-
-
./compose.yaml
Docker Compose 配置文件
系统最低配置 2 核 CPU,4G 内存。
chmod -R 777 ./backend/automation
-
./backend/app/.env
DJANGO_SUPERUSER_PASSWORD 需修改 -
./backend/app/api_start.sh
python manage.py createsuperuser --username admin --noinput 命令中 admin 需修改 -
./backend/app/app/settings.py
SECRET_KEY 需修改 DEBUG 改为 False ALLOWED_HOSTS 改为 ['api', 三级域名] DATABASES 需与 ./mysql/conf/my.cnf 和 ./mysql/.env 结合修改 CACHES 需与 ./redis/conf/redis.cnf 结合修改 DEFAULT_FROM_EMAIL,EMAIL_HOST,EMAIL_HOST_PASSWORD,EMAIL_HOST_USER,EMAIL_PORT,EMAIL_USE_TLS 需修改 PARENT_HOST 改为 二级域名 SCRAPYD_USER,SCRAPYD_PASSWORD,SCRAPYD_URL 需与 ./scrapyd/.env 结合修改 -
./backend/automation/scrapy.cfg 配置 deploy 需修改
-
./frontend/index.html 需修改 title
-
./mysql/conf/my.cnf 需修改
-
./mysql/.env 需修改
-
./nginx/conf/default.conf 需修改
-
./redis/conf/redis.cnf 需修改
-
./scrapyd/.env 需修改
cd ./ docker-compose up -d
