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 도메인으로 운영됩니다!