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

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