블로그 구축 with Ghost & Docker

블로그 구축 with Ghost & Docker
Photo by Carl Heyerdahl / Unsplash

개발환경

- Windows 10(로컬 PC)
- Docker version 24.0.2, build cb74dfc(로컬 PC)
- port 포워딩이 되는 공유기
- 리다이렉팅용 웹호스팅

Docker Compose로 Ghost를 로컬에 설치

로컬PC에서 고스트 데이터(DB, 테마 등)를 관리할 폴더를 만들고 해당 위치로 이동한 다음에 아래의 내용으로 docker-compose.yml을 작성한다.

version: '3.1'

services:

  ghost:
    image: ghost
    restart: always
    ports:
      - 8080:2368
    volumes:
      - .\data\content:/var/lib/ghost/content
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: yourdb
      database__connection__user: superuser
      database__connection__password: yourpassword
      database__connection__database: ghostdb
      
      #주소가 틀리면 검색기능이 작동하지 않으므로 주의!
      url: http://pih.kr
      # 없으면 기본이 production (개발 모드를 원하면 development)
      NODE_ENV: production

  yourdb:
    image: mysql
    restart: always
    volumes:
      - .\data\db:/var/lib/mysql
    ports:
      - "13928:3306"
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword

docker-compose up -d를 터미널에서 실행하고 localhost:8080/ghost 로 접속하면 블로그의 관리자 페이지를 보여준다. 필요 정보를 입력하고 관리자 계정을 생성하면 블로그를 시작할 수 있다.
테마는 https://ghost.org/themes/ 에서 자신이 원하는 걸로 변경 가능하다

⚠️
외부에서 로컬PC의 ghost 블로그로 접속되도록 하려면 공유기의 port foward설정으로 포트를 연결시키줘야 한다.

도메인 연결

가비아, 닷홈, hosting.kr, 후이즈 같은 업체에서 도메인을 구입하고 현재 내가 이용하는 인터넷의 공개 IP를 알아내서 포워딩 설정을 해주면 외부에서도 구입한 도메인 주소로 접속할 수 있다.(만약 비용을 절감이 필요하면 https://www.noip.com/  에서 무료 도메인 주소를 얻을 수 있다. 브랜드 구축을 목표로 하고 있다면 유료로 멋진 도메인을 구입하자)

리다이렉팅

특정 페이지나 포스트를 누군가에게 바로 가는 url로 전달하고 싶을 것이다. 그런데 나의 호스팅 업체문제인지. pih.kr/about처럼 도메인네임에 디렉토리 이름을 붙여서 접근하면whitelabel error page가 나타난다. 여러 방법을 적용해보았지만 해결이 되지않아서 호스팅업체에서 제공하는 웹호스팅을 구매하고 웹서버의 root 폴더 위치에 .htaccess를 작성해두니 다행히 연결이 된다. 로컬PC, 공유기, 도메인, 웹호스팅이 연결되있어서 이런일이 발생하는 것 같은데 100% 원하는 동작은 아니지만 우선 pass!

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^pih.kr$ [OR]
  RewriteCond %{HTTP_HOST} ^www.pih.kr$
  RewriteRule (.*)$ http://your.domain.address:8080/$1  [R=301,L]
</IfModule>
⚠️
호스팅에서 이것 저것하다가 브라우저에 적용이 안되고 있는 것 같다면 브라우저 캐시를 clear해주자.

ghost blog를 하기 위한 방법으로 로컬PC의 도커말고 다른 방법도 여러가지가 있다. 기타 다른 방법으로 설치하려면 https://ghost.org/docs/install/ 를 방문하셩!


참고

URL rewriting with PHP
I have a URL that looks like: url.com/picture.php?id=51 How would I go about converting that URL to: picture.php/Some-text-goes-here/51 I think WordPress does the same. How do I go about making
Docker
Set up a personal blog with Ghost and Docker
In this post, we will set up a blog with Ghost and Docker, and MySQL. Place it behind a subdomain and add an SSL certificate using Letsencrypt.
Docker와 Ghost CMS로 Amazon Lightsail에 기술 블로그 만들기
Docker를 이용하면 단 세 번의 명령어 실행으로 Ghost CMS 환경을 간편하게 구축하고 관리할 수 있다. Amazon Lightsail에서 Docker를 통해 SSL 인증서까지 포함된 기술 블로그를 개설하는 과정을 소개한다.
Docker Compose로 Ghost 기반 기술 블로그를 간편하게 만들고 제어하기
Docker는 Docker Compose와 함께 쓰일 때 더욱 편리해진다. 더 이상 무언가를 바꿀 때마다 “docker rm -f”와 “docker run”을 반복할 필요가 없다. Docker Compose로 여러 개의 컨테이너를 선언적으로 정의하여, 손쉽게 배포하고 제어하는 방법을 소개한다.
뚝딱뚝딱 Ghost로 기술 블로그 만들기 - (1) 설치와 호스팅
몇 개월 전쯤 페이스북 친구와 독자 분께서 아래와 같은 댓글을 남겨주셨다. 나는 망설임 없이 ‘고스트(Ghost)’ 라고 답했다 . 지금 이 블로그는 고스트로 디지털오션(Digital Ocean) 에서 매월 5달러로 호스팅 되고 있다. 그동안 국민 블로그인 네이버, 티스토리부터, 워드프레스, 미디엄(Medium)까지 수많은 블로그 플랫폼을 사용해봤지만 좀처럼 나에게 꼭 맞는 플랫폼을