Pelican과 MkDocs로 콘텐츠를 강화하기
Takashi Yamamoto
Infrastructure Engineer · Leapcell

서론: Python의 정적 사이트 생성기 파워
오늘날 빠르게 변화하는 디지털 환경에서 콘텐츠 제공, 특히 기술 문서 및 개인 웹사이트의 경우 효율성, 보안 및 유지 관리 용이성이 요구됩니다. 기존 콘텐츠 관리 시스템(CMS)은 데이터베이스 관리, 서버 측 스크립팅 및 잠재적 보안 취약성과 같은 고유한 복잡성을 안고 있는 경우가 많습니다. 바로 여기서 정적 사이트 생성기(SSG)가 빛을 발하며, 모든 콘텐츠를 정적 HTML, CSS 및 JavaScript 파일로 미리 렌더링하여 강력한 대안을 제공합니다. 풍부한 생태계를 갖춘 Python은 이 목적을 위한 훌륭한 도구를 제공하며, 가장 주목할 만한 것은 Pelican과 MkDocs입니다. 이 프레임워크는 개발자가 Markdown과 같은 익숙한 일반 텍스트 형식을 콘텐츠 제작에 활용할 수 있도록 하여 게시 워크플로를 크게 간소화합니다. 이 글에서는 Pelican과 MkDocs 사용의 복잡성을 자세히 살펴보고, 고성능 정적 웹사이트와 포괄적인 기술 문서를 구축하는 데 어떻게 효과적으로 활용될 수 있는지 설명합니다.
핵심 개념 이해
실질적인 측면을 살펴보기 전에 정적 사이트 생성을 이해하는 데 필수적인 몇 가지 주요 용어를 정의해 보겠습니다.
- 정적 사이트 생성기(SSG): 콘텐츠(일반적으로 Markdown 또는 reStructuredText), 템플릿 및 구성 설정을 가져와 정적 HTML, CSS 및 JavaScript 파일 세트를 생성하는 프로그램입니다. 이후 각 요청 시 데이터베이스나 서버 측 렌더링 없이 모든 웹 서버에서 해당 파일을 제공할 수 있습니다.
- Markdown: 일반 텍스트 편집기를 사용하여 서식 있는 텍스트를 만드는 경량 마크업 언어입니다. 단순성과 가독성 덕분에 다큐멘테이션, 블로그 및 일반 콘텐츠 제작에 널리 채택되었습니다.
- 템플릿: 생성된 HTML 페이지의 구조와 레이아웃을 정의하는 파일(Python SSG의 경우 Jinja2로 작성된 경우가 많음)입니다. 이를 통해 동적 콘텐츠 삽입과 웹사이트 전반에 걸친 일관된 스타일링이 가능합니다.
- 테마: 정적 웹사이트의 시각적 모양을 결정하는 템플릿, CSS 스타일 및 JavaScript 파일 모음입니다. 테마는 사용자 정의하거나 완전히 새로운 테마를 개발할 수 있습니다.
- 소스 콘텐츠: 웹사이트 또는 문서의 실제 텍스트, 이미지 및 기타 자산이 포함된 원시 파일(예:
.md
또는.rst
파일)입니다. - 빌드 프로세스: 최종 정적 웹사이트 파일을 생성하기 위해 SSG를 실행하는 작업입니다.
Pelican: 정적 웹사이트 및 블로그용
Pelican은 주로 블로그 및 콘텐츠 중심 웹사이트를 위해 설계된 Python 기반 정적 사이트 생성기입니다. reStructuredText 또는 Markdown 콘텐츠를 처리하고 선택한 테마에 맞는 정적 HTML을 생성합니다.
Pelican 설정
먼저 Pelican을 설치합니다.
pip install pelican markdown
다음으로 pelican-quickstart
로 새 프로젝트를 만듭니다.
pelican-quickstart
이 명령을 실행하면 사이트를 구성하기 위한 일련의 질문이 표시됩니다. 예를 들면 다음과 같습니다.
> Where do you want to create your new web site? [.]
> What is the title of this web site? My Awesome Blog
> Who is the author of this web site? John Doe
> What is the URL prefix for this web site? (eg, http://example.com)
> Do you want to generate a fabfile/Makefile to make common tasks easy? (y/N) Y
> Do you want to specify a port to use for the development server? [8000]
> Do you want to upload your website to GitHub Pages? (y/N) N
이렇게 하면 다음과 같은 디렉터리 구조가 생성됩니다.
my-awesome-blog/
├── content/
│ └── (articles go here)
├── output/
├── pelicanconf.py
├── publishconf.py
└── Makefile
첫 블로그 게시물 작성
content
디렉터리 안에 my-first-post.md
와 같이 새 Markdown 파일을 만듭니다.
Title: My First Post Date: 2023-10-27 10:00 Category: Python Tags: static-site, pelican, tutorial Slug: my-first-post Author: John Doe Summary: This is the summary for my first blog post. This is the **body** of my first blog post. Pelican is a fantastic tool for creating static websites. You can use Markdown for easy content creation. Here's some Python code: ```python def hello_pelican(): print("Hello, Pelican!") hello_pelican()
상단의 헤더는 Pelican이 콘텐츠를 구성하고 표시하는 데 사용하는 '메타데이터'라고 합니다.
### 사이트 빌드 및 제공
정적 파일을 생성하려면 프로젝트 디렉터리로 이동하여 다음을 실행합니다.
```bash
make html
이 명령은 콘텐츠와 템플릿을 처리하여 생성된 HTML, CSS 및 기타 자산을 output
디렉터리에 넣습니다.
로컬에서 사이트를 보려면 Pelican의 내장된 개발 서버를 사용할 수 있습니다.
make serve
그런 다음 브라우저를 열고 http://localhost:8000
(또는 구성한 포트)으로 이동합니다.
Pelican을 사용한 사용자 정의 및 테마.
Pelican은 pelicanconf.py
파일을 통해 광범위한 사용자 정의를 지원합니다. 테마, 플러그인 및 다양한 설정을 지정할 수 있습니다. 예를 들어 외부 테마를 사용하려면 다음과 같습니다.
-
테마 다운로드: GitHub에서 많은 테마를 사용할 수 있습니다(예:
pelican-bootstrap3
). -
맞추기: 테마 디렉터리를 프로젝트 루트의
themes
폴더에 넣습니다. -
pelicanconf.py
구성:THEME = 'themes/pelican-bootstrap3'
Pelican은 또한 구문 강조, 사이트맵 등 기능을 확장하기 위해 풍부한 플러그인 생태계를 지원합니다.
MkDocs: 기술 문서용
Pelican은 블로그에 탁월하지만 MkDocs는 프로젝트 문서 구축을 위해 특별히 설계되었습니다. 명확하고 계층적인 구조를 강조하며 깔끔하고 현대적인 문서 사이트를 생성합니다.
MkDocs 설정
MkDocs를 설치합니다.
pip install mkdocs mkdocs-material
mkdocs-material
은 MkDocs를 위한 인기 있고 사용자 정의가 가능한 테마입니다.
새 프로젝트를 만듭니다.
mkdocs new my-docs-project cd my-docs-project
이렇게 하면 docs
디렉터리와 mkdocs.yml
구성 파일이 생성됩니다.
my-docs-project/
├── docs/
│ └── index.md
└── mkdocs.yml
문서 작성
모든 Markdown 문서 파일은 docs
디렉터리에 보관됩니다. index.md
파일은 일반적으로 프로젝트 홈페이지 역할을 합니다.
docs/index.md
를 수정해 보겠습니다.
# Welcome to My Project Documentation This is the main page for my project's technical documentation. ## Getting Started To get started, follow these simple steps: 1. Install the dependencies. 2. Configure your environment. 3. Run the application. ## Further Information Check out the [Installation Guide](installation.md) for detailed instructions.
이제 docs/installation.md
라는 다른 파일을 만듭니다.
# Installation Guide ## Prerequisites Ensure you have Python 3.8+ and pip installed. ## Step-by-Step Installation ```bash pip install my-project-name
Configuration
Refer to the Configuration section for details on how to set up your project.
### `mkdocs.yml` 구성
`mkdocs.yml` 파일은 문서 사이트의 구조와 모양에 중요합니다.
```yaml
site_name: My Project Docs
site_url: https://example.com/docs/
repo_url: https://github.com/your/repo
repo_name: Your Repository
edit_uri: edit/main/docs/ # for direct editing links if hosted on GitHub
theme:
name: material
features:
- navigation.tabs
- navigation.sections
- search.highlight
- content.tabs.link
- toc.integrate
palette:
# Palette toggle for light mode
- scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode
nav:
- Home: index.md
- Getting Started: installation.md
- API Reference: api_reference.md # assuming you'll add this later
nav
섹션은 문서 페이지의 계층 구조와 순서를 정의하기 때문에 특히 중요합니다.
문서 제공
문서 사이트를 작동시키려면 다음을 실행합니다.
mkdocs serve
브라우저에서 http://127.0.0.1:8000
을 엽니다. Markdown 파일이나 mkdocs.yml
을 변경하면 사이트가 자동으로 새로고침됩니다.
MkDocs 빌드 및 배포
배포를 위한 정적 파일을 생성하려면 다음을 실행합니다.
mkdocs build
이렇게 하면 모든 HTML, CSS 및 JavaScript가 포함된 site
디렉터리가 생성됩니다. 그런 다음 이 파일을 웹 서버, GitHub Pages에 업로드하거나 Netlify 또는 Vercel과 같은 서비스를 사용하여 호스팅할 수 있습니다.
Pelican 또는 MkDocs를 사용하는 이유는 무엇인가요?
- 성능: 각 요청에 대한 서버 측 처리가 없으므로 정적 사이트는 놀랍도록 빠릅니다.
- 보안: 데이터베이스나 서버 측 코드가 없으면 공격 경로가 줄어듭니다.
- 비용 효율적인 호스팅: GitHub Pages, Netlify 또는 Vercel과 같은 플랫폼에서 정적 사이트를 저렴하거나 무료로 호스팅할 수 있습니다.
- 버전 컨트롤 통합: 콘텐츠는 일반 텍스트(Markdown)이므로 Git과 같은 버전 컨트롤 시스템에 완벽하게 맞습니다.
- 개발자 친화적: 익숙한 Python 및 Markdown을 사용하며 기존 개발자 워크플로와 원활하게 통합됩니다.
- 유지 관리: 콘텐츠와 코드가 분리되어 일반 텍스트 형식으로 되어 있어 유지 관리가 용이합니다.
결론: Python의 정적 사이트 실력
Pelican과 MkDocs는 Python을 사용하여 정적 웹사이트 및 기술 문서를 생성하기 위한 강력하고 개발자 친화적인 솔루션을 나타냅니다. 콘텐츠에 Markdown을 사용하고 프레젠테이션에 강력한 템플릿을 사용하면 게시 프로세스를 간소화하고 사이트 성능을 향상시키며 보안을 강화하여 효율적인 콘텐츠 전송 메커니즘을 찾는 Python 개발자에게 이상적인 선택이 됩니다. 개인 블로그를 구축하든 포괄적인 프로젝트 문서를 작성하든 이 도구들은 콘텐츠를 생생하게 구현할 수 있는 유연성과 성능을 제공합니다.