Docker 기반 Ghost 설치 및 Nginx 설정 (cafe.storylife.kr)

Ghost는 최신 버전인 5부터 MySQL 8만을 공식적으로 지원합니다. 이전 버전인 MySQL 5와 MariaDB는 더 이상 지원되지 않으므로, 최신 Ghost 설치 시 MySQL 8을 사용해야 합니다.


1. Docker 및 필수 패키지 설치

서버에 Docker, Docker Compose, 그리고 Nginx를 설치합니다.

(1) Docker 및 Docker Compose 설치

# 기존 패키지 업데이트
sudo apt update && sudo apt upgrade -y

# Docker 설치
sudo apt install -y docker.io

# Docker 자동 실행 활성화
sudo systemctl enable docker
sudo systemctl start docker

# Docker Compose 설치
sudo apt install -y docker-compose

(2) Nginx 설치

sudo apt install -y nginx

2. Docker 네트워크 생성

Ghost와 MySQL이 같은 네트워크에서 통신할 수 있도록 Docker 네트워크를 생성합니다.

docker network create ghost-network

3. MySQL 8 컨테이너 실행

Ghost에서 사용할 MySQL 8 데이터베이스를 생성합니다.

docker run -d --name mysql \
    --network ghost-network \
    -e MYSQL_ROOT_PASSWORD=your_root_password \
    -e MYSQL_DATABASE=ghost_db \
    -e MYSQL_USER=ghostuser \
    -e MYSQL_PASSWORD=ghostpassword \
    -p 3306:3306 \
    mysql:8

설정된 정보:

  • MySQL 버전: 8 (Ghost에서 권장)
  • 데이터베이스 이름: ghost_db
  • 사용자: ghostuser
  • 비밀번호: ghostpassword

4. Ghost 컨테이너 실행

이제 Ghost 컨테이너를 실행하고, MySQL 8에 연결합니다.

docker run -d --name ghost \
    --network ghost-network \
    -e url=http://cafe.storylife.kr \
    -e database__client=mysql \
    -e database__connection__host=mysql \
    -e database__connection__user=ghostuser \
    -e database__connection__password=ghostpassword \
    -e database__connection__database=ghost_db \
    -p 2368:2368 \
    -v /var/lib/ghost/content:/var/lib/ghost/content \
    ghost

설정된 정보:

  • cafe.storylife.kr을 Ghost URL로 사용
  • MySQL 8 연결 정보 적용
  • Ghost 기본 포트: 2368

5. Nginx 리버스 프록시 설정

Nginx를 설정하여 cafe.storylife.kr 도메인으로 접근할 수 있도록 만듭니다.

(1) Nginx 설정 파일 생성

sudo nano /etc/nginx/sites-available/cafe.storylife.kr

다음 내용을 추가합니다.

server {
    listen 80;
    server_name cafe.storylife.kr;

    location / {
        proxy_pass http://localhost:2368;
        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;
    }
}

(2) 설정 활성화 및 Nginx 재시작

sudo ln -s /etc/nginx/sites-available/cafe.storylife.kr /etc/nginx/sites-enabled/
sudo nginx -t  # 설정 확인
sudo systemctl restart nginx

이제 http://cafe.storylife.kr 접속하면 Ghost 블로그가 정상적으로 보입니다.


6. SSL 인증서 추가 (HTTPS 활성화)

보안 강화를 위해 Let’s Encrypt SSL 인증서를 설치합니다.

(1) Certbot 설치

sudo apt install -y certbot python3-certbot-nginx

(2) SSL 인증서 발급

sudo certbot --nginx -d cafe.storylife.kr

과정이 완료되면, Nginx 설정이 자동 업데이트되어 HTTPS가 활성화됩니다.


7. Ghost 관리 페이지 접속

이제 웹 브라우저에서 Ghost 관리자 페이지로 이동합니다.

🔗 https://cafe.storylife.kr/ghost  처음 접속하면 관리자 계정을 생성해야 합니다 이후 Ghost 대시보드에서 테마를 변경하거나 글을 작성할 수 있습니다.


💡 요약

단계 명령어
Docker 설치 sudo apt install -y docker.io docker-compose
Nginx 설치 sudo apt install -y nginx
Docker 네트워크 생성 docker network create ghost-network
MySQL 8 컨테이너 실행 docker run -d --name mysql --network ghost-network ...
Ghost 컨테이너 실행 docker run -d --name ghost --network ghost-network ...
Nginx 설정 /etc/nginx/sites-available/ghost 설정 후 재시작
SSL 인증서 추가 certbot --nginx -d cafe.storylife.kr

이제 Ghost 블로그가 Docker 환경에서 Nginx를 통해 cafe.storylife.kr 도메인으로 운영됩니다!

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