고스트 블로그 구축 후기(개인적 소회)

고스트 블로그 구축 후기(개인적 소회)
ghost logo

Ghost Blog, git lab

how i built

네이버 블로그를 오래간 사용했었다.

편리하기는 했으나 광고를 삽입하고, 수익을 정산받는 과정에 딜레이가 많이 생기는 것 같아 공부겸 하여 홈서버에 고스트 블로그를 구축했다.

이미 홈서버에 클라우드 저장소를 구축 해놔서, 같은 물리서버에 할까 했는데 아무래도 깃랩과 고스트를 모두 추가하기에는 리스크가 커 다른 물리서버를 사용하기로 했다.

다른 물리 서버라고 해도 뭐,,, 중고 5만원 컴퓨터를 사서 몇가지 부품을 변경한 후에 추가연결을 하는 것이다.

예전에는 centOS를 쓰다가 이번에는 우분투로 전부 셋팅하였다.

cpu: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz

ram: ddr3 8G*2

mainboard: HARRISON2

disk: ssd 250G, hdd 500G (추가예정)

처음 OS설치때 바이오스 부팅 설정이 dual로 되어있어 한참 원인파악으로 헤매다가, 수정하여 우분투 설치.

  1. 도메인 구매 및 서브도메인 A레코드 연결
  2. 깃랩설치
  3. nginx 등 내장 서비스 일부 disable 변경
    1. 원래는 내장 nginx를 활용하려고 했으나, custom 하는 과정에서 server 블록 구문을 넣을 수 없었고, 이러면 고스트 블로그를 활용하지 못해 disable
  4. 고스트 설치
    1. 디비 문제
      1. mariadb를 썼다가 문제가 되었다. 설치 및 운용까지 문제가 없었으나, mariadb에 지원되지 않는 문법의 쿼리가 쓰일 때(포스트 분석 페이지 진입시) 400에러가 났다.
      2. MySQL 8 버전을 공식지원, 우분투는 20이상, node 20이상(https://ghost.org/docs/faq/node-versions/)
      3. mysql 커뮤니티 버전으로 설치하여 해결되었다.
      4. 해당 과정에서 기존 데이터가 있어 데이터백업본을 만든다음 옮겼음...
      5. 옮긴 후 마리아디비 삭제 mysql 설치 및 실행에서 frozen 관련 오류(sudo rm /etc/mysql/FROZEN 로 해결),
      6. 그랬더니 이런 에러가 출력
        1. mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
      7. 디렉토리 생성 후 mysql로 폴더 권한 변경
        1. sudo mkdir -p /var/lib/mysql-files
          sudo chown mysql:mysql /var/lib/mysql-files
          sudo chmod 750 /var/lib/mysql-files
  5. ssl 설정
    1. letsencrypt certbot 사용하여 설정
      1. 설치: apt install certbot python3-certbot-nginx -y
      2. 설정: certbot --nginx -d gitlab.example.com -d pages.example.com -d blog.example.com
      3. 자동갱신: sudo certbot renew --dry-run
        1. 이거는 저번에 안됐던 경험이 있어서, 해당일자에 모니터링해서 실행안되면 크론 스케줄에 추가할 예정
      4. 고스트 설정 따로 변경해줘야함
        1. vi /var/www/ghost/config.production.json
        2. url 부분 https로 변경
  6. 고스트 콘텐츠 디렉토리 변경
    1. hdd 500 마운트 https://blog.secondpage-zone.com/ubuntu-maunteu-seoljeong/
      1. 마운트한 디렉토리에 고스트가 접근할 수 있도록 권한 변경 해줘야 한다
    2. ghost stop 하고 vi /var/www/ghost/config.production.json
    3. "contentPath": "/mnt/마운트한곳"
    4. ghost start

이 다음부터는 블로그 커스텀에 들어가야 한다.

테마 이외에 자잘한 변경은 code injection으로 할 수 있어서 자유도가 굉장히 높다.

전반적으로 만족하는 편.

이제 남은 것:

  • 고스트 자동 영문화
  • 네이버 포스트 옮겨오기
  • 간단한 기능모음 사이트 - React(서버통신 X)
    • 깃랩 CICD 연결
  • 규모있는 사이트 (실사용 + 포트폴리오용)
    • client React
    • Backoffice Vue
    • Backend : python, Java
    • Docker 이용
    • 모든 프로젝트 깃랩 CI/CD 적용
    • 젠킨스...는 굳이... 깃랩내장이 잘되어있을 것 같다.