From f37c1c76aa0b013e1d2cb63246a71a856b11dd20 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sun, 4 Jan 2026 19:21:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 375 +++++++++++++++++++++++++++++++++++++++++++++++++++ logs/app.log | 1 + 2 files changed, 376 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3db2a2 --- /dev/null +++ b/README.md @@ -0,0 +1,375 @@ +# 家庭日报系统 + +一个轻量化的家庭日报系统,用于自动汇总昨日信息(阅读、收获),生成今日计划,注重生活化、个性化和低门槛使用。支持上传文件或视频作为附加内容,并可生成PDF报告定时发送至邮箱。 + +## 主要功能 + +1. **昨日记录** + - 阅读记录(支持书籍/文章/视频类型) + - 感悟记录 + - 支持文件/视频上传 + - 日期自动设置为当日,无需手动填写 + +2. **家庭事项管理** + - 事项添加、编辑、删除 + - 按类型(采购/家务)、状态筛选 + - 优先级管理 + - 截止日期设置 + +3. **今日计划生成** + - 基于昨日状态和待处理事项自动生成 + - 支持手动调整 + - 完成状态标记 + - 优先级管理 + +4. **报告生成** + - 自动整合昨日记录和今日计划 + - 可视化统计图表 + - 支持PDF格式导出 + - 支持历史报告查看 + +5. **邮件发送** + - 支持手动发送PDF报告 + - 支持定时发送 + - 可配置SMTP服务器、端口、用户名、密码等 + +6. **系统配置** + - 邮件配置 + - 发送时间设置 + - 收件人邮箱设置 + +## 技术栈 + +- **Python 3.9+**:核心开发语言 +- **Django 5.1.4**:Web框架 +- **SQLite**:轻量化数据库 +- **Bootstrap 5**:前端样式 +- **Chart.js**:数据可视化 +- **WeasyPrint**:PDF生成 +- **Celery**:定时任务 +- **Redis**:消息队列(用于Celery) +- **django-celery-beat**:定时任务管理 +- **loguru**:日志记录 + +## 项目结构 + +``` +diary-family/ +├── diary_family/ # Django项目目录 +├── core/ # 核心应用 +│ ├── migrations/ # 数据库迁移 +│ ├── models.py # 数据模型 +│ ├── views.py # 视图函数 +│ ├── forms.py # 表单定义 +│ ├── templates/ # 模板文件 +│ ├── static/ # 静态文件 +│ ├── tasks.py # Celery任务 +│ └── apps.py # 应用配置 +├── media/ # 媒体文件存储 +├── logs/ # 日志目录 +├── reports/ # PDF报告存储 +├── manage.py # Django管理脚本 +└── requirements.txt # 依赖文件 +``` + +## 本地开发 + +### 安装依赖 + +```bash +pip install -r requirements.txt +``` + +### 数据库迁移 + +```bash +python manage.py migrate +``` + +### 启动开发服务器 + +```bash +python manage.py runserver +``` + +### 访问系统 + +- 浏览器打开 http://127.0.0.1:8000/ +- 管理员登录:http://127.0.0.1:8000/admin/ (用户名:admin,密码:admin123) + +## 部署到Ubuntu服务器 + +### 1. 准备工作 + +#### 1.1 安装必要软件 + +```bash +sudo apt update +sudo apt install -y python3-pip python3-venv git nginx supervisor redis-server +``` + +#### 1.2 创建项目目录 + +```bash +# 注意:将 username 替换为您的实际用户名 +sudo mkdir -p /var/www/diary-family +sudo chown username:username /var/www/diary-family +cd /var/www/diary-family +``` + +#### 1.3 克隆代码 + +```bash +git clone http://14.103.237.41:16001/xiaji/diary-family.git . +``` + +### 2. 配置虚拟环境 + +```bash +# 创建虚拟环境 +python3 -m venv venv + +# 激活虚拟环境 +source venv/bin/activate + +# 安装依赖 +pip install -r requirements.txt +``` + +### 3. 配置数据库 + +```bash +# 激活虚拟环境(如果未激活) +source venv/bin/activate + +# 执行数据库迁移 +python manage.py migrate + +# 创建超级用户 +python manage.py createsuperuser +``` + +### 4. 配置Gunicorn + +#### 4.1 安装Gunicorn + +```bash +source venv/bin/activate +pip install gunicorn +``` + +#### 4.2 创建Gunicorn配置文件 + +```bash +nano /var/www/diary-family/gunicorn_config.py +``` + +内容如下: + +```python +bind = "127.0.0.1:8000" +workers = 3 +django_settings_module = "diary_family.settings" +``` + +### 5. 配置Supervisor + +#### 5.1 创建Supervisor配置文件 + +```bash +sudo nano /etc/supervisor/conf.d/diary-family.conf +``` + +内容如下: + +```ini +[program:diary-family] +directory=/var/www/diary-family +command=/var/www/diary-family/venv/bin/gunicorn --config /var/www/diary-family/gunicorn_config.py diary_family.wsgi:application +autostart=true +autorestart=true +startretries=3 +user=username +redirect_stderr=true +stdout_logfile=/var/log/diary-family.log +stderr_logfile=/var/log/diary-family.err.log +``` + +**注意**:将 `user=username` 中的 `username` 替换为您的实际用户名,确保该用户名不会与nginx默认用户(www-data)冲突。 + +#### 5.2 配置Celery Worker + +```bash +sudo nano /etc/supervisor/conf.d/diary-family-celery.conf +``` + +内容如下: + +```ini +[program:diary-family-celery] +directory=/var/www/diary-family +command=/var/www/diary-family/venv/bin/celery -A diary_family worker --loglevel=info +autostart=true +autorestart=true +startretries=3 +user=username +redirect_stderr=true +stdout_logfile=/var/log/diary-family-celery.log +stderr_logfile=/var/log/diary-family-celery.err.log +``` + +#### 5.3 配置Celery Beat + +```bash +sudo nano /etc/supervisor/conf.d/diary-family-celery-beat.conf +``` + +内容如下: + +```ini +[program:diary-family-celery-beat] +directory=/var/www/diary-family +command=/var/www/diary-family/venv/bin/celery -A diary_family beat --loglevel=info +autostart=true +autorestart=true +startretries=3 +user=username +redirect_stderr=true +stdout_logfile=/var/log/diary-family-celery-beat.log +stderr_logfile=/var/log/diary-family-celery-beat.err.log +``` + +#### 5.4 重载Supervisor + +```bash +sudo supervisorctl reread +sudo supervisorctl update +sudo supervisorctl start all +``` + +### 6. 配置Nginx + +#### 6.1 创建Nginx配置文件 + +```bash +sudo nano /etc/nginx/sites-available/diary-family +``` + +内容如下: + +```nginx +server { + listen 80; + server_name your_domain_or_ip; + + location = /favicon.ico { + access_log off; + log_not_found off; + } + + location /static/ { + alias /var/www/diary-family/static/; + } + + location /media/ { + alias /var/www/diary-family/media/; + } + + location /reports/ { + alias /var/www/diary-family/reports/; + } + + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +**注意**:将 `your_domain_or_ip` 替换为您的域名或IP地址。 + +#### 6.2 启用Nginx配置 + +```bash +sudo ln -s /etc/nginx/sites-available/diary-family /etc/nginx/sites-enabled/ + +# 检查配置语法 +sudo nginx -t + +# 重启Nginx +sudo systemctl restart nginx +``` + +### 7. 配置文件权限 + +```bash +# 创建必要的目录 +sudo mkdir -p /var/www/diary-family/media /var/www/diary-family/logs /var/www/diary-family/reports + +# 设置目录权限 +sudo chown -R username:username /var/www/diary-family/media /var/www/diary-family/logs /var/www/diary-family/reports +``` + +### 8. 配置防火墙 + +```bash +sudo ufw allow 80/tcp +sudo ufw allow 443/tcp +sudo ufw enable +``` + +## 代码更新 + +当需要更新代码时,可以使用以下命令: + +```bash +cd /var/www/diary-family + +# 拉取最新代码 +git pull http://14.103.237.41:16001/xiaji/diary-family.git + +# 激活虚拟环境 +source venv/bin/activate + +# 安装新依赖(如果有) +pip install -r requirements.txt + +# 执行数据库迁移 +python manage.py migrate + +# 重启服务 +sudo supervisorctl restart all +sudo systemctl restart nginx +``` + +## 系统访问 + +1. **访问系统**:在浏览器中打开 `http://your_domain_or_ip` +2. **管理员登录**:访问 `http://your_domain_or_ip/admin/`,使用创建的超级用户登录 +3. **配置邮件**:在系统配置页面设置SMTP服务器、端口、用户名、密码、发送时间和收件人邮箱 + +## 注意事项 + +1. **WeasyPrint依赖**:如果PDF生成功能无法使用,需要安装WeasyPrint的系统依赖: + ```bash + sudo apt install -y libgobject-2.0-0 libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev + ``` + +2. **Redis服务**:确保Redis服务正常运行,否则Celery任务无法执行 + +3. **Nginx用户冲突**:确保部署时使用的用户名不会与nginx默认用户(www-data)冲突 + +4. **文件权限**:确保媒体文件、日志文件和报告文件目录有正确的读写权限 + +5. **定期备份**:建议定期备份数据库文件(db.sqlite3) + +## 技术支持 + +如有问题,请联系系统管理员。 + +--- + +© 2024 家庭日报系统 - 专注于家庭生活的轻量级日报系统 \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 3800ad8..b3e0629 100644 --- a/logs/app.log +++ b/logs/app.log @@ -3,3 +3,4 @@ 2026-01-04 19:09:41.595 | INFO | core.views:system_settings:411 - 用户访问系统配置页面 2026-01-04 19:10:41.211 | INFO | core.views:index:45 - 用户访问首页 2026-01-04 19:11:02.642 | INFO | core.views:yesterday_records:73 - 用户访问昨日记录页面 +2026-01-04 19:15:44.290 | INFO | core.views:yesterday_records:73 - 用户访问昨日记录页面