Programming/Practice

고스트 블로그 설치 방법 및 만들기 (feat. Oracle Cloud)

재은초 2023. 8. 21. 15:54
반응형

와우! 드디어 오라클 클라우드 서버에 고스트 블로그를 설치했다!!!
처음에는 깃허브로 시작했는데 정적인 화면이라 오류가 많아서 결국 유료 서버인 Digital Ocean을 사용했다.
 
그런데 우연히 무료 서버인 Oracle Cloud를 알게 OCI로 고스트 블로그를 만들려고 했는데, 진짜 설치가 너무너무 안됬다...!!
진짜 거의 한 달을 낑낑댄 것 같다. 근데 오늘 드디어 Oracle Cloud에 고스트 블로그에 설치했는데 진짜 눈물날 뻔. 엉엉...
해결해 놓고 보니까 내가 못 넘었던 벽이 바로 OCI 자체의 방화벽 + Ghost 호환 버전 문제였다.
 
근데 OCI에서 고스트 블로그를 안 만드는건지 아니면 아무도 안 궁금한건지 관련 포스팅이 하나도 없었다.
그래서 이건 기록 겸 공유로 포스팅하기로.. 근데 만들고 나니 도커 위에 할 껄 약간 후회 중... 나중에 도커도 한번 공부해봐야겠다.
 

Oracle Cloud VM 생성하기

  • 먼저 Oracle Cloud에 가입하고 상단 왼쪽 햄버거 메뉴의 Compute > Instances > Create instance를 눌러 VM 생성 페이지로 들어온다.
  • 이름을 지어주고 Image 부분을 우분투로 선택한다. 참고로 여기서 최신 버전말고 구버전을 선택해야 다운로드가 된다. 나는 6월 기준 3월달 우분투 이미지를 선택했다.
  • 네트워크는 Create new virul cloud network를 선택해주는데, IP4가 Assign a public ip4 address로 선택되어 있는지 확인한다
  • 나의 경우 기존에 발급한 SSH 키로 접근했다.
  • 기존에 발급한 키가 있는지 확인하려면, 터미널을 켜고 ls -al ~/.ssh 명령어를 입력해서 .ssh 폴더 내 id_rsa.pub 나 id_ras 파일이 있는지 확인한다. 해당 키가 있으면 이미 SSH 키를 발급한 것이므로  cat ~/.ssh/id_rsa.pub 명령어로 해당 키값을 복사해 입력해주면 된다.
  • 만약에 id_rsa.pub 나 id_ras 파일이 없다면, 터미널에서 ssh-keygen 명령어를 입력해 새로운 키-페어를 생성하면 된다.
ls -al ~/.ssh                // ssh 키 값 확인
ssh-keygen                   // ssh 키 값 없으면 생성하기
cat ~/.ssh/id_rsa.pub        // id_rsa.pub 내용 확인하기
  • 다 입력했으면 Create 버튼을 눌러 VM을 생성한다. 이 때 Subnet 주소를 클릭하고 Security lists 내 Default security list for vcn으로 된 부분을 클릭해 준다.
  • 그리고 Add ingress rules 버튼을 눌러, Http와 Http용 80,443 포트를 0.0.0.0/0 전체 IP 주소에 열어준다.

 

도메인 주소 생성하기

  • 설치 전에 아까 VM 생성 페이지 내 Public ip address 주소를 구입한 도메인에 A record 타입으로 추가해준다.

 

Ubuntu 서버 접속 및  사용자 생성하기

  • 터미널을 켜서 ssh 서버유저명@서버ip주소 를 적어서 서버에 접속한다.
  • 아래 명령어로 새 유저를 생성하고, 슈퍼 유저 그룹에 속하게 하며 마지막으로 해당 계정으로 전환한다.
$ sudo adduser ghostuser
$ sudo usermod -aG sudo ghostuser
$ sudo su - ghostuser
  • 그리고 아래 명령어로 우분투를 최신 버전으로 업데이트해준다.
$ sudo apt-get update && sudo apt-get upgrade -y

 

Nginx 웹서버 설치하기

  • Ghost의 경우 1.9.5 이상의 Nginx 버전이 필요한데, 아래 명령어로 다운로드 받고 버전을 확인해본다.
$ sudo apt-get install nginx -y
$ nginx -v
  • sudo ufw status 명령어를 쳐보고, 만약 activated로 되어 있으면 아래 명령어로 우분투 기본 방화벽도 열어준다.
$ sudo ufw allow 'Nginx Full'
  • 그런데 OCI에서 ufw 명령어가 잘 안 먹는다고해서 따로 방화벽을 열어줬더니 고스트 설치시 네트워크 오류 없이 잘 설치됬다.
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 587 -j ACCEPT
$ sudo netfilter-persistent save

 

MySql 8 설치하기

$ sudo apt-get install mysql-server -y
$ mysql -V
$ sudo mysql -u root -p
mysql > CREATE DATABASE ghost;
mysql > CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY '00000000';
mysql > GRANT ALL PRIVILEGES ON ghost.* TO 'ghostuser'@'localhost';
mysql > FLUSH PRIVILEGES;
mysql > EXIT;

 

Node.js 다운받기

  • Ghost 다운로드 설명 가이드라인에 따르면 Nodejs 14, 16, 18버전만 지원한다. 나는 그 중에서도 가장 권장되는 16버전을 다운 받았다.
  • 그리고 -v 옵션으로 호환되는 버전인지 한번씩 확인해줬다. 이번에 느꼈는데 설치할 때 생각보다 호환 버전인지 여부가 중요한 것 같다.
$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash
$ sudo apt-get install nodejs -y

$ node -v
$ npm -v
  • 만약 설치하다가 yarn 에러가 나면 아래 명령어로 yarn을 설치하길 추천한다.
$ sudo npm install -g yarn
$ yarn -v

 

Ubuntu 22.04에 Ghost-CLI 설치하기

$ sudo npm install ghost-cli@latest -g

 

고스트 설치하기

$ sudo mkdir -p /var/www/ghost
$ sudo chown ghostuser:ghostuser /var/www/ghost
$ sudo chmod 775 /var/www/ghost

$ cd /var/www/ghost
$ ghost install

에러 발생시

  • 나의 경우 info There appears to be trouble with your network connection. Retrying... 에러가 발생했는데, 나는 이 포스팅 (https://enhjh.tistory.com/25)을 보고 해결했다. 나의 경우에는 Timeout 에러가 나서 아래 명령어들을 실행했다.
$ yarn install --network-timeout 600000
  • 설치가 완료되면 Ghost 설정 관련 질문에 대답을 해주면 된다.
? Enter your blog URL: https://iamjaeeuncho.net
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghostuser
? Enter your MySQL password: 00000000
? Enter your Ghost database name: ghost

 

스왑 공간 추가하기

  • 다 만들고나면 또 다른 문제가 생기는데 바로 메모리가 부족해서 블로그 오류가 난다. 그래서 나는 메모리 부족 오류 문제를 해결하기 위해서 스왑 공간을 추가했다.
스왑은 운영 체제가 더 이상 RAM에 보관할 수 없는 데이터를 임시로 저장하기 위해 별도로 설정한 하드 드라이브 스토리지의 일부로, 서버가 작업 메모리에 보관할 수 있는 정보의 양을 늘릴 수 있다.

스왑 파일 생성

$ sudo fallocate -l 10G /swapfile
$ ls -lh /swapfile

스왑 파일 활성화

$ sudo chmod 600 /swapfile
$ ls -lh /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon --show
$ free -h

스왑 파일 영구화

$ sudo cp /etc/fstab /etc/fstab.bak
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

 

Reference

반응형