컴퓨터 활용/노년에 즐기는 코딩

시집 자동화 플랫폼 구축 기획안

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. 📌 개발 순서 요약

  1. EC2 Ubuntu 서버 설정 (Python, MySQL, Git, venv 등)
  2. Django 프로젝트 생성 및 DB 연동
  3. 모델 정의 및 admin 등록
  4. 웹 UI 구현 (시 등록/목록/검색)
  5. export_epub 명령 개발 및 테스트
  6. 서버에 업로드 & Gunicorn/Nginx로 배포
  7. 전자책 자동 생성 및 다운로드 기능 제공

 

이제 시작입니다.

 

반응형