우분투 22.04에 Ghost Blog 설치하기 – 서버 설정 및 Ghost 설치

이번 연재작에서는 일반적인 VPS(Vultr, Lightsail, Linode 등등)에 Ubuntu 22.04 LTS버전이 세팅 되어있는 상태에서 Ghost Blog를 설치할 예정이다. 제목에서 볼 수 있듯이, 이번 글에서는 서버 설정 및 고스트 설치를 진행 할 예정이다. 다음 글에서는 Nginx설정 및 SSL설치, 마지막 글에서는 테마 변경 및 잡다한 기능들 알아보기. 이렇게 총 세 개의 글로 구성될 예정인 연재작이다.

https://ghost.org 더 자세한 정보를 확인할 수 있다.

Ghost는 뉴미디어 크리에이터가 콘텐츠를 게시, 공유 및 비즈니스 성장에 사용할 수 있는 강력한 도구이다. 웹사이트를 구축하고, 콘텐츠를 게시하고, 뉴스레터를 보내고, 회원에게 유료 구독을 제공하는 최신 도구가 함께 제공된다. WP가 이미 많은 웹에서 사용되고 있는 신뢰, 그리고 안정성, 마지막으로 많은 플러그인때문에 각광받고 있다면 고스트는 WP보다 예쁜 디자인과 빠른 성능으로 승부수를 던지고 있다.

웹사이트의 외관은 테마의 차이도 크지만 그냥 본질적인 프로그램의 특성도 영향을 미친다. 워드프레스는 조금 딱딱한 느낌임과 동시에 시대를 선도하는 디자인의 테마들을 찾기 어렵다면 고스트는 시대를 선도하는 테마들을 만들어내고 이 테마들이 심지어 이쁘다.

고스트를 이용한 대표적인 블로그는 킥스타터(미국의 와디즈)의 블로그가 있다.

어쨋든 이 글에서는 고스트를 우분투에 설치할 것이다.


Ghost 설치하기

https://ghost.org 고스트의 공식 홈페이지이다. 관련 정보들을 찾아볼 수 있다.

서버 설정

서버 설정이 거의 전부이다.

제목에서 확인할 수 있듯이 이 글은 우분투 22.04를 기준으로 작성되었다. ssh접속 방법등은 생략하겠다.

먼저 가장 기본적인 것들부터 차례대로 실행하자, apt-get…

sudo apt-get update
sudo apt-get upgrade

*참고: 글 쓰는 시점 기준, 우분투 22.04는 나온지 반 년도 채 되지 않은 OS이다. 미러 서버의 지원이 부실한 편이어서, 글쓰는사람은 VPS를 설치하면 항상 하는 설정인 미러 서버 변경을 하지 않고 진행하였다.

User 추가하기

*참고: 고스트 같은 경우 root유저와 ghost라는 이름을 가진 유저로는 설정(설치)가 불가능하다. 이것때문에 글쓰는사람도 2번이나 Ghost를 다시 설치했다.

아래 명령어를 통해 새로운 user를 추가할 수 있다.

sudo adduser <유저이름, 괄호 >

password를 설정하고, 아래에는 새로 생성한 유저의 전화번호 등을 물어보는데 모두 무시하고 엔터를 눌러 생략하면 된다.

아래 명령어를 통해 새로 생성한 유저에게 root권한을 줄 수 있다.

sudo usermod -aG sudo <아까생성한유저,괄호없>

아래 명령어를 통해 새로 생성한 유저의 계정으로 로그인 할 수 있다.

su <유저이>

이제 이 계정에서 기본적인 것들을 해주면 된다.

sudo apt-get update
sudo apt-get upgrade

node.js 설치하기

