컴퓨터 활용/노년에 즐기는 코딩
시집 자동화 플랫폼 구축 기획안
easyfly
2025. 6. 10. 12:14
반응형
📘 시집 자동화 플랫폼 구축 기획안 (Django + MySQL + AWS Ubuntu)
1. 🔧 시스템 개요
항목 | 구성 |
웹 프레임워크 | Django (Python 기반) |
DB | MySQL |
운영체제 | Ubuntu 20.04/22.04 (AWS EC2) |
주요 기능 | 시 등록, 낭송자 지정, 전자책(epub) 자동 생성 |
출력물 | epub 파일로 제작된 시집 (제목/저자/본문/낭송자 포함) |
2. 🧱 Django 프로젝트 기본 구조
poetry (or venv) 사용
django-admin startproject poemproject
cd poemproject
python manage.py startapp poems
주요 앱 구성: poems
앱 구성 요소 | 설명 |
모델 (models.py) | 시, 시인, 낭송자, 주제 등 |
관리자 페이지 | 시/회원 관리 기능 |
뷰 & 템플릿 | 시 입력, 목록, 낭송 포함 보기 등 |
커맨드 | manage.py export_epub으로 자동 epub 생성 |
3. 🗃️ 모델 설계 (MySQL DB 기준)
# poems/models.py
class Poet(models.Model):
name = models.CharField(max_length=100)
bio = models.TextField(blank=True)
class Narrator(models.Model):
name = models.CharField(max_length=100)
voice_file = models.FileField(upload_to='voices/', blank=True)
class Poem(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateField(auto_now_add=True)
poet = models.ForeignKey(Poet, on_delete=models.CASCADE)
narrator = models.ForeignKey(Narrator, on_delete=models.SET_NULL, null=True, blank=True)
def __str__(self):
return self.title
4. 🗂️ MySQL 연동
settings.py에서 다음처럼 설정:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'poemdb',
'USER': 'dbadmin',
'PASSWORD': 'yourpassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
MySQL 서버 및 DB는 다음 명령으로 생성:
CREATE DATABASE poemdb CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON poemdb.* TO 'dbadmin'@'%' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;
5. 🖥️ 시 등록 및 낭송자 관리
- Django Admin 페이지 사용
- 낭송자 음성 업로드 기능 (MP3, WAV)
- 시 목록 페이지 및 미리보기 제공
6. ⚙️ epub 자동 생성 (커맨드 커스터마이징)
management/commands/export_epub.py 작성:
from django.core.management.base import BaseCommand
from poems.models import Poem
from ebooklib import epub
class Command(BaseCommand):
help = '모든 시를 epub로 출력'
def handle(self, *args, **options):
book = epub.EpubBook()
book.set_title('시와 함께 떠나는 일상탈출')
book.set_language('ko')
poems = Poem.objects.all()
for poem in poems:
chapter = epub.EpubHtml(title=poem.title, file_name=f'{poem.id}.xhtml', lang='ko')
content = f"<h1>{poem.title}</h1><h3>{poem.poet.name}</h3><p>{poem.content.replace('\n','<br>')}</p>"
chapter.content = content
book.add_item(chapter)
book.spine.append(chapter)
epub.write_epub('output/poems.epub', book, {})
self.stdout.write(self.style.SUCCESS("epub 파일 생성 완료"))
7. 🛠️ 배포 & 자동화 계획
항목 | 내용 |
AWS 배포 | EC2 + MySQL 설치, Gunicorn + Nginx 구성 |
epub 자동화 | crontab 또는 버튼 클릭으로 실행 가능하게 |
백업 | AWS S3 등 외부 백업 연동 가능 |
8. 📌 개발 순서 요약
- EC2 Ubuntu 서버 설정 (Python, MySQL, Git, venv 등)
- Django 프로젝트 생성 및 DB 연동
- 모델 정의 및 admin 등록
- 웹 UI 구현 (시 등록/목록/검색)
- export_epub 명령 개발 및 테스트
- 서버에 업로드 & Gunicorn/Nginx로 배포
- 전자책 자동 생성 및 다운로드 기능 제공
이제 시작입니다.
반응형