Ghost는 Node.JS를 기반으로 돌아간다. 따라서 node.js를 설치해 줘야하는데, 크게 두 가지의 방법이 있다. 하나는 nvm(node version manager)를 이용해 설치하는 것이고, 다른 하나는 Nodesource APT를 추가해 설치하는 방법이다. 추후 서버에 직접 접속해 유지보수를 할 계획이 있으면 nvm을 이용해 설치하는것을 추천하고, 반대라면 후자를 추천한다. 이 글에서는 전자(nvm)을 이용해 설치할 것 이다.

cd ~
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.bashrc

이제 아래 커맨드 하나 만으로 node.js를 설치할 수 있다.

*참고: nvm으로 가장 최신 버전을 설치하려면 아래 커맨드에서 16.16.0 대신 node를 입력하면 된다.

nvm install 16.16.0

NVM이 node.js 16.16.0버전을 설치할 것이다.

nginx 설치하기

*참고: nginx설치는 필수는 아니지만, SSL설치와 라우팅 설정이 쉬워지기 때문에 설치하는 것을 추천한다.

이제 엔진엑스를 설치해야 한다. 아래 명령어 하나로 간단하게 설치할 수 있다.

sudo apt-get install nginx

nginx에서 무언가를 설정하기 전에 방화벽을 설정해 줘야한다. 다음 커맨드로 방화벽을 설정할 수 있다.

sudo ufw allow 80
sudo ufw allow 443

*참고: 이 아래 부분 부터 MySQL설치 파트 전까지는 Ghost가 Ubuntu 22.04에서 정상적으로 동작할 수 있게 수정된 버전이 배포되면 하지 않아도 되는 부분입니다. 글쓰는사람은 항상 업데이트가 되었는지 확인할 수 없지만, 최대한 자주 확인하여 수정할 수 있도록 노력할 예정. 아직 안지워 졌다면 일단 하는것을 추천. 만약 이후에 수정이 되었는데 아래를 실행해 충돌이 일어나면 nginx만 purge한 뒤 다시 설치하면 되는 아주 간단한 부분이어서.

라우팅을 설정해 줘야한다. 쉽게 말하면, 외부에서 정해진 도메인과 포트로 접속했을 때 이를 내부의 Ghost로 연결해주는 역할을 한다. 아래 커맨드를 사용해 설정할 수 있는 폴더로 이동하자.

 cd /etc/nginx/sites-available

아래 커맨드로 설정파일을 생성하고, 편집할 수 있다. nano편집기는 사용이 굉장히 쉽다. 설정 파일 이름은 마음대로 설정해도 상관 없다.

sudo nano reverse-proxy.conf

아래의 설정 파일 내용을 조금 수정해서 붙여 넣는다(도메인만 수정하면 된다)

server {
	        listen 80;
	        listen [::]:80;
	        server_name 도메인;
	 
	        access_log /var/log/nginx/reverse-access.log;
	        error_log /var/log/nginx/reverse-error.log;
	 
	        location / {
	                    proxy_pass http://127.0.0.1:2368;
	  }
	}

설정 파일을 연동한다, 아래 커맨드를 사용하여.

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

이제 nginx를 재시작하여 설정 파일을 적용하자

sudo service nginx restart

MySQL설치하기(필수 아님)

DB역할을 할 MySQL을 설치해 줘야한다. sqlite를 쓸 사람들은 필요한 과정은 아니다. SQLite도 테스트랑 장난감 용도로는 나름 나쁘진 않지만 안정성을 위해 MySQL을 사용하는 것을 추천한다. 아래 명령어로 할 수 있다.

sudo apt-get install mysql-server

우분투 버전이 18.04 이상이어서 mysql의 root계정에 비밀번호를 설정해 줘야한다.

*참고: ghost CLI가 설정시 mysql의 root계정을 입력하면 알아서 Ghost가 이용할 DB, 계정을 생성한다. 즉, 아래 커맨드 말고는 따로 입력해서 MySQL을 설정할 게 없다.

sudo mysql

MySQL로 접속했으면, 아래 커맨드들을 입력해 MySQL root계정의 비밀번호를 설정할 수 있다. (secure install을 사용해도 괜찮다)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

정말로 Ghost 설치하기

아래 커맨드 하나로 Ghost CLI를 설치해야한다, 시작하기 전에.

sudo npm install ghost-cli@latest -g

이제 바로 설치할 수 있…는건 아니다. 솔직히 말하면 바로 설치할 수 있긴 한데 비추천. 관리를 쉽게 하기 위해 고스트용 폴더를 하나 만들어줄 예정이다. 아래 커맨드를 이용하는데, sitename은 그냥 site이름을 마음대로 입력하면 된다. 똑같을 필요는 없다. 편의를 위해 만드는 폴더이기에.

sudo mkdir -p /var/www/sitename

이제 권한을 부여해줘야한다. 마찬가지로 sitename은 위에서 만든 폴더 이름과 같이 기입해서 실행해야한다.

sudo chown <앞에서생성한유>:<앞에서생성한유> /var/www/sitename

이제 고스트에서 요구하는 권한을 설정해줘야한다. 마찬가지로 sitename을 위에서 설정한것과 같이 바꿔서 실행해야한다.

*참고: 공식 사이트에서는 아래 커맨드에서 ugo+rwx를 775로 실행하였다. 글쓰는사람은 공식 레퍼런스에서 설명해준대로 실행하니 오류가 발생하여, 아래대로 수정하였다. 만약 Ghost CLI에서 아래 사진과 같은 오류가 발생하면 ugo+rwx를 775로 바꿔보는것도 방법.

sudo chmod ugo+rwx /home/sitename
cd /var/www/sitename

이제 정말로 고스트를 설치할 수 있다.

ghost install

글을 쓰는 시점(2022.07.25) 기준으로 아직 Ghost는 Ubuntu 22.04를 정식 지원하지 않는다. 그냥 y를 누르고 엔터를 쳐서 무시해주면 된다(무시해서 생기는 문제가 있긴 한데 – 무려 nginx 자동 설정이 안 된다! –  곧 새로운 릴리즈가 나오면 해결될 것 같고, 수동으로 해결할 수 있는 방법이 존재해 이 글에서는 수동으로 이 문제를 해결할 예정이다. – 여기를 눌러 발생한 Github Issue 확인하기)

설치하다보면 몇 가지 질문들이 나오는데, 알아서 대답해주면 된다. 앞서 MySQL을 설치할 때 언급한 것 처럼, mysql같은경우 root아이디와 비밀번호를 넣으면 Ghost가 알아서 설정해준다. 앞서 말한 무시해서 생기는 문제를 찾을 수 있다. Nginx를 설치한 상황임에도 불구하고 감지를 하지 못한다. 어쨋든 방법이 있긴 하니 무시하고 넘어가면 된다.

위와 같은 화면이 뜨면 설정이 완료된 것이다. 생성된 링크를 Ctrl과 함께 클릭해서 접속해보자. 앞서 nginx 라우팅 설정이 제대로 되었다면 바로 아래와 같은 화면을 볼 수 있을 것이다. 아직 SSL설정을 하기 이전이어서 https로 접속하면 안 된다.

고스트 설정하기

## 블로그 이름 설정
## 관리자 아이디(이메일 설정)
## 관리자 비밀번호 설정

이 글에서는 서술하지 않은 여러 고비들을 겪고 작동되어서 설레는 마음에 설정을 급하게 하느라 캡쳐를 못 했는데, 위의 것들 정도를 물어봤었던 것 같다. 설정을 완료하면 아래와 같은 엄청나게 아름다운 화면을 맞이할 수 있을 것이다.

위는 고스트의 대시보드고,

위는 고스트의 메인 화면이다.


Ghost 관련 연재작 중 첫 글

이번 글에서는 Nginx, MySQL, Ghost를 설치해 보았다. Ghost CLI가 개발된 덕분에 굉장히 쉽게 설치를 진행할 수 있었다. 다음 글에서는 SSL을 설정할 예정이다. 8월 내 업로드 예정.

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다