디지털오션 서버에 워드프레스 블로그 두 개 설치하기 (왕초보)

나도 좀 써보자, VPS

목차

"VPS 호스팅, 나도 좀 써보자."고 생각한 건 오래되었습니다. 셰어드 호스팅이 월세살이라면, VPS는 원룸이죠. 좁아도 혼자서 화장실도 쓰고 이것저것 가구 배치도 바꿀 수 있는 나만의 공간에선 사람 붐벼서 화장실 못 쓰고 빨래도 못 하는 일이 없습니다.

한 달 단돈 5달러에, 공간도, 전송량도, 기능도 인심히 후한 디지털오션DIGITALOCEAN으로 이사가기로 결심! 마침 현재 Hosting.kr 호스팅 서비스가 별로라고 생각하던 차였죠. 이사가는 김에 운영하던 워드프레스 블로그 두 개를 디지털오션의 가상 서버 한 개 안에 몰아넣기로 합니다. 나도 이제 집주인이라 이거야.

내 맘대로 뭐든 세웠다가 허물 수 있는 가상의 서버를 임대받는다는 건, 멋집니다. 공간 하나 터서 친구들 블로그도 만들어줄 수 있고, 심심하면 이런저런 실험도 해볼 수 있어요. 속도와 병목현상이 문제이지 공간과 전송량, 기타 옵션이 후합니다. 가령 Node.js 기반 블로그 엔진은 국내 호스팅에 편하게 설치할 수 있는 곳이 많지 않고, 호스팅 회사에 문의하면 그건 우리가 지원 안 해.. 라고 답하지만 … DigitalOcean에선 필요하면 설치해서 쓰면 되지요.

문제는 설정이 쉽지 않겠죠. 형광등도 잘 못 갈면서 갑자기 땅도 사고 자기 집을 짓겠다고 덤비는 격이죠. 저는 서버 관련 지식도 없고, 심지어 리눅스를 본격적으로 사용해본 적도 없거든요. 크롬북에 잠깐 깔아서 놀아본 정도? ㅠㅠ ..

무식하면 용감하다고 그래도 덤볐네요. 사이트에 매뉴얼도 잘 되어 있고, 나에겐 구글님이 계시니까. 하지만 … 생각보다 더 개고생이었습니다. 프로그래머도 아니면서, 저처럼 아무것도 모르는데, 해외 VPS 호스팅 직접 설정해서 써보고 싶다는 분에게 이 강좌를 바쳐요. ㅋ

왜 VPS인가?

사실 단지 ‘블로그’ 할 거면 그냥 네이버 블로그 만드세요. 해외 뽕이 있으신가요? Medium에 쓰세요. 풀세트 갖춰진 공짜 숙소입니다. 네이버 블로그 대충 방도 꾸밀 수 있어요. 중요한 집수리, 하자보수는 집주인이 합니다. 스트레스가 없어요. 네이버 블로그에 접속이 안 되면 기다리면 네이버에서 알아서 고칩니다.

레벨 2는 호스팅 서비스에 가입해서 자기 공간을 직접 마련하려는 사람들입니다. 블로그를 직접 설치하는 거죠. 워드프레스 호스팅은 생각보다 어렵지 않고, 요즘 원클릭으로 설치 지원하는 업체가 많아요. 매뉴얼도 많죠. 이렇게 집을 직접 사면 괜히 집주인이 간섭하면서 여기에 못을 박아도 되네 안 되네 간섭이 없습니다. 자유를 누리죠. 대신 집수리를 직접 해야 하니까 가끔 머리가 아프고, 이사 가야하는 상황에서도 일이 더 복잡하죠. 셰어드 호스팅은 건물을 나눠쓰는 겁니다. 다세대 주택이랄까. 사람들이 많이 쓰는 시간엔 엘리베이터 기다려야 하죠. 내가 불편해집니다. 대신 건물 관리는 관리사무소에서 주로 하죠. 중앙난방 안 되면 관리실에 전화하는 것처럼 호스팅 업체에 전화해서 뭐 안 된다고 하면 고쳐주고 그러죠. 친절한 데는 막 워드프레스도 깔아줍니다. 경비 아저씨 우리집 화장실 막힌 거 고쳐주시는 거처럼. 단점은 … 사무소에서 원래 안 해주는 건 원래 안 됩니다. 중앙 난방인데 나 혼자 온돌방 만들기 힘들고, 기가인터넷 원래 아파트 단지에 안 들어오면 나는 써보고 싶어도 못 쓰죠. 호스팅에 블로그를 설치한다는 건 그렇습니다.

VPS 는 가상의 사설서버로, 나 혼자 쓰는 서버를 임대 받는다고 생각하면 되죠. 내 집을 얻으면서, 땅부터 건물까지 내가 다 알아서 하는 겁니다. 물론 매니지먼트가 있는 VPS도 있어요. 고급맨션인데 집사를 따로 두고 집관리를 맡기는 것처럼요. 그러나 보통 처음부터 자기가 다 하게 되어 있습니다. 도배, 장판부터 시작해서 전기배선 … 보일러 설치까지 혼자 알아보면서 지어야 합니다. 뭔가 문제가 터져도 기본적으로 내가 하는 거죠. 장점은 내가 해보고 싶은 거 다 해보는 겁니다. 마당을 뒤엎어서 정원으로 꾸미든, 방 두 개를 터서 카페로 쓰든 내 마음대로 집을 주무를 수 있죠. 특히 다른 사람이랑 건물 나눠쓰면서 내가 불편해지는 일이 없어요. 내 입맛대로 환경을 고를 수 있어요. 1분만에 리눅스 서버를 만들어봤다가 허물고 다시 윈도우계열 서버를 구축해보고 … 마음대로 놀 수 있습니다.

하지만 서버를 직접 설정한다니 말만 들어도 무시무시하죠. 난 그냥, 워드프레스 블로그 좀 돌리고 싶은 건데 말이죠. 사람들은 그냥 원룸이나 다 갖춰진 오피스텔에 사는 게 편하다고 하는데, 가끔 보면 내 집을 지어볼 거야.. 라는 무모한 사람들이 있죠. 제가 그런 기분이 들었어요. 사실 블로그만 돌릴 거면 국내에 빠른 속도 + 매뉴얼이 잘 검색되는 여러 호스팅 사이트가 있습니다. 원클릭 설치에, 전화하면 한국 직원이 받는 그런 곳 말이죠.

그래도 꼭 VPS 해보자는 생각에 … 도전해보았습니다. 결과적으로 세팅을 마친 지금 아래와 같은 장점이 다가옵니다.

역시 혼자 쓰는 집은 좋다

국내 호스팅 업체로 hosting.kr이나 카페24이 유명하고, 한 달에 500원부터 저렴하게 호스팅 플랜에 가입 가능하죠. 딱히 큰 불만없이 워드프레스 블로그를 운영했던 경험이 있네요. 속도도 국내 서비스가 디지털오션보다 더 빠르고, 설치도 간편합니다.

그러나 VPS 라는 메리트와 자유도를 생각하면 디지털오션(digitalocean.com) 가격은 정말 싼 겁니다. 나만 쓰는 엘리베이터, 나만 쓰는 주차장, 더 넓은 집 안 공간, 더 많이 써도 저렴한 전기료 등등 스펙이 빵빵합니다. 저렴한 플랜을 많이 마련해두고 있는 해외 유명 호스팅 업체 블루호스트도 워드프레스 + VPS 를 조건으로 생각하면 결코 디지털오션과 비교해서 저렴해 보이지 않더군요. 역시 혼자 쓰는 집은 좋습니다. 널찍하다.

트래픽도 넉넉하게 줍니다. 한 달 5달러 상품이 한 달에 1TB 트래픽이죠. 3,000원 주고 쓰는 국내 호스팅 서비스가 하루에 트래픽 1GB인 거에 비하면 정말 후합니다. SSD 디스크에 싱가포르를 서버 개설 장소로 선택하항 개설할 경우 국내 사용 시 그리 느리지 않습니다. (그래도 국내 업체보단 느려요).

빠른 구축, 자유도

또 일반 호스팅은 신청하고 좀 기다려야 하지만, 디지털 오션은 서버 하나 세우고 허무는 데 1분이면 됩니다. 내가 직접 만지는 게 머리 아프지만, 그만큼 마음대로 할 수 있는 부분이 많아요. 무슨 파일이 안 보여요. 어디 권한을 바꿔주세요. 등등을 문의하기 위해서 관리자를 찾을 이유가 거의 없고, 도움 매뉴얼이 정말 자세하게 제공되어 있는데다가, 사용자 포럼에도 참고할 자료가 잘 축적되어 있더군요.

그럼 본격적으로 시작해보죠.

STEP 01. 디지털 오션 가입

가입

우선 가입해야겠죠? https://www.digitalocean.com / 또는 제 추천링크를 통해 digitalocean에 가입하세요 (10달러 쿠폰 바로 지급). 순서가 특이한데, 이메일 넣고, 인증 메일 오면 링크 클릭해서 인증하세요.

지불정보

그 다음에 지불 정보부터 넣게 되어 있는데, 여기서 멈추고 기다리면 쿠폰이 메일로 날라온다고 합니다. 그러나 기다리지 마시고 1) 바로 구글링해서 DigitalOcean coupon을 검색해보세요. 10달러 정도 크레딧 쿠폰은 금방 구합니다. 또는 제 추천링크 https://m.do.co/c/64758b6e238b 를 통해 가입하면 바로 쿠폰 10달러가 지급됩니다.

해외 결제 카드 정보 넣어도 바로 결제되는 거는 아니고 쿠폰 크레딧이 소멸하면 그 후에 카드 통해서 돈이 나가겠죠. 페이팔 정보도 입력 가능합니다. 10달러 크레딧 받아서 사용 시작하면 최저 5달러 서버 상품 사용 시 두 달 정도는 무료로 사용 가능하겠네요. 10달러 크레딧이 소멸되어가는 시점에 맘에 안 들면 이사가도 됩니다. 그러나 서버를 일시 정지시켜놓아도 돈은 나갑니다.

서버 선택

디지털오션은 가상의 서버 하나를 Droplet (물방울)이라고 부릅니다. 운영체제(리눅스, 윈도우 등등..)부터 자동으로 설치할 프로그램(워드프레스, 위키엔진..), 속도와 용량 세부사항까지 선택할 수 있습니다. 만들었다가 지웠다가 언제든지 서버를 세우고 허물고 쉽게 할 수 있고요.

이제 Droplet을 만들어보세요.

서버 종류는 리눅스 Ubuntu우분투 14.04로 선택했습니다. 가장 대중적이기도 하고, 워드프레스 호스팅하면서 리눅스 말고 다른 거 써본 적이 없네요. 사이즈는 한 달에 5달러짜리로 선택했습니다. 치사하지만 5달러 플랜은 One-click Apps 통해 워드프레스 자동설치 지원을 안 해줍니다. 용량 문제라는데 핑계 같습니다… 괜찮아요 직접하면 되니까 흥.

사양은 램이 512MB인데 좀 버벅이거나 서버가 가끔 뻗는다는 분들도 계시던데 일단 써보고 문제가 심각하면 나중에 업그레이드 하죠 뭐. 하드는 20GB 주네요. 사진도 다 플리커나 구글에서 링크해서 본문에 넣기 때문에 충분합니다. 전송량은 한 달 기준 1TB입니다. 하루에 30GB 이상이군요. 국내에 5천원 내고 이만큼 주는 곳 없을 겁니다. 땡큐 베리머치.

서버 위치와 옵션 선택


그 다음엔 서버 위치(region). 싱가포르가 그래도 우리나라에서 가까우니깐 선택. 예전에 블루호스트 쓸 때는 싱가포르로 선택해도 느려터졌는데, 디지털오션은 속도 괜찮더군요. 접속자 입장에서 해외에 있는지 모를 정도입니다. 다만 FTP 속도는 좀 느리더군요. 추가 옵션으로 Backups이 있는데 1) 일주일에 한 번 백업해서 백업분은 4주마다 폐기 2) 20% 추가 과금 옵션이 되겠습니다. 최근에 디지털오션 서버 사용자가 회사측의 실수로 서버를 통으로 날려먹은 사건이 있었네요. 디지털오션 쪽에서는 15달러 쿠폰 주면서 미안하다고 했다던데… 공식 입장이 "평소에 니가 백업을 잘 하던가 아니면 백업 옵션을 사용했어야지"였다고… 따라서 불안하면 체크하시고, 아니면 개인적으로 자료 관리를 잘 하시는 수밖에요. 저요? 저는 혼자 알아서 하기로!

SSH 키

친구 아이디랑 비번 알면 친구 메일 열어볼 수 있겠죠? 이런 방식 말고 서버랑 내가 키를 나눠서 가지고 서로 매치시키면서 서버에 들락날락하는 방법이 더욱 보안에 좋습니다. 하지만 가입 단계에서 꼭 만들 필요는 없어서 일단 패스.

마무리

몇 개 만들 건지 선택. 당연히 한 개… 나는 가난하니까. 그리고 서버의 별칭/호스트네임을 영어로 써주세요. 이제 맨 아래 초록색 커다란 Create 버튼을 눌러서 생성!


생성은 금방입니다. 1분도 안 걸리는 거 같아요!

STEP 02. 서버 최고 관리자로 로그인

서버 이름을 눌러서 대시보드로 들어가면 이것저것 표시 화면이 보입니다. 따로 메모장 같은 걸 마련해두고 중요 정보를 이제부터 적는 게 좋겠습니다.

서버 아이피 확인

우선, 서버 이름 아래에 서버 아이피 주소를 적어두지요. 인터넷에 있는 사이트에 접속할 때 naver.com 이렇게 주소를 적을 수도 있지만, 123.123.123.123 이렇게 좌표값처럼 숫자로 찾아갈 수도 있습니다. 이 서버가 위치가 어디있는지 보여주는 정보입니다.

서버 기본 정보 정리

사실 서버의 아이피 주소를 포함해서 가장 중요한 정보가 여러분의 이메일 받은편지함에 이미 도착해 있을 겁니다.

대충 아래와 같은 형태로 되어 있을 겁니다.

Droplet Name: (여러분이 정한 서버이름)
IP Address: 123.123.123.132 (서버아이피주소)
Username: root (기본 root로 유저네임 생성. 최고관리자 아이디로 서버의 모든 곳에 들어갈 수 있고 설정을 변경 가능한 아이디)
Password: 1234abcd (root 관리자의 패스워드)

이걸 복사해서 잘 메모해두세요. 저는 컴퓨터에 폴더를 따로 만들고 서버 관련 정보를 모아두기로 했습니다.

SSH 이해하기

도착한 이메일 아래에 보면 패스워드는 나중에 다시 바꾸되, 꼭 복잡하게 만들어서 써라. 그리고 패스워드를 아예 사용하지 말고 SSH 키를 사용하면 훨씬 보안에 좋다고 하네요.

SSH = Secure Shell이란 서버랑 통신할 때 암호화해서 하는 방식이고요. 우리가 아이디 – 비밀번호로 로그인하는 방식을 많이 쓰지만 아무리 비번을 복잡하게 만들어도 그 쪽지를 누가 훔치거나 하면 말짱 꽝이기 때문에… 더욱 보안에 철저하려면 SSH 키를 사용하면 좋습니다. 대충 아주 어려운 수학 문제를 서버에 올려두고, 핵심적인 힌트를 내가 들고 있다가 서로 매칭해서 서버에 들어간다.. 는 개념 정도로 이해하면 될 거 같고요. 결국 온전한 열쇠를 서버나 내가 들고 있는 게 아니라 서로 만나서 맞춰가면서 열쇠를 완성해서 문을 열기 때문에 최종 열쇠값의 유출 위험이 줄어드는 거 같아요(이게 맞는지 잘 모르겠지만.. 여튼..)

간단히 정리하면 패스워드로 로그인하는 방식보다 SSH 키를 서버에 하나 심어두고 내 개인 키랑 대조해서 출입하는 게 훨씬 안전하다는 것.

서버에 루트 관리자로 로그인하기

서버의 뚜껑까지 열어볼 수 있는 권한으로 이제 싱가포르에 있는 서버 속으로 들어가봅니다. 우선 준비할 요리 재료는 아래와 같다.

  1. 유저네임 : root (최초에 이렇게 주어짐)
  2. 패스워드: 이메일로 왔었다. Droplet password라고 되어 있는 것.
  3. 서버 IP 주소 : 이메일로 도착. 숫자로 되어 있음.

이제 윈도우에서 사용할 수 있는 클라이언트 프로그램 하나를 다운로드 합니다. 헷갈리니까 폴더 하나 만들어두고 그 안에서 작업하죠. 프로그램 이름은 PuTTY입니다.

chiark.greenend.org.uk에서 puTTY 다운로드

For Windows on Intel x86 항목 아래에, putty.exe 하고 puTTYgen.exe 를 받아주세요. 앞에 건 접속할 때 쓸 거, 뒤에 건 키 만들 때 쓸 것.

이제 putty.exe 를 더블클릭해서 실행합니다. 창이 하나 뜨는데, Host Name (or IP address) 에 아이피 주소 넣고(숫자로), Port는 22로 둡니다. Connection type(연결방식)은 SSH로 체크하고요. Saved Sessions 아래에 접속설정 저장해야 하니까 아무거나 이름 정해서 넣고, 오른쪽에 Load.. Save ..Delete 버튼 모여있는 곳에서 Save를 클릭해서 설정을 저장합니다.

이제 자기가 방금 정한 접속설정명을 더블클릭해서 접속을 시도합시다. 그럼 보안 메시지가 하나 뜨는데 한 번만 뜨는 메시지니까 클릭해서 무시하세요.

까만 화면에 login as 라고 나오면 root 라고 입력하세요(아이디). 패스워드 물어보면 이메일로 왔었던 root의 패스워드를 넣어줍니다. 복잡하게 생겼으니까 마우스로 복사해서 붙여넣으세요. putty에서 붙여넣기는 마우스 우클릭 또는 Shift + insert 키입니다. 앞으로 붙여넣기 할 일이 많으니 알아두세요. 뭔가 까맣고 글자가 막 나오니까 저 같은 사람들은 무서워지기 시작하는데 겁먹지 마세요. 하다가 안 되면 처음부터 다시 하죠 뭐. (응?)

비밀번호 붙여넣기 잘 안 되면 천천히 키보드로 보고 써주시고요. 커서가 안 움직일 수 있는데 다 쓰고 엔터치면 인식되니까 끝까지 써주세요.

루트 관리자 패스워드 변경

서버에서 처음 들어온 뒤에 바로 패스워드를 변경하라고 합니다.

(current) UNIX password:
Enter new UNIX password:

현재 루트 관리자의 패스워드를 넣어주시고요. Enter new UNIX password 새 패스워드 쓰라고 하면 이제 새로 기억할 최고 관리자의 패스워드를 넣습니다. 영문과 숫자를 적절히 섞어주면 좋겠습니다. 한 번 입력하고 엔터치면 root의 새로운 비번 설정 완료.

그럼 위와 같이 root@seoulrainserver:~# 옆에 커서가 있는 상태가 됩니다. root는 사용자명이고, seoulrainserver는 서버이름입니다.

점점 무서워지죠? 괜찮습니다. 이런 설정은 처음에 딱 한 번만 하는 거니까요.

STEP 03. admin 관리자 만들고 접속 환경 갖추기

admin 아이디 생성하고 권한 주기

이제 root 아이디 대신 집안 관리용으로 드나들 때 사용할 아이디를 하나 더 만들겠습니다. root는 말하자면 집문서, 땅문서 다 들고 다니는 거라서 너무 위험합니다. 집주인 대행할 집사를 한 명 두는 게 안전해요.

이제 리눅스 명령어가 자주 나오는데 잘 모르면 그냥 붙여넣기 하면 되니까 쫄지 맙시다. 저도 몰라요…

Putty에서

adduser admin 

이라고 적습니다. adduser는 유저 추가한다는 명령어이고, admin은 우리의 새로운 집사 아이디입니다.

그럼 new UNIX password 치라고 나와요. root랑 같아도 되고 달라도 됩니다만, 아무래도 다른 게 좋겠죠? 넣어줍니다. 두 번 쳐야 함. 그리고 까먹지 마시고 따로 메모해주세요. 이 패스워드는 아무래도 아주 중요한 거니까 다른 사용자나 다른 사이트에서 사용하던 거 말고 좀 복잡하게 대소문자, 숫자 섞어서 만들어주시길.

Full Name 물어보고 그러는데, 귀찮으면 그냥 엔터 연속. 패스패스. information correct 하냐고 물어보면 y 엔터. 이제 집사 admin 유저가 생성되었습니다!

하지만 아직 집사에게 아무 권한도 공식적으로 주지 않았네요. 이제 admin 에게 ‘슈퍼 유저super user’ 권한을 줄 거에요. 이 권한을 주면 root 대장과 마찬가지로 집주인이 할 수 있는 걸 거의 다 할 수 있어요. 리눅스에서는 이런 명령을 내릴 때 맨 앞에 sudo라고 적어요. 슈퍼유저가 명하노니~ 정도의 의미입니다. 권한이 있는 유저만 쓸 수 있는 마법이죠. 집사가 sudo 로 시작하는 마법을 쓸 수 있도록 권한을 줍시다.

리눅스에는 유저가 있고, 유저그룹이 있는데요. 이제 현재 root로 로그인 된 putty의 화면에서, 아래 명령을 통해 admin 유저를 슈퍼유저 그룹 sudo에 가입시키는 방법으로 권한을 줄 겁니다.

gpasswd -a admin sudo   

gpasswd는 group password의 줄임말로 그룹에 패스워드를 설정할 때 쓰는 리눅스 명령어입니다. -a 는 새로 더한다(add)는 옵션이고요. 그래서 위 명령어는 그룹접근명령을 새로 하겠다. 멤버를 더하자. admin이라는 녀석을. sudo라는 그룹 안에. .. 라는 뜻이네요.

이제 Adding user admin to group sudo (어드민을 sudo 그룹에 넣습니다) 라는 메시지가 출력되면서 admin 집사는 이제 막강한 권력을 얻게 되었습니다.

admin 에게 열쇠 주기

이제 하숙집에 드나들 수 있는 SSH 키를 만들겠습니다. 위에서 설명했듯이 키를 조각내어 공개키 하나, 개인키 하나를 만들어야 하고, 공개키는 서버에 심어두어야 합니다.

키는 복잡한 수학공식을 적용하는 것처럼 전용 생성기 사용해서 만들 수 있어요. 초반에 다운받아두었던 puttygen.exe 를 더블클릭해서 실행합니다.

Parameters에 SSH-2 RSA (키 방식입니다)를 선택하고, Number of bits 는 2048로 되어있는데 그냥 그대로 둡니다. 그리고 중간 부분에 Generate을 클릭.

그럼 막대기가 생기고 멈춰있는데 막대기 아래에 빈 공간이 있습니다. 거기를 마우스로 휘저어주세요. 여러분의 랜덤한 움직임이 반영되어 키가 만들어집니다. 누군가가 이런 움직임을 기억하기는 힘들겠죠? 본인도 두 번 연속으로 똑같이 그리지는 못할 거에요.

이제 key comment 옆에 쉬운 말로 설명을 적어줍니다. admin용 키 등등..

그리고 Save public key 버튼을 눌러 adminpublickey 등의 이름으로 파일을 저장해주세요. 마찬가지로 Save private key를 눌러 adminprivatekey 이름으로 저장하죠. 그럼 passphrase 없이 저장할 거냐고 묻는데, 를 선택. (키를 사용할 때마다 한 번 더 패스워드를 물어보지 않도록).

이제 admin 유저가 사용할 열쇠 두 쌍이 마련되었습니다(공개키+ 개인키). 프로그램은 종료하지 마시고 창을 그대로 두세요.

admin용 공개키 서버에 전달하기

이제 서버에 admin 유저의 키 반쪽을 심어놓으려 합니다. 우선 putty에서 root로 로그인되어 있는 상황이니 admin 유저로 갈아타도록 합시다.

su - admin 

su = 스위치 유저? 사용자를 전환하는 명령어입니다. 하이픈(-) 앞뒤에 공백 있어요.

admin@seoulrainserver:~$

이렇게 표시되면 유저가 잘 변경된 것입니다.

이제 .ssh라는 폴더를 만들 겁니다. SSH 방식으로 접속할 거고 그 폴더에 키를 심어둔 다음에 admin 이 들어가려고 할 때 거기에 있는 키를 꺼내서 admin의 개인 키랑 합쳐보고 맞으면 통과하는 시스템을 만드려고 해요.

.ssh 폴더에 공개키를 심어두면 누가 열어볼 수 있어야 할까요? 이 폴더에 권한은 700으로 줄 겁니다. 권한은 777 요렇게 세 자리 숫자로 표시하는데, 맨 앞자리는 소유자의 권한, 둘째 자리는 그룹의 권한, 셋째 자리는 기타 사용자입니다. 4=읽기가능, 2=쓰기 가능, 1=실행 가능이지요. 그럼 3은? 3=2+1이니까 쓰고 실행 가능입니다. 6은? 4+2이니까 읽고 쓰기 가능입니다. 그럼 어떤 폴더의 권한이 777이라면? 그 폴더의 소유자, 사용자그룹, 기타 사용자(방문자)가 모두 읽고, 쓰고, 실행이 가능하다는 뜻이죠. 아까 우리는 .ssh 폴더의 권한을 700으로 준다고 했죠. 그것은 이 폴더를 만들어 소유한 소유자는 읽고, 쓰고, 실행이 가능하지만, 그 소유자가 속한 그룹의 다른 유저나, 아니면 기타 지나가다가 들린 유저라든가 등등으로 접속한 경우 권한이 없습니다(0). 즉, 이 폴더를 열어서 읽을 수도 없고, 새로 파일을 추가해서 쓸 수도 없고, 폴더를 실행해서 입장도 불가능합니다. 접속할 때 사용하는 공개키가 저장된 중요한 장소이니 권한을 이렇게 설정하는 거죠.

admin으로 로그인된 상황에서,

mkdir .ssh  

mkdir = make directory 폴더 만들어라 명령입니다. .ssh라는 폴더를 생성합니다.

chmod 700 .ssh 

chmod = change mode 권한 모드를 바꾼다는 명령입니다. 700으로 바꿉니다. 뭐를? .ssh 폴더를요!

이제 폴더를 만들고 폴더를 안전하게 잠궜습니다. 나만 볼 수 있도록이요.

다음으로 puttygen 프로그램 창을 다시 띄워 Public key for pasting into OpenSSH… 아래에 있는 내용을 복사합니다. 마우스로 우클릭해서 모두 선택 후 복사하면 됨. 그럼 클립보드에 복사됐죠.

다시 putty로 가서…

이제 .ssh 폴더 안에 있는 authorized_keys 라는 파일에다가 공개키를 넣어줄 겁니다. 메모장 txt 파일 같은 거라고 해두죠. 폴더는 만들었는데 파일은 어떻게 만들까요? 그냥 있다고 치고 바로 열면서 만들면 됩니다. 파일 안을 들여다보는 메모장 편집기와 같은 화면보기는 nano 명령어로 할 수 있습니다. nano는 윈도우의 메모장 같은 편집 프로그램 이름입니다.

nano .ssh/authorized_keys

즉, .ssh 폴더 안에 있는 authorized_keys라는 이름의 파일을 텍스트 편집기로 열어라. 없으면 있다고 치고 열자.

그럼 화면이 크게 열리는데, 파일 안으로 들어온 거에요. 여기에 아까 복사한 공개키를 붙여야겠죠? 키보드로 Shift + Insert키를 누르거나 간단하게 마우스로 putty의 커서에 대고 오른쪽 클릭하면 붙여넣기가 됩니다.

붙여넣기 후 괜히 내용 건드리지 말고 그대로 키보드로 Ctrl + X키를 눌러서 빠져나옵니다. 변경사항 반영할 거냐고 묻는데 y키를 누릅니다. 그러면 파일 이름을 다시 확인하게 되는데 파일명을 변경해서 저장할 게 아니라 현재 파일에 저장할 거니까 그대로 Enter 치면 됩니다.

이제 서버에 나의 공개키가 저장되었습니다. 이 키 파일을 나 스스로도 실행할 수 없도록 권한을 바꿔주겠습니다. 그룹이나 방문자는 읽기,쓰기,실행 모두 금지고요. 나=소유자는 읽고,고칠 수는 있지만 실행은 하지 않도록이요. 600 권한을 부여합니다. 기억하세요. 인증키가 저장된 폴더는 700권한. 인증키 자체는 600권한입니다.

chmod 600 .ssh/authorized_keys

.ssh 폴더 안에 있는 authorized_keys 파일에 600 권한을 부여하라. 다른 사람은 읽거나 쓸 수 없다.

이제 exit 명령어로 로그아웃해서 root 관리자로 빠져나옵니다.

exit

커서 앞이 admin 에서 root로 변경됐는지 확인하세요.

이로써 admin 유저의 공개키값을 서버의 admin 유저가 사용하는 유저 폴더 안에 저장해두게 되었습니다. admin 유저는 본인의 개인키를 들고서 서버 대문을 두드리면, 서버가 admin 유저인 경우 공개키가 있는 폴더를 열어 해당 키를 열어주고, 공개키와 admin 유저가 들고 온 개인키를 대칭해서 인증을 완료하고 키를 실행시켜 입장을 허락하게 되는 거죠.

root 원격 접속 차단하기

admin 계정의 키값을 만들었는데, 처음에 서버를 생성했을 때 root 관리자의 패스워드가 이메일로 왔었죠. admin 계정은 복잡하게 공개키를 심어두고 서버에 들어오는데, 최고최고 관리자인 root는 패스워드 한 방이면 이런 저런 징검다리를 통해 서버에 접근할 수 있는 상황이니 이를 금지하겠습니다. 이제 admin 의 입장 시 보안 검사를 강력하게 하도록 세팅했으니, root는 원격 접속을 차단합니다. 쉽게 말하면 아무 데서나 쉽게 root 사용자에게 전화해서 걔를 조종하거나 건드리지 못하도록 막겠다는 거겠죠. 잘 모르겠지만 일단 따라해봅시다.

putty 에서, root 유저로 로그인 된 상황에서,

nano /etc/ssh/sshd_config

nano 메모장으로 열자. etc 폴더 안에, ssh 폴더 안에, sshd_config 환경설정 파일을.

그럼 내용이 좌르륵 뜨는데 root 계정의 접속 환경에 관한 것입니다. 키보드 화살표키 아래로 내려서 보다보면 아래와 같은 줄이 있어요.

PermitRootLogin yes

이걸

PermitRootLogin no 

로 바꿉니다. 띄어쓰기 잘 보시고요.

Ctrl + X 쳐서 나오고, 변경사항 y 키로 반영, Enter 차례로 쳐서 빠져나옵니다. 이제 root 최고최고 관리자는 접근이 더 어려워졌습니다.

ssh 재시작, admin으로 자동 입장하기

설정을 바꿨으니 ssh를 다시 부팅합니다.

service ssh restart 

이제 밖으로 나가서 다시 들어와보죠. putty를 다시 켜고,

아까 패스워드말고 키를 나눠갖고 그걸로 로그인하기로 했었죠. putty에서 session 에서 저장해둔 프로필을 Load한 후,

왼쪽 사이드바에서 Connection > Data 메뉴 아래에 Auto-login username 이 있습니다. 거기에 admin 이라고 적습니다. 이제 admin으로만 서버에 입장할 거니까요.

SSH > Auth 항목으로 들어가면, Private key file .. Browse 버튼이 있어요. 탐색기를 열어서 admin 의 private key 파일을 찾아줍니다.

그리고 다시 session 항목으로 가서 기존 세션에 덮어 저장해주세요. 아이피 표시되는지 보시고요. 포트 22입니다. 세션명 클릭 한 번 하고 Save 합니다.

이제 서버에 접속할 때 세션명을 더블클릭해서 접속합니다. 그럼 이제 유저이름과 패스워드를 입력할 필요없이 자동으로 admin으로 접근해서 키를 대조하고 로그인이 완료되는 걸 볼 수 있습니다.

STEP 04. 서버 필수 환경 설정 (LAMP 설치)

우리는 워드프레스를 서버에서 돌릴 건데, 워드프레스는 php 언어를 기반으로 하고, 데이터베이스로 MySQL 이란 걸 쓰거든요. 보통 호스팅 업체에 공간을 돈 주고 얻으면 이런 것들은 거의 기본으로 들어가있죠. 원룸에 들어가면 냉장고, 세탁기는 기본으로 있달까. 하지만 디지털오션은 처음부터 해야 합니다. 워드프레스 설치하기 전에 기본이 되는 것들부터 깔아줘야 하죠. 다행히 그리 어렵지 않습니다.

LAMP는 Linux, Apache, MySQL, PHP 의 준말입니다. 오픈소스로 사용할 수 있는 보너스 팩 같은 거라고 생각하면 됩니다. 서버에 기본으로 깔아두면 이 훌륭한 엔진으로 아주 많은 프로그램을 돌릴 수 있습니다.

아파치(Apache) 웹서버 설치

아파치 웹 서버는 웹사이트를 그 위에 올려두고 돌리기에 아주 편하고 대중적인 도구입니다. 따로 어디서 소스를 다운로드 받아서 올릴 필요 없이 간단한 명령 몇 줄로 패키지로 받아서 설치할 수 있습니다.

이런 식으로 응용프로그램을 패키지로 묶어서 슈퍼에서 배달받듯이 깔 때 사용하는 명령어가 apt-get 입니다. admin으로 현재 로그인된 상황에서 서버 차원의 고급 명령을 내릴 때는 권한이 있다는 표시로 sudo를 (슈퍼유저가 명하노니~) 앞에 내세워 명령합니다.

sudo apt-get update

슈퍼유저가 명한다. 슈퍼마켓에서 패키지 목록 업데이트해라. (패스워드 물어보면 admin 의 패스워드 한 번 더 쳐주세요). 이제 주르륵 바로 가져다 쓸 수 있는 아이템 최신 목록을 검사해서 업데이트합니다. 목록을 업데이트 해야 최신 파일을 받을 수 있겠죠.

sudo apt-get install apache2

슈퍼유저가 명한다. 패키지 목록에서 설치한다(apt-get install). 아파치2 웹서버. 공간이 얼마가 필요한데 할 거냐고 물으면 y 엔터.

이제 아파치 웹서버가 설치되었습니다. 이제 우리 서버에 인터넷에 사이트 같은 걸 올려두고 서비스하기 편해졌죠. html 파일 같은 거 올려두거나 파일 배포하고 게시판도 만들고 할 수 있는 인터넷 공간이 열렸다고 할까요.

실제로 서버 아이피를 브라우저 주소창에 입력하면 처음에는 아무 것도 없다고 나옵니다.

아까 .ssh 폴더도 만들고 했지만 그런 폴더가 인터넷 브라우저로 막 보이고 그런 건 위험하겠죠.

하지만 아파치 웹서버를 설치하고 이제 아이피 주소를 브라우저에 입력하면,

이렇게 페이지가 보이는 걸 볼 수 있어요. 이제 서버의 어딘가에 문서도 올리고 해서 인터넷 사이트를 만들 수 있게 된 겁니다.

MySQL 설치

이제 데이터베이스를 관리할 수 있도록 MySQL을 설치하겠습니다. 워드프레스는 글을 쓰면 그걸 무슨 메모장 텍스트파일로 저장하는 게 아니라 데이터베이스 방에 따로 효율적으로 모아두고 관리합니다. 꼭 필요한 시스템이죠.

이번에는 패키지 목록 업데이트 명령은 생략합니다. 방금 전에 했으니까요. 프로그램이 1분마다 새로 나오는 건 아니겠죠. 바로 설치로 들어가죠.

sudo apt-get install mysql-server php5-mysql 

슈퍼유저가 명한다. 패키지 설치하라. MYSQL서버, php5-mysql 이렇게 두 개. 역시 공간 얼마 필요한데 할 거냐고 물으면 y키로 넘겨주세요.

잠시 후 무서운 색깔 창이 뜨면서 mysql-server 의 최고 유저 root의 패스워드를 정해달라고 합니다. 전체 서버에도 최고 관리자가 root였는데, 데이터를 보관하는 방의 최고 관리자도 있습니다. 이 관리자 이름도 root인데 패스워드를 정해주세요. 자꾸 유저가 많아지고 헷갈리니까 잘 적어두시기 바랍니다. 적고 엔터 치면, 한 번 더 적게 되어 있습니다.

이제 서버 안에 데이터만 관리하는 방이라고 할 수 있는 MYSQL 설치가 끝나면, 기본적인 틀을 만들어 놓으라고 명령해야 합니다. 데이터를 정리하려면 책장이나 선반 같은 걸 방에다가 마련해두어야지 마구 쌓아둘 수는 없겠죠?

sudo mysql_install_db

관리자가 명령한다. mysql 데이터베이스 구조 설치해.

다음 명령은 외부에서 너무 쉽게 데이터베이스에 접근하지 못하도록 어느 정도 보안을 높이는 명령입니다. 데이터가 있는 방을 함부로 건드리지 못하도록이요.

sudo mysql_secure_installation

데이터베이스 root 패스워드 달라고 하는데, 아까 정했던 거 넣어줍니다. 그럼 Change the root password 루트 패스워드 바꿀 거냐고 묻는데, 방금 전에 바꿨으니까 n로 답하죠.

그 다음부턴 계속 엔터만 쳐도 됩니다. 익명의 접근(anonymous users)을 불허한다. 원격으로 데이터베이스 root 권한으로 접속하는 것을 불허한다. 테스트 데이터베이스 찌꺼기 지운다. 데이터베이스 새로고침 등등이 설정됩니다. 엔터. 엔터.. 엔터..

이제 데이터가 차곡차곡 쌓일 작은 방 정리가 끝났네요.

PHP 환경 갖추기

php 요소들을 설치합니다. 워드프레스는 php 기반으로 돌아갑니다. 많은 웹-앱/사이트가 php 기반입니다. html 은 들어보셨죠? php는 더 다이나믹한 기능들을 구현할 수 있습니다. 물론, 단점도 있고, 새로 떠오르는 것도 많지만 워드프레스 돌릴려면 php를 서버에서 사용할 수 있게 해줘야 합니다. 뭔지 모르겠지만 필수적인 3가지를 아래와 같이 입력해서 설치하도록 합니다. 타이핑 귀찮으시면 복사해서 붙여넣기 하세요.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

관리자 명령. 패키지 설치해. php5 포함 세 개. 공간 얼마 필요하다 할 거냐고 물으면 y키로 진행.

설치는 금방인데, 조금 더 만져야 합니다. 보통 브라우저에서 웹 서버에 있는 특정 폴더로 들어가면 그 폴더 안에서 index.html 을 찾아서 보여주는 게 기본 설정인데요. 그 대신 index.php 가 우선적으로 보여지도록 설정하려고 합니다. 이 설정을 하려면 dir.conf (디렉토리 설정) 파일 속을 들여다봐야 합니다.

sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

위와 같이 생긴 내용이 노출되는데,

index.php가 우선시 되도록 아래와 같이 바꾸면 됩니다. 한 줄만 복사해서 붙여넣어주시면 될 거 같네요.

<IfModule mod_dir.c>
    DirectoryIndex index.php index.cgi index.pl index.html index.xhtml index.htm
</IfModule>

Ctrl +X 누르고, y 누르고, 파일명 확인 후 Enter쳐서 마무리합니다.

이제 아파치 웹서버를 리부팅하죠.

sudo service apache2 restart

추가 php 모듈 설치

php 에 모듈을 추가 설치해서 능력치를 올려보죠. 어떤 모듈이 있는지 보려면 아래와 같이 명령합니다.

apt-cache search php5-

php5라는 문자로 시작하는 모듈이 주르륵 나오는데, 모듈마다 하는 기능이 있겠죠? 어차피 저는 봐도 모릅니다. 이름으로 구글 검색하면 자세히 설명은 나오겠다만..

여기서는 php 스크립트 테스트할 때 유용하다는 (뭔 말인지 모르겠지만), php5-cli 모듈 하나 새 버전으로 깔아보고요.

sudo apt-get install php5-cli

아래는 서버가 메일 보낼 때 쓰는 거라는데 지메일 서버를 통해서 내 서버에서 이메일을 보낼 수 있도록 할 수 있습니다. 나중에 공부해보기로 하고 일단 설치해놓기로.

sudo apt-get install sendmail

주르륵 설치가 완료되면(좀 오래 걸리네요), 이 모듈의 환경설정으로 들어가보죠.

sudo sendmailconfig

환경설정으로 들어가서 디폴트로 저장. (계속 y키 연타). 주르륵~~ 설정 화면 나오는데 또 조금 기다려야 함.

phpMyAdmin 데이터 관리도구 설치

워드프레스는 데이터를 mySQL 방식으로 데이터베이스로 관리한다고 했습니다. 브라우저에서 이 데이터베이스의 구조에 접근하고 관리하기 편하도록 사용할 수 있는 도구가 phpMyAdmin 인데요. 가령 데이터베이스를 모두 깔끔하게 삭제한다든가, 복제하거나, 덮어쓰거나 하는 일을 쉽게 할 수 있습니다.

sudo apt-get update
sudo apt-get install phpmyadmin

위와 같이 입력해서 패키지 목록을 업데이트하고, phpmyadmin 을 설치합니다. 공간 필요한데 할 거냐고 물으면 y키로 진행.

조심할 게 있는데 설치할 때 처음에 뜨는 색깔 창에서 아파치를 선택하고 넘어가야 합니다. 스페이스 키로 아파치 서버 이름 왼쪽에 체크 표시를 한 다음, TAB 키로 커서를 OK로 이동한 뒤, Enter 키를 쳐주세요.

그 다음 db-config common 어쩌구 물어보는데 <Yes>에 빨간 음영이 있는 상태 그대로 두고 Enter.

그 다음에 데이터 전체 관리자 비번 넣으라고 나와요. 아까 mysql root 관리자 비번 넣어줍니다

그 다음에 MYSQL application 패스워드 등록하라고 나옵니다. 적절하게 넣어주세요. 메모해주시고요.

마지막으로 아래 명령을 입력해줍니다. (확장 호환성 증가. 저도 뭔지 모름.)

sudo php5enmod mcrypt

아파치 재시동합니다.

sudo service apache2 restart

도메인 아이피 뒤에 phpmyadmin 을 붙여서 http://domain_name_or_IP/phpmyadmin 와 같은 형태로 브라우저에서 접속해보세요. 브라우저로 디비 테이블을 볼 수 있습니다. 유저명에 root / 디비 관리자 패스워드 치고 들어가세요. 괜히 들어가셔서 뭐 지우고 그러지는 마시고요 ㅎㅎ

php 프로세싱 테스트

이제 php 환경설정을 마쳤으니, 이제 php 로 뭐라고 말하면 얘가 잘 알아듣는지 시험을 해보죠.

컴퓨터에 보면 C 드라이브가 있고, 그 안에 폴더들이 있죠. 웹 서버도 시작하는 폴더가 있습니다. 그런데 그 폴더는 꼭 C:\ 처럼 최상위 주소는 아니지요.

우리가 지금 보고 있는 Ubuntu 14.04 서버에서는 인터넷에 공개될 수 있는 기본 주소의 시작 폴더 위치가 /var/www/html/ 입니다. 서버에 var 라는 폴더가 있고, 그 안에 www라는 폴더가, 그 안에 html 폴더가 있습니다. 이 폴더 안에 만약 info.php 파일을 집어넣으면, 그 파일의 주소는

/var/www/html/info.php

입니다.

서버의 아이피 주소가 만약 http://123.123.123.123 이라면, info.php 파일은 어떻게 볼 수 있을까요?

http://123.123.123.123/var/www/html/info.php 로 가도 이 파일은 없습니다. 이 파일은 http://123.123.123.123/info.php 에 있게 됩니다. 웹 서버의 위치가 /var/www/html/부터 시작이거든요. 아파트 복도도 집 계약할 때 우리집 면적에 포함되지만 실제 우리집은 현관부터인 거랑 비슷합니다.

이제 아래 경로에 바로 파일을 생성하면서 내용을 열어보죠.

sudo nano /var/www/html/info.php

패스워드 물어보면 쳐주시고요. 그럼 new file 이라고 나오면서 파일 내용이 열립니다.

빈 공간에 아래의 내용을 적어넣어줍니다. 줄바꿈 포함. php 코드로 되어 있는 내용입니다. 복사해서 붙여넣어도 됩니다.

<?php
phpinfo();
?>

이제 Ctrl + X 키 누르고, y키, Enter키 차례로 눌러서 나옵니다.

이제 웹브라우저에서 해당 파일을 직접 열어봅시다.

http://내서버아이피주소/info.php

그럼 아까 적어넣은 글자 대신 표가 보여야 합니다.

표가 보이면 php 코드를 인식한다는 것입니다. 만약 표가 안 보이고

<?php
phpinfo();
?>

글자가 쌩으로 보인다면, php 설치가 뭔가 잘못됐습니다.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

명령으로 php 언어 관련 모듈을 재설치합니다. 스펠링 틀리지 마세요.

이제

http://내서버아이피주소/info.php 에서 표가 잘 보이면 이 파일을 지워주도록 합니다. 괜히 내 서버의 정보를 누가 지나가다가 보게 할 필요는 없으니까.

sudo rm /var/www/html/info.php

rm = remove 지워라 명령입니다. 관리자명령한다 지워라 /var/www/html/info.php 파일을.

아까 열어두었던 브라우저를 새로고침해서 php 표가 안 나오는지 확인하세요.

이제 워드프레스를 설치하는 데 필요한 바탕환경을 모두 갖추게 되었습니다. 물론 워드프레스 뿐만 아니라 이 웹서버와 php랑 데이터베이스로 여러 가지 프로그램을 올려서 굴릴 수 있습니다.

지금부터는 도메인 설정을 진행해보죠.

STEP 05. 도메인 설정하기

워드프레스 설치를 먼저 진행해도 되지만, 어차피 도메인을 연결할 거라면 도메인 세팅부터 마치는 게 좋습니다. 블로그 설치하는데 도메인이 연결이 아직 안 되어 있거나, 연결 중이라서 접속이 됐다가 안 됐다가 하면 골치 아프겠죠. 어떤 분은 아이피 주소 기준으로 설치했다가 나중에 설정을 변경하시던데, 그냥 바쁜 것도 아니고 천천히 도메인부터 설정해보죠.

우선, 저는 DigitalOcean에서 월 5달러 주고 서버(=Droplet)를 한 개 임대 받았지만, 그 안에 사이트를 두 개 운영하려고 합니다. 집은 하나이지만, 집을 나눠서 주소도 따로 부여하고, 두 집 살림처럼 세팅할 거에요. 사실 세 집, 네 집도 가능해요. 총 서버의 하드 용량, 전송량 한계치만 넘지 않으면 됩니다. 또 두 집 살림하면 한 집에서 화장실 많이 쓰고 하면 다른 집이 불편한 것처럼 사이트 하나가 뜨겁게 달리면, 다른 사이트가 버벅대고 그럴 수도 있겠죠. 그러나.. 어디까지나 저는 별 거 아닌 두 개의 사이트를 운영할 생각이니까 말입니다.

두 개의 도메인 설정

우선 두 개 모두 워드프레스 사이트로 할 건데요. 각각 도메인을 example.com, test.com 이라고 하겠습니다. 도메인은 미리 구입해두셔야 하겠고요. 가급적 국내 업체에서 사는 게 관리하기 편하고 좋아요. 저는 hosting.kr에서 구입/관리하고 있네요.

네임서버 변경

가장 먼저 해당 도메인 등록 사이트에서 도메인의 네임서버를 디지털오션 쪽으로 돌려놓아야 합니다. 브라우저에 도메인을 키보드로 치고 엔터! 눌렀을 때 일단 어디로 출발해야 하는지 알려줘야 합니다. 디지털오션으로 와야겠죠? 제가 거기에 지금 살림을 차리고 있으니까요. 도메인 업체의 도메인 관리페이지에서 네임서버 변경하는 항목으로 들어가서 네임서버를 변경해주세요. 디지털오션은,

ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com

이렇게 적어주면 됩니다. 아래는 호스팅케이알 업체 홈페이지의 네임서버 변경 화면입니다.

변경을 신청하고 잠시 후에 이메일로 변경이 되었다고 이메일이 오더군요. 하지만! 바로 반영이 되는 건 아닙니다. 우리집에서는 example.com 으로 접속했는데 디지털오션쪽이 열리고, 철수 집에서는 example.com 으로 접속하니까 다른 곳이 열릴 수 있습니다. 전세계 사람들이 어디에서 접속하더라도 example.com 을 주소창에 치면 디지털오션쪽 서버가 열리려면 네임서버 변경이 완전히 전파되기까지 기다려야 하죠. 보통 6시간에서 길게는 2-3일이 걸릴 수도 있어요. 3일 묵혔다가 작업을 다시 시작하시는 것도 좋습니다.

처음 도메인을 샀다면 바로 디지털오션쪽으로 네임서버를 설정하면 되지만, 기존에 그 도메인을 사용해서 블로그를 운영하고 있었다면 네임서버를 변경하기 전에 자료를 백업해두어야 합니다. 가령 cafe24 호스팅에서는 myid.cafe24.com 등의 형식으로도 블로그 접속이 가능하지만 hosting.kr 의 호스팅에서는 도메인 연결을 끊으면 따로 접속할 수 있는 도메인을 안 주더라고요. 여튼 주소를 디지털오션쪽으로 돌리기 전에 준비를 마치셔야 해요.

디지털오션 도메인 세팅

이제 디지털오션 쪽 작업입니다. 로그인 후에 화면 위 Networking 메뉴를 클릭. 왼쪽 사이드바에서 Domains를 클릭. Domain 칸에는 example.com 과 같이 도메인을 적는데 www는 빼고 적어요. Droplet or Custom IP 칸에 클릭하면 자기가 만들어놓은 Droplet 서버 목록이 나오는데 저는 하나 뿐이니 그걸 선택하죠. 또는 Droplet 서버의 IP 주소를 그대로 적어도 좋습니다. 다 했으면 Create 클릭.

다음은 Select Record Type 화면. 특별히 IPv6 긴 주소를 사용하기로 했던 사람은 AAAA 버튼을 클릭해야 하지만 일반적으로 A record 설정만 하면 됩니다. A record는 쉽게 말하면 하위 도메인 설정인데, example.com 의 소유자가 test.example.com 주소도 사용하고 싶다든가 할 때 설정하면 됩니다. 그럴 때는 test 의 ip를 넣어주는 거죠. 하지만 그냥 앞에 아무것도 없이 example.com 만 쓸 거라면, Enter Name 항목에 @ (골뱅이)만 넣어주고, 서버의 아이피 주소를 넣어주면 되는데 아래 리스트에 보면 기본으로 생성이 되어 있네요. 어차피 쓸 거니까. 혹시 없다면 넣어주세요.

다음은 CNAME Records. 이건 A Record의 별명같은 거라고 생각하세요. 복잡하면 www.example.com 이 @.example.com 을 항상 추종하도록 설정해주는 정도로 족합니다. Enter Name 에 www를 쓰고, Enter Hostname에 @를 써요. 그리고 Create CNAME Record 파란 버튼을 클릭해서 추가합니다. wwww.example.com 과 같이 내 도메인 앞에 뭘 쓰든지 무조건 example.com으로 접속되게 하고 싶으면 Enter Name에 * (별표)를 쓰고, Enter Hostname에 @ 를 써서 하나 더 추가해줘도 되죠. 이건 옵션 사항.

MX Records는 내 도메인 위에 메일 서버 돌릴 거면 설정하면 되는데, 매뉴얼에서는 구글메일 서버 세팅을 예시로 하고 있습니다. 잘 모르겠으면 Create .. 버튼 옆에 Add Gmail MX records 를 클릭하면 쓸만한 것을 자동으로 넣어줍니다. 근데 어떻게 쓰는 건지 잘 몰라요 저는.

여기까지 하면 끝입니다. 제 경우는 test.com 과 같은 추가 도메인이 하나 더 있죠. 이 도메인에 대해 위의 과정을 똑같이 반복해주면 됩니다.

두 개의 사이트 운영을 위한 폴더 구조 생성

이제 putty를 열어 admin으로 접속해주세요. 그리고 아래와 같이 구별된 디렉터리를 생성합시다.

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

즉, 폴더를 만드는데(mkdir), -p옵션은 좌르륵 구조를 한꺼번에 만드는 겁니다. /var/www/ 아래에 example.com 이라는 폴더와 public_html 이라는 폴더까지 한 번에 만드는 거죠. 하나의 서버에서 /var/www/ 지점에서 두 갈래로 나뉘어서 두 집 살림을 따로 차릴 수 있도록 도메인별로 폴더를 만들어주었습니다.

그리고 admin 사용자가 이 각각의 폴더를 마음대로 주무를 수 있도록 소유권을 줍니다

sudo chown -R admin:admin /var/www/example.com/public_html
sudo chown -R admin:admin /var/www/test.com/public_html

이제 admin 유저/유저그룹은 example.com 폴더 아래와 test.com 폴더 안에 있는 자료의 소유자입니다.

sudo chmod -R 755 /var/www

웹서버 최상위를 /var/www/ 로 잡고 이 폴더 아래에 대한 접근권한을 755로 조정합니다. 즉, 소유자인 admin은 읽고, 쓰고, 실행하고 모두 할 수 있지만 다른 사람은 읽고 실행은 해도 새로 쓰거나 삭제는 못 하도록 합니다. (블로그에 방문자가 블로그 파일을 읽거나 검색어 입력해서 검색도 하고 할 수는 있지만 자료를 지워서는 안 되겠지요).

두 개의 사이트 첫페이지 제작

각각의 사이트 폴더에 파일이 아무 것도 없어서 실제 거기에 가도 도착을 잘 한 건지 확인할 길이 없네요. 임시로 시작 페이지를 하나씩 넣어주겠습니다.

nano /var/www/example.com/public_html/index.html

index.html 파일을 example.com 가장 상위 폴더에 생성하고 열어봅니다.

<html>
  <head>
    <title>example.com 에 방문하셨습니다.</title>
  </head>
  <body>
    <h1> 성공! example.com 가상호스트가 잘 작동합니다. </h1>
  </body>
</html>

위 내용을 붙여넣기 하고 저장하고 빠져나옵니다. (Ctrl+X , y키, Enter)

형식이 똑같으니까 같은 파일을 test.com 에 할당된 폴더 쪽에도 복사하죠.

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
nano /var/www/test.com/public_html/index.html

두 번째 사이트폴더의 인덱스 파일 엽니다. 내용을 조금 고쳐야겠죠?

<html>
  <head>
    <title>test.com 에 방문하셨습니다.</title>
  </head>
  <body>
    <h1> 성공! test.com 가상호스트가 잘 작동합니다. </h1>
  </body>
</html>

위 내용으로 덮어쓰기 합니다.

두 개의 사이트 호스트 환경설정

하지만 아직 브라우저에 example.com 을 쳐도 디지털오션 쪽으로 연결은 되지만 정확히 내 서버의 어느 위치를 보여줘야 하는지 설정해주지 않았기 때문에 위 index.html 파일의 내용이 보이지 않습니다.

브라우저에 example.com 을 치면

위와 같이 기본 페이지만 나오지요. /var/www/example.com/public_html/ 로 가야 하는데, /var/www/html 에 가서 첫 페이지를 찾고 있습니다. 길 안내를 해줘야 합니다. 호스트환경설정 파일을 편집해서 길을 인도해줄 수 있습니다.

아파치 웹서버에 기본으로 있는 호스트환경설정 파일을 복사해서 example.com 용으로 하나 생성해 사용하도록 하죠.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

이제 example.com 의 호스트 환경설정 파일을 열어줍니다.

sudo nano /etc/apache2/sites-available/example.com.conf

대충 아래와 같이 생겼습니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

우리는 이제 새로 example.com 으로 문을 두드리는 사람이 어디로 가야 하는지 적어주도록 하겠습니다. 다세대 주택에서 초인종 누르고 203호 찾는 사람이 잘 찾아갈 수 있도록 해야죠. 로비에서 헤매거나 엉뚱한 집으로 가면 안 되니까요.

ServerAdmin webmaster@localhost 이라고 되어 있는 부분에서 뒤에 부분을 사이트 관리자의 이메일로 수정합니다.

ServerAdmin myid@naver.com 

그리고 그 아래에 아래 두 줄을 추가합니다.

ServerName example.com
ServerAlias www.example.com

서버네임은 연결할 도메인의 이름이고 ServerAlias는 서버 별명이라고 생각하세요. 위에서는 www.example.com 이 별명이어서 결국 example.com 본명?이랑 매칭되므로 둘은 같은 거라는 말입니다.

그리고 DocumentRoot 도 수정합니다. 기본적으로 서비스될 파일이 위치하는 출발 주소이고, 이미 세팅했듯이 아래와 같은 주소 경로가 될 겁니다

DocumentRoot /var/www/example.com/public_html

여기에 아래 내용도 추가하죠.

<Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

Directory /va/www… 로 이어지는 주소 항목과, Allow Overrride All (나중에 워드프레스 퍼머링크 사용하기 위한 설정)에 주의하세요.

결국 최종 모양은 대충 아래와 같습니다.

<VirtualHost *:80>
    ServerAdmin 관리자이메일주소
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
<Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

이제 저장하고 빠져나오세요.

사이트가 하나 더 있죠? 방금 전 작성한 이 호스트 설정파일 모양을 그대로 사용하기 위해서 복사합니다

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

와 같이 써서 호스트 설정 파일 test.com.conf 을 하나 생성해주세요.

sudo nano /etc/apache2/sites-available/test.com.conf

물론 내용은 수정해야죠.

<VirtualHost *:80>
    ServerAdmin 관리자이메일주소
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
<Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/test.com/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

저장하고 빠져나오세요.

이제 호스트파일을 작성했으니 서버에게 명령해서 활성화해야 합니다. a2ensite 명령어로 깨어나게 해주세요.

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

이렇게 하면 두 호스트파일이 적용되었습니다.

sudo service apache2 restart

아파치 서버 전체 재부팅해서 새로고침.

* Restarting web server apache2
 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

그럼 대충 위와 같은 메시지가 나오는데, 아직 설정을 다 마치지 않았으므로 그냥 무시합니다.

두 개 사이트 접속 테스트

도메인 관리업체에서 네임서버 연결이 완료되면, 웹브라우저에서 접속했을 때 http://example.com 에 접속 시

성공! example.com 가상호스트가 잘 작동합니다. 

메시지가 나타나야 정상입니다. 이것은 example.com 도메인이 내 서버의 맨 꼭대기 /var/www/ 이 아니라 /var/www/example.com/public_html 쪽으로 잘 착륙하고 있다는 신호이죠.

test.com 으로도 접속이 잘 되면 이제 하나의 가상 서버에 두 개의 폴더를 만들고, 전혀 별개의 사이트로 운영할 수 있는 환경이 갖춰진 것입니다. 접속하는 사람 입장에서는 example.com 과 test.com 이 한 집에 살고 있는지 모를 겁니다. 이제부터 각각의 폴더에 워드프레스를 설치하겠습니다.

STEP 06. 워드프레스 설치하기

이제 직접 워드프레스를 서버에 깔아보죠. 저는 이 서버(Droplet)에다가 워드프레스 사이트를 두 개 운영할 건데, 사실 별 거 없습니다. 워드프레스 폴더 두 개, 데이터베이스도 두 개 만들어서 각각 연결해주고, 각각 도메인 연결해주면 되는 거죠.

우선 워드프레스는 실제 보이는 화면의 구조와 데이터를 따로 관리합니다. 요리집이 요리(데이터)와 요리를 담아내는 식탁+그릇+조명(=레이아웃)을 따로 관리하는 것처럼.

MySQL에 데이터베이스 생성하기

워드프레스 사이트를 두 개 만드는 걸 식당 두 개를 만드는 거에 비유해보죠. 생짜 데이터는 내용이고, 그릇이나 조명 인테리어는 음식을 담는 틀입니다.

먼저 실제 요리=데이터를 담아두는 데이터베이스부터 만져보죠. 우리는 이미 MySQL = 데이터 관리실을 서버에 설치한 바 있습니다. 이게 그 방에 관리자(root) 권한으로 접근하세요.

mysql -u root -p 

mysql에 유저 root 의 권한으로 접근합니다. 데이터 최고 관리자 root의 패스워드를 적어주고 접속하세요. 그럼 mysql> 모양으로 명령 프롬프트 앞줄이 바뀝니다.

이제 데이터 보관 방에 들어왔네요. 이 방에 캐비넷을 따로 하나 마련해서 워드프레스용 전용 냉장고로 사용하려고 합니다. 식당이 두 개인데 냉장고는 따로 써야지요. 즉, 데이터베이스 캐비넷을 생성합시다. 데이터베이스 이름은 알아보기 쉬운 걸로 정해주면 좋죠. wordpress 또는 wp 등이 가장 많이 쓰이지만 자기만 알아보면 상관없어요. 저는 wp1 이라고 하겠습니다. mySQL 데이터 방에선 모든 명령어가 ; 세미콜론으로 끝납니다.

create database wp1;

wp1 라는 이름의 데이터 캐비넷=데이터베이스가 생성되었습니다.

그 다음에 이 워드프레스 캐비넷에만 접근할 수 있는 관리자랑 비번도 만들어주어야 합니다. 캐비넷 열쇠 관리자라고 할까. 가령 캐비넷 아이디를 apple, 패스워드를 mango 라고 한다면, 아래와 같이 넣어줍니다. (또 만드네요. 메모 잘 하세요.) 뒤에 세미콜론 챙겨주세요.

create user apple@localhost identified by 'mango';

이제 여러분의 서버의 데이터만 관리하는 mySQL 방 안에, 다시 워드프레스 데이터만 다루는 캐비넷=데이터베이스가 wp1 이라는 이름으로 있고, 그 캐비넷 문을 열 수 있는 관리자 apple 과 패스워드 mango 가 생성되었습니다.

하지만 사실 아직 권한을 주지 않아서 접근이 안 됩니다. 이제 apple에게 권한을 줍시다. 캐비넷을 열 수 있도록.

grant all privileges on wp1.* to apple@localhost;

준다 / 모든 / 권한을 / wp1데이터베이스에 있는 권한 / 누구에게? apple에게.

이제 apple이라는 유저가 wp1이라는 데이터베이스에 접근할 수 있게 되었습니다. 방금 수정한 권한 변경 사항을 mySQL 방 전체가 알 수 있도록 전체 새로고침을 한 번 해줍니다.

flush privileges;

이제 서버의 데이터 관리실에서 워드프레스 데이터 모아두는 캐비넷에 누가 들어왔다 나갔다 할 수 있는지 알게 되었습니다.

저는 사이트를 두 개 운영할 거니까 DB를 하나 더 만들어야죠. 캐비넷/냉장고를 하나 더 들이는 거랄까요.

create database wp2;
grant all privileges on wp2.* to apple@localhost;
flush privileges;

순으로 데이터베이스를 생성하고, 아까 만들어두었던 유저에게 권한을 주고, 새로고침하였습니다 .

이제 요리 재료 있는 데이터 방에서 나가죠.

exit

mysql 이 admin@ .. 으로 바뀌면서 일반 유저모드로 돌아옵니다.

워드프레스 다운로드

이제 실제 워드프레스 파일들을 설치할 차례입니다. 식재료 보관할 장소는 마련했으니, 식당의 외관을 마무리해야죠. 워드프레스 제작팀은 항상 쉽게 최신 버전을 가져갈 수 있도록 인터넷에 올려놓습니다. 그 주소에서 파일을 따와서 우리 서버로 가져오기만 하면 됩니다.

cd ~

최상위 경로로 이동하세요.

wget http://wordpress.org/latest.tar.gz

위 명령으로 인터넷에서 워드프레스 압축 파일 최신판을 다운로드 받게 됩니다. 이제 압축을 푸세요.

tar xzvf latest.tar.gz

그럼 홈 디렉토리에 wordpress라는 이름으로 폴더가 생성됩니다. 이 폴더 안에 워드프레스 실제 작동 파일이 들어있습니다. 이렇게 설치 기본 파일을 받아 압축을 풀기까지 작업을 사실 FTP로 해도 되지만, 이렇게 SSH로 서버 위에서 하면 훨씬 빠릅니다.

php 패키지 다운로드

본격적으로 시작하기 전에 필요한 패키지 몇 개를 다운로드 받도록 하죠.

sudo apt-get update 
sudo apt-get install php5-gd libssh2-php

두 개의 php 모듈은 워드프레스 플러그인 설치하고 사이트 업데이트하는 데 필요하다는데 저도 잘 모릅니다.

step 4. 워드프레스 첫 번째 사이트 설정파일

현재 wordpress 폴더가 서버의 최상위에 있습니다. 하지만 저는 사이트를 두 개 운영할 거고 각각 서비스되는 위치가 정해져있죠.

저는 이제 워드프레스 폴더를 각각 wp1, wp2로 이름을 고쳐서 각각 사이트의 적절한 위치에 옮겨둘 겁니다. 물론 폴더 이름을 고치지 않고 그대로 사용해도 됩니다. 하나씩 차근차근 하지요.

우선 서버의 최상위로 가서 wordpress 폴더 이름을 wp1로 고칩니다.

cd ~
mv wordpress wp1

이름변경하라 wordpress 폴더를 wp1 이름으로.

이제 워드프레스 폴더 wp1로 이동합니다.

cd wp1

이제 기본 샘플로 제공되는 워드프레스 환경설정 파일을 복사해서 실제 사용할 환경설정 파일로 만들고 내용도 수정할 차례입니다.

cp wp-config-sample.php wp-config.php

복사해라 wp-config-sample.php 파일을 / wp-config.php 이름으로 새롭게.

이제 환경설정 파일 내용을 들여다봅시다.

nano wp-config.php

나머지 내용은 건드릴 필요 없고, DB_NAME, DB_USER, DB_PASSWORD 만 만지면 됩니다. 워드프레스 환경설정 파일 안에 이 내용이 있어야 워드프레스가 데이터를 읽고 쓸 수 있어요. DB_NAME은 제 경우엔 wp1, 유저는 apple, db 패스워드는 mango가 되겠죠. 그럼 아래와 같이 고쳐주시면 됩니다.

<div class="comment" style="background-color:#EFE577; padding:3px;"> ** MySQL settings - You can get this info from your web host ** //</div>
/** The name of the database for WordPress */
define('DB_NAME', 'wp1');

/** MySQL database username */
define('DB_USER', 'apple');

/** MySQL database password */
define('DB_PASSWORD', 'mango');

화살표키로 옮겨다니며 이 세 가지 사항을 업데이트 하고 다 했으면 Ctrl + X 키, y키, Enter키를 차례로 쳐서 빠져나오세요.

워드프레스 폴더 옮기기

이제 준비가 다 된 이 워드프레스 폴더를 통으로 사람들이 볼 수 있도록 접근이 공개된 폴더로 옮깁시다. 알다시피 wp1 데이터베이스를 적용할 워드프레스는 example.com 이 사용하게 되며, 위치는 /var/www/example.com/public_html 이다. 그런데 개인적으로 워드프레스 구동 파일이 지저분하게 흩어져있는 것보다 폴더로 묶여있는 걸 더 좋아해서 /var/www/example.com/public_html/wp1/ 를 최종 목적지로 하려고 합니다.

폴더를 옮길 때 설정한 내용, 권한 부여된 것까지 그대로 안전하게 옮기기 위해서 rsync 명령어를 사용합니다. 디비 설정까지 마친 아까의 폴더를 먼저 옮겨봅시다. 옵션까지 포함해서 안전하게 옮깁니다.

sudo rsync -avP ~/wp1/ /var/www/example.com/public_html/wp1/

관리자명령. 옮겨라. 권한까지 그대로. 최상위 wp1폴더를. /var/www/example.com/public_html/wp1/ 폴더에.

혹시 패스워드 admin 거 물어보면 적어준다.

워드프레스 폴더 옮기기 (두 번째 사이트용)

마찬가지로 wp2도 작업해야겠습니다. 우선 루트에 있는 wp1 폴더를 다시 wp2 이름으로 바꿉니다.

cd ~
mv wp1 wp2

그리고 wp2 폴더 안의 설정 파일을 열어서, 데이터베이스를 wp2로 설정해주세요.

nano wp2/wp-config.php

아래와 같이 지정합니다. 유저명과 비번은 그대로 두어도 될 거 같습니다. 같은 DB 유저를 사용할 거니까요.

<div class="comment" style="background-color:#EFE577; padding:3px;"> ** MySQL settings - You can get this info from your web host ** //</div>
/** The name of the database for WordPress */
define('DB_NAME', 'wp2');

/** MySQL database username */
define('DB_USER', 'apple');

/** MySQL database password */
define('DB_PASSWORD', 'mango');

그리고 ctrl+x , y키, Enter를 차례로 눌러 빠져나와요. 이어서 해당 폴더를 두 번째 도메인과 연결할 폴더에 옮겨줍시다.

sudo rsync -avP ~/wp2/ /var/www/test.com/public_html/wp2/

이제 두 개의 사이트 example.com 과 test.com 이 있는 두 집의 적절한 위치에 워드프레스 폴더가 배달되었습니다.

워드프레스 폴더 권한 설정

실제 워드프레스 폴더로 가보세요.

cd /var/www/example.com/public_html/wp1/

현재 wp1 폴더 안에 워드프레스 관련된 모든 파일이 들어가 있습니다. 그런데 이 파일은 현재 웹에 공개되어 있는 상황이라서 누구나 열어볼 수도 있기에 보안을 위해 권한 설정을 조정해줄 필요가 있겠습니다. 현재 putty로 모든 설정/명령을 내리고 있는 ‘admin’ 서버 유저는 슈퍼유저로 root 권한까지 받은 상태인데, 이 admin 서버 유저에게 이 워드프레스 폴더의 소유권을 주면 좋을 겁니다. 아예 서버의 최상위에 접근은 못하고 워드프레스가 시작하는 /var/www/html/ 폴더부터만 들어올 수 있는 새로운 유저를 따로 생성하는 것도 가능하지만 귀찮으니까 패스하죠.

뭔 소린지 사실 저도 잘 모르니까 질문은 하지 말고, 시키는대로 합시다. ;;;

sudo chown -R admin:www-data *

관리자명령한다 / 소유자를 새로 임명하겠다 change owner / 폴더 아래 내용 모두 포함이다(R옵션) / admin이라는 녀석과 www-data라는 이름의 그룹에게 / 현재 폴더 안의 모든 파일에 대한 소유권한을.

이제 소유권 설정도 마쳤습니다. 복잡해보이지만, 집 계약할 때 권한 설정과 채임소재를 분명하게 해야 한다고 생각하고 차근차근 따라오면 됩니다.

다음으로 워드프레스에 uploads 폴더에 대한 권한 설정을 하겠습니다. 이 폴더를 통해 자료를 올리고 활용하게 되는데 너무 문을 빡빡하게 잠궈두면 힘들어서 좀 만져줘야 한다고 하네요.

wp-content 폴더 아래에 uploads 폴더를 만들어줍시다.

mkdir /var/www/example.com/public_html/wp1/wp-content/uploads

이제 이 폴더의 권한을 조금 느슨하게 풀어주세요. 웹서버가 자동으로 여기에 뭔가 올리고 접근할 수 있도록 해주어야 사이트 업데이트하고 그럴 때 편합니다.

sudo chown -R :www-data /var/www/example.com/public_html/wp1/wp-content/uploads

이렇게 하면 웹서버가 이 폴더 안에 폴더도 자동으로 만들고, 파일도 추가할 수 있도록 해줍니다. 이렇게 해야 워드프레스에 새로 자료를 올리고 할 때 편하다고.

위 두 과정을 wp2 폴더로 이동하여 동일하게 해주세요.

워드프레스 설정 마무리하기

이제 워드프레스 사이트를 브라우저로 열어보시죠.

네임서버가 반영되면 http://example.com/wp1 로 접속했을 때 워드프레스 설정화면이 나와야 합니다.

Site Title 사이트 제목 / Username 워드프레스 웹에서 로그인할 때 사용할 관리자 아이디 (이쯤 되면 너무 아이디를 많이 만들어서 머리가 아프다… ) / 까먹지 않게 잘 적으면서 진행합니다. 그리고 본격적으로 워드프레스를 인스톨하면 되겠죠.

다 했으면 로그인. 워드프레스 관리자 화면이 보이면 성공! 이제부터는 보통 웹호스팅에서 워드프레스를 사용하는 것처럼 관리자화면을 통해 사이트를 관리하면 됩니다.

FTP 설정하기 (안전한 SFTP 방식)

파일을 대량으로 올리고, 내려받고 할 때 FTP 프로그램을 사용하는 게 여러모로 편리한데, DigitalOcean 서버에 자료를 드르륵 올리고 내려받고 하기가 국내 호스팅 FTP 쓰던 분이면 그다지 만족할 속도는 안 나오더라고요. 그래도 직접 구입한 플러그인이나 테마파일 올리고 내려받고, 디자인 수정하고 하려면 … 써야 할 거 같긴 하죠.

기존에 웹호스팅할 때는 FTP 아이디와 패스워드를 부여해서 바로 접속할 수 있도록 안내하고 있지만, 특히 FTP로 그렇게 서버에 왔다갔다 하는 건 위험해서 putty로 SSH 접속할 때처럼 키를 이용하는 방식을 사용하도록 하고 있습니다. 홈페이지에서도 일반적인 FTP 방식으로 절대 서버에 접속하지 말라고 당부하고 있죠. 우리가 사용해야 하는 건 SFTP 방식.

유명 FTP 클라이언트 파일질라Filezilla 중심으로 세팅합시다. 이 프로그램(클라이언트)은 SSH키를 프로그램 안에 저장해두고 이를 활용해서 자동으로 접속하는 방법을 지원합니다.

파일질라 프로그램을 열고, 편집 > 설정 메뉴로 진입하세요. 왼쪽 페이지 선택 메뉴에서 SFTP를 클릭. 그럼 오른쪽 페이지에 ‘공인 키 인증’ 화면이 떠요. Add key file .. 을 클릭하여 개인키 파일을 연결해줍니다. puttygen.exe 에서 이 강의 초반부에 만들었던 개인파일키에요.

다음으로 파일질라의 사이트 관리자 창을 열어요. 새 사이트.. 를 클릭하고, 호스트에 서버의 아이피 주소를 적고, 포트는 22로 합니다. 그리고 프로토콜은 SFTP – SSH File Transfer Protocol로 설정. 로그온 타입은 인터랙티브. 사용자명은 admin (프라이빗키의 주인).

접속에 성공하면, 과연 아까 설치한 wp1, wp2 폴더들은 어디에 있을까요? 최상위에서 /var/www/ 아래에 html 안에 있거나 나처럼 사이트 두 개 운영하려고 분리한 경우엔 /var/www/example.com/ 폴더 아래에 있을 겁니다. 괜히 이상한 거 삭제하지 않도록 조심하세요.

사이트 관리자에서 고급 설정에 기본 리모트 디렉터리에 /var/www/example.com/wp1/ 등을 입력해 두고 사이트별로 바로 접속할 수 있게 프로필을 만들어두면 편합니다. 물론 로컬 폴더도 지정해놓으면 편하고요.

STEP 07. 몇 가지 문제상황 해결

permalinks 설정하기

워드프레스 퍼머링크가 안 먹을 수 있습니다.

sudo a2enmod rewrite
sudo service apache2 restart 

서버에게 rewrite 권한을 주는 것으로 해결합니다.

플러그인/테마 설치 안 되거나 에러 뿜는 경우

워드프레스에서 새로운 테마나 플러그인을 설치하려고 했을 때 hostname, ftp username, ftp password를 요구하는 경우가 생길 수 있습니다다. 아니면 uploads 폴더 생성 못하겠다고 메시지가 뜬다거나… 내가 무슨 일을 하라고 워드프레스/웹서버에게 시켰는데 자기가 폴더를 만들거나 삭제하거나 할 때 권한이 부족하니까 에러를 뱉는 겁니다.

가장 좋은 건 다시 복잡하게 권한을 조정하고, 워드프레스 전용 사용자/사용자 그룹을 만들어서 소유권을 세부 설정하고.. 그런 거겠지만, 간단하게 웹서버=아파치가 뭐 시키면 자꾸 저는 그런 거 못해요라고 말하지 않도록 권한을 더 넓혀주면 해결됩니다.

sudo chown -R :www-data /var/www/example.com/public_html/wp1/wp-content/uploads 
sudo chown -R :www-data /var/www/test.com/public_html/wp2/wp-content/uploads 

위와 같이 저의 경우 설치한 두 군데의 업로드 폴더에 대해서 www-data(웹서버) 그룹에게 uploads 폴더에 대한 소유권을 다시 확인해주고 혼자서 물어보지 말고 알아서 일 하도록 해주었습니다.

그래도 자꾸 뭐 하려고 하면서 폴더를 못 만드네 어쩌구 하면.. 웹서버 www-data에게 더 넓은 범위의 폴더를 만질 수 있도록 권한을 줄 수 있습니다. 아예 /var/www/ 이하 모든 자료에 대해 추가 인증 없이 일처리하도록 말이죠.

sudo chown -R www-data:www-data /var/www/*
sudo chmod -R 774 /var/www/*

관리자명령한다. 소유권줘라. 하위폴더까지. www-data웹서버와 www-data그룹에게. /var/www/ 폴더 이하의 모든 자료에 대한 권한을.

접근권한도 위와같이 www-data 그룹에게도 7=모든 권한을 주면 좀 편해집니다.

보통 이렇게 하면 더 이상 워드프레스가 플러그인을 업데이트하거나 자료를 올리고 받을 때 권한이 없어서 못 했다고 에러를 뿜지는 않을 거에요. 혹시

나중에 좀 내공이 더 되면 세밀하게 이용자/이용자 그룹을 만들고 권한 관계를 더 자세히 세팅해보고 싶은데, 머리가 너무 아프네요 ㅠㅠ

FTP 파일 업로드/다운로드 실패

FTP로 파일을 올리거나 내려받으려고 하는데 어떤 파일은 전송실패로 뜨면서 빨간 줄로 로그가 남는 경우가 있습니다. 읽어보면 permission 이 없다.. 작업 못했다.. 나오는 경우인데요.

아까 위에서 웹서버에게 권한을 주었는데 파일질라로 접속할 admin 유저에게 권한을 확실히 한 번 더 주는 작업을 해보세요. 웹서버=아파치=www-data 에게 아까 권한을 많이 주었는데, admin 이 같은 편이라고 선언해보시죠. 즉, admin 유저를 www-data 그룹에 포함시켜줍니다.

sudo usermod -a -G www-data admin
sudo service apache2 restart

혹시 이래도 또 빨간줄 뜨면 전체 웹서버의 폴더의 접근권한 변경해보세요.

sudo chmod -R 775 /var/www/

관리자명한다 / 접근권한변경 / 아래속한파일폴더포함해서(-R) / 775권한으로=소유자나 소유그룹은 뭐든지 할 수 있다고! / 웹사이트 올려두는 공간에서는!(/var/www/)

워드프레스 접속 주소 바꾸기

저는 example.com/wp1/ 에 워드프레스 파일들을 모아놓고 설치했지만, example.com 으로 접속했을 때 바로 블로그가 뜨도록 하고 싶으면 아래 순서대로 하면 됩니다. 우선 .htaccess 파일이 필요한데, 고민할 필요 없이 바로 만들어버리겠습니다.

.htaccess 파일 만들기

컴퓨터에서 Notepad++ 같은 텍스트 편집기를 열어 아래와 같은 내용을 붙여넣습니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp1/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp1/index.php [L]
</IfModule>

이 때 RewriteBase, RewriteRule 옆의 /wp1/ 이랑 . /wp1/index.php 부분을 잘 봐주세요. 워드프레스가 wp1 폴더 안에 설치되어 있다는 뜻입니다. 본인이 설치한 워드프레스 폴더 이름을 적어주면 되겠습니다. 다른 부분을 건드리지 마세요.

.htaccess 파일 업로드

이제 이 파일을 FTP를 통해 /var/www/example.com/public_html/ 에도 하나 올리고, /var/www/example.com/public_html/wp1/ 에도 하나 올립니다.

index.php 파일 복사

그리고 /var/www/example.com/public_html/wp1/ 에 있는 index.php파일을 PC에 다운로드해서, 편집기로 열어주세요. 메모장 말고 Notepad++ 같은 전용 편집기 사용하세요.

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

대충 이런 식으로 되어 있는데 require.. 부터 시작해서 dirname.. 문자열 똑같나 보시고 뭔가 다르면 위 예시에서 줄 전체를 복사해서 다시 붙여넣은 다음 마지막 줄을,

require( dirname( __FILE__ ) . 'wp1/wp-blog-header.php' );

위와 같이 수정해서 저장한 뒤에, 이 index.php파일을, 워드프레스 설치 폴더 상위에 올립니다. 즉, /var/www/example.com/public_html/ 에다가 올려주세요.

대시보드에서 접속주소 정보 변경

이제 example.com 의 관리자 화면에서, 설정 > 일반으로 이동하세요. 워드프레스 주소 말고 사이트 주소를 example.com/wp1/ 에서 example.com 으로 수정합니다. 브라우저에서 example.com 으로 접속해서 블로그가 잘 뜨는지 보세요. 포스트를 클릭하거나 제목을 클릭하면서 내용이 잘 화면에 나오는지 검사합니다.

사실 .htaccess 파일 생성하는 정도는 putty에서 해도 됩니다. 지금까지 가이드를 따라오다보니 리눅스 명령어를 조금 익히게 되었네요. putty에서 해당 위치로 가서, nano 명령어를 통해 .htaccess 파일을 생성하면서, 내용에 붙여넣기 하고 빠져나오는 거죠. 여러 파일 업로드/다운로드는 FTP 프로그램으로 해야겠지만, 텍스트를 내용으로 가지는 파일 생성하고 고치는 건 어떤 면에서 putty로 하는 게 더 깔끔합니다.

데이터베이스 접속 에러

제 경우 설치하고 하루만에 사이트가 뻗었습니다. "Error establishing a database connection" 이라는 오류를 뿜었는데 … 포럼을 보니 이런 문제를 겪는 사람이 한둘이 아닙니다. 대단한 디도스 공격이 나에게 이루어진 것도 아닌데 무척 당황스럽습니다.

원인을 생각해봤는데 아마 트위터와 클리앙 동호회 사이트 쪽에서 단기간에 접속자가 몰리면서 서버가 힘들어져서 그런 거 같아요. 아무리 그래도 그렇지 동시에 200명 정도 입장하려고 몰린 거 같은데 바로 뻗어버리다니..

일단, 이렇게 뻗는 건 1) 외부로부터의 어떤 공격이나 유입량 증가에 따라 사이트가 힘들어서 뻗은 경우 2) 정상적인 접속자 증가 상황이었지만 워드프레스 돌리기에 나의 서버 플랜이 허용하는 램 용량이 현저히 부족한 게 증명된 경우… 또는 둘 다라고 추측해보고..

외부 유입 기록 검사하기

grep xmlrpc /var/log/apache2/access.log

putty로 접속해서 처음 보는 이상한 애가 자꾸 내 서버를 건드렸는지 체크합니다. 특히 xmlrpc.php 라는 꼬리표를 달고 접속해들어오는 기록이 있나 보세요. 제 경우는 xmlrpc.php 기록은 안 보이고 일반적인 기록만 보이네요. 그럼 악의적인 공격으로 뻗은 거 같지는 않습니다.

어쨌든 일단 데이터베이스를 재시동해서 사이트를 살려봅니다.

sudo start mysql

악의적인 접속, 스팸 뿌리는 녀석들의 접속을 차단하려면 우선 워드프레스 플러그인 Akismet 이 스팸 많이 차단해주니까 혹시 깜박하고 설정 안 했으면 꼭 플러그인 설치+활성화 되어 있는지 보세요.

그리고 Jetpack 플러그인을 사용하고 있다면, 여기를 참고해서 Protect 모듈을 켜줘야 합니다. 화이트리스트에서 나의 직장, 집 아이피 등은 제외하도록 넣어주어서 혹시 내 컴퓨터를 차단하지 않도록 합니다. 위 링크에서 "Manually Blocking All XML-RPC Traffic" 항목도 참고하세요.

이제 Akismet 과 Jetpack protect 모듈을 모두 활성화하고, 제 경우에는 운영하는 사이트 두 개에서 모두 활성화하고 난 뒤에, 며칠 지켜보도록 합니다. (3일후 기록: 현재까지 잘 돌아가고 있네요 2016-04-21)

저는 두 개 플러그인까지 설치하니까 512MB 램의 90%를 항상 사용하고 있더라고요. 아무래도 두 개 사이트는 무리였는지도 모르겠군요.

혹시 문제가 계속되어, … 사이트가 또 뻗어버리면, 그냥 접속자가 동시에 몰리는데 서버 스펙이 버거워하는 상황이라고 가정하고, 한 달에 10달러짜리로 업그레이드 할 건지 생각해보세요. 어차피 크레딧은 10달러 있으니깐 10여 일 써보면서 관찰하면 되죠. 업그레이드 후에 속도나 안정성이 시원시원해지고 안정감 있으면 이 비용을 내고 계속 쓸 건지 그 때 결정해도 되겠습니다.

Droplet 업그레이드하기

만약 업그레이드하기로 결심했다면, 다음 순서대로 하세요.

워드프레스 두 개 돌리고 플러그인 조금 깔았는데 램을 460메가 먹고 있는 상황에서 플러그인으로 나쁜 놈들을 차단하며 버텨볼려고 했지만, 만약 사이트가 또 뻗었다면 말이죠. (저는 3일째 아직 잘 버티고 있음)…

512mb 램 용량은 무리라고 판단되는 분은 한 번 바로 업그레이드 해보겠습니다.

우선, 두 가지 옵션이 있는데 1) 하드용량 포함해서 업그레이드 2) 메모리와 CPU만 업그레이드가 있습니다 2)번은 저 적은 용량 옵션으로 돌아갈 수 있지만 1)번은 한 번 업그레이드하면 뒤로 돌아갈 수 없습니다. 또한 2)번은 하드용량은 그대로입니다. 잘 생각해보고 결정하세요.

저는 딱히 하드용량이 필요한 게 아니면 2)번 추천합니다. 돌아갈 수 있으니까요. 상황에 따라 폭주가 계속되는 시즌에만 잠깐 사양을 올려주는 게 가능하잖아요. 우선 putty에서

sudo poweroff

명령으로 서버를 꺼주세요. 홈페이지에도 파워오프 버튼이 있지만 추천하지 않습니다.

서버 끄고 홈페이지 가서 리사이즈 메뉴 항목에서 flexible 쪽에 체크하고 업그레이드합니다. 리사이즈하는 데 시간이 걸립니다. 1기가에 1분 정도로 잡고 20-30분 기다려야 할 수도 있고 생각보다 빨리 될 수도 있습니다. 저는 해보니까 5분 안에 완료되더군요.

다 된 거 같으면 홈페이지의 Power 메뉴에서 서버를 켜줍니다. 그리고 1분 후에 블로그 접속하면 다시 살아있네요. putty로 이후 관리를 위해 서버 접속 시 사용자 정보와 private key파일을 다시 적용해야 될 수도 있습니다.

사이트가 뻗으면 스트레스가 생기지요. 하지만 오기도 생겨서 한 번 어디까지 제가 버틸 수 있나 시험하고 있습니다. (현재 5달러짜리 서버에 두 개의 워드프레스. 초기에 한 번 서버가 뻗었고. 그 이후 재시동. 업그레이드는 하지 않은 상황이며, 3일째 아무 문제 없이 잘 버텨내고 있습니다..)

워드프레스 이사 팁

Jetpack 연결 해제

운영하고 있는 워드프레스 블로그를 다른 서버로 이사짐 꾸려서 가지고 가고 싶을 때, 우선 wordpress.com으로 가서 Jetpack 에 연동되어 있는 사이트가 있으면 연결을 끊어주면 좋아요. 괜히 도메인이랑 워드프레스랑 연결 끊었는데 wordpress.com 에는 내 사이트 목록에 남아있고 골때리는 경우가 예전에 있었습니다.

wordpress.com 로그인 후에 내 사이트 > 사이트 제목 옆의 아이콘을 통해 설정화면으로 들어가서, 맨 아래로 스크롤하면, Jetpack – 사이트 연결 해제 버튼이 있습니다.

어떻게 이사할까?

이사하는 건 여러가지 방법이 있지만 1) 자료 몇 개 없거나 다시 처음부터 시작해도 되면 옮길 자료만 손으로 직접 옮기는 게 나을 수 있고요. 2) 포스트가 꽤 많은데, 일단 원고 내용만 제대로 들어오는 게 목적이라면 워드프레스 자체 제공 플러그인 통해서 Export / Import 해도 됩니다.

그러나 세세한 설정까지 거의 그대로 옮기고자 할 때는 꽤 머리가 아프기 시작하죠. 3) 최근에 All-in-One WP Migration 플러그인을 사용해봤는데, 테마, 메뉴구성, 플러그인까지 완벽하게 옮겨주더군요. 추천합니다. 관리자 비번까지 포함해서 쓰던 사이트에서 한 팩으로 다운로드 받아서 새 사이트에 덮어쓰기 하는 겁니다. 다만 워드프레스 설치 폴더명이나 db 이름 등은 똑같이 갖춰주고 옮기는 게 좋겠습니다.

순서는 대강 A. 기존 사이트에 해당 플러그인을 설치하고 자료를 다운로드하기 – B. 도메인 이전 – C. 새로운 워드프레스의 접속 주소(워드프레스 주소, 사이트 주소 설정) + www-data 권한 문제 등 환경설정 + 워드프레스 버전 등을 최신으로 업데이트하여 기존에 사용하던 블로그 환경과 유사하게 갖춰줍니다. – D. 위 플러그인을 설치하고 받아놓을 파일을 올립니다. – E 퍼머링크 페이지로 가서 기존에 사용하던 구조와 똑같게 설정이 되어 있나 확인하고 저장 버튼을 최소 2회 눌러 새로고침합니다. – E. 사이트에 접속해서 점검합니다.

이 플러그인 좋아요. 사용하던 플러그인의 세부 설정과 테마의 수정사항, 메뉴의 위치 등등이 모두 완벽하게 적용되어 들어오더군요.

보너스. 리눅스 서버 관리 초보 명령어 익히기

네이버 블로그를 만들면 블로그 한 개 관리자가 되는 거고, 호스팅 서버에 공간을 얻어 워드프레스 블로그를 만들면 블로그 관리자 + 전세 세입자로 집안 청소와 관리까지 해야 하죠. VPS 사용자는 서버 차원에서 자기가 다 알아서 해야 합니다. 땅 관리, 건물 관리까지 하는 거죠.

리눅스 서버를 관리하기 위한 초보 명령어 몇 가지를 숙지하고 있으면 초보라도 어느 정도 정보를 알아보거나, 수정하고, 유지보수할 수 있습니다. (있다고 믿어보죠… 처음이지만..)

대표적으로 putty에서 admin 으로 로그인해서 유용하게 쓸 수 있을 거 같은 몇 가지 명령어를 모아보았습니다.

admin 비번 변경

우리집 집사의 패스워드는 가장 복잡하면서 숫자, 특수문자 섞어서 만드세요. 1password로 복잡한 패스워드 만들어도 되지만, 자주 입력할 일이 생겨서 귀찮으니 외울 수 있는 걸로 만드는 게 … 다른 사이트에서 한 번도 사용한 적 없는 걸로 만드세요. 패스워드 변경하기 위해서 아래와 같이 타이핑하면 됩니다. PC에서 새로 생성한 패스워드를 복사한 후에, putty에서 shift + insert키를 통해 붙여넣어주면 됩니다.

passwd admin 

파일/폴더 구조 관련

지금 있는 위치에서 어떤 파일/폴더가 있는지 알아보고자 할 때 사용합니다. 영어 소문자 엘(l)로 시작하는 명령들이에요. admin으로 접속 시 앞에 sudo를 붙여서 권한을 선언한 다음에 실행해야 성공율이 높습니다.

  • ll : 전체폴더구조 보기
  • ls : 폴더 구조 간단하게 보기 (파일이 많을 때 유용)
  • ls -al : 이 옵션을 달면 숨김파일까지 보여줍니다. htaccess 같은 파일 볼 때 유용
  • ls 폴더명 : 해당 폴더 내용만 리스트로 보여줍니다.

이동과 권한 설정 관련.

  • cd : 어디어디 위치로 이동하기
  • chmod 755 폴더위치 : 파일접근권한 변경하라 + 755 권한으로 + 해당폴더를. 여기서 755는 소유자는 모든 권한을 갖지만 그룹이나 기타 사용자는 쓰기 권한이 없는 경우입니다.
  • chown -R admin /var/www/* : 소유권한 변경입니다. -R 옵션은 하위 폴더 내용까지 포함한다는 것. admin은 소유권한 받을 이용자 이름이고요. /var/www/* 는 var 폴더 아래 www 폴더 아래 모든 내용(*)이라는 뜻입니다. 이 명령어로 /var/www/ 이하 모든 자료에 대해 admin에게 소유자 권한을 주고, 위 chmod 명령어로 /var/www/폴더를 소유자만 접근하게 700 권한을 주면 admin 이외에 이 폴더는 아무도 읽고,쓰고,실행할 수 없게 되는 거겠죠. 소유권한과 접근권한을 이해합시다.

폴더 만들고 삭제하기.

  • mkdir 폴더명 : 디렉토리를 만듭니다.
  • rm 파일명 : remove 즉, 파일을 제거합니다.
  • rmdir 폴더명 : remove directory, 즉 폴더를 삭제하고 싶을 때 사용합니다. 하지만 빈 폴더만 삭제할 수 있어요.
  • rm -rf 폴더명 : rm 뒤에 옵션으로 -rf를 달아주고 폴더를 지정하면 그 폴더와, 안에 있는 모든 파일까지 삭제합니다. 가령 워드프레스 폴더를 싹 날리고 처음부터 다시 시작하고 싶을 때 사용합니다. 이런 작업을 FTP로 하는 것보다 putty로 이렇게 명령하는 게 더 실패율도 적도 빠릅니다.

복사(copy) 관련.

  • cp [파일1] [파일2] : 파일1을 파일2로 복사합니다. 그러니까 파일1이 기존에 있는데 이걸 복사해서 파일2와 같은 위치에 새로 붙여넣기 하는 겁니다.
  • cp -r [디렉토리1] [디렉토리2] : 이건 폴더 복사입니다. -r 옵션은 폴더 안에 있는 폴더의 폴더까지 모두 포함한다는 뜻이고요. 우리가 워드프레스 폴더를 복사할 땐 이 명령어 대신 rsync 를 사용했죠. 권한까지 복사하려고요.
  • move [파일/디렉토리] [디렉토리] : 특정 폴더나 파일을 어디 폴더 안으로 잘라내기 해서 이동합니다.

파일 내용 보기

  • cat [파일명] : 파일 내용에 뭐가 있나 보여줍니다. (보기만)
  • nano [파일명] : 파일 내용을 바로 편집기로 열어서 보여주면서 편집도 할 수 있는 화면이 뜹니다. 변경할 내용이 있으면 고쳐 쓰고 Ctrl + X로 빠져나오고, 변경사항 반영(y키)한 뒤에, 저장할 파일명 확인하고 Enter쳐서 마무리합니다.
  • sudoedit [파일명] : 권한 없어서 수정이 불가한 파일의 경우 관리자의 권한으로 편집 입장할 수 있습니다.

시스템/프로세스

사실 서버의 상태는 DigitalOcean홈페이지에 가면 그래프로 깔끔하게 보여줍니다. Public Bandwidth를 보면 언제 사람들이 내 서버에 접속해서 많이 자료를 읽어대서 서버가 분주한지 알 수 있어요.

하지만 putty로 접속해서 명령어로 더 자세한 정보를 실시간으로 볼 수도 있습니다.

  • top : 현재 서버의 메모리, CPU 사용량 등을 종합적으로 보여줍니다. Task가 몇 개 돌아가고 있는지 보이고, KiB Mem 옆에 보시면 free 메모리가 어느 정도인지도 나오네요. 저는 501776 total에 409388 used이로군요. 이런 엄청 많이 쓰네요 ㅠㅠ Ctrl + Z 누르면 밖으로 나옵니다.
  • free -m : 간단히 메모리 상황 보여줍니다. 컴퓨터 램이라고 할까요. 저는 500메가 수준 램이 달린 서버 Droplet을 열었는데, 워드프레스 두 개 설치하고 좀 바탕만 깔았는데도 램을 많이 사용하네요. 쓰다가 사이트가 자꾸 버벅대고 뻗으면 업그레이드를 고려해야겠어요.
  • df -h : 하드용량 체크합니다. 디지털오션 한 달 5달러 플랜은 하드 총 용량을 20G 주는데요. 이 명령어로 공간이 얼마나 남았는지 알아볼 수 있습니다. 워드프레스만 돌릴 경우 보통 플러그인, 테마 파일 심어둘 때 용량 잡아먹고, 첨부파일/미디어 삽입하면서 많이 잡아먹게 됩니다.

위에서 보듯, 서버 기본 설정에 모듈 몇 개 깔고, 워드프레스 두 개 깔았더니 벌써 11%의 공간을 차지하고 있군요. Avail 열 아래에 보면 현재 17Gb의 용량이 사용 가능한 것으로 나오고 있습니다.

  • du -h --apparent-size : 이 명령어는 현재 위치한 디렉토리/폴더 안에 있는 모든 파일과 폴더가 차지하는 용량을 계산해줍니다. 워드프레스 폴더 하나가 얼마나 뚱뚱한지 즉시 알아보고 싶을 때 유용하겠네요. 참고로 -h 옵션은 알아보기 쉽게 메가바이트(MB) 단위로 보여달라는 것이고, --apparent-size 옵션은 여분 공간은 빼고 실제 차지하고 있는 것만 계산하라는 것입니다. 이 명령어를 최상위 폴더에서 수행하면 그 아래 폴더별 용량이 쭉 계산되어 나옵니다. 지금 누가 용량을 많이 먹고 있는지 범인을 찾아내고 싶을 때 유용하겠네요. -S 와 같이 대문자 S를 사용해서 옵션을 주면 하위 디렉토리를 포함하지 않습니다.

자 이렇게 메모리/CPU/처리작업 상황을 점검하면서 서버가 쾌적하게 돌아가고 있는지 체크할 수 있겠고요. 하드 용량 체크하면서 너무 집이 비좁지 않은지 알아볼 수 있습니다. 서버가 힘들어하고 집이 좁아지면 플랜을 업그레이드하거나 서버 안을 청소해서 다이어트해야 하겠지요.

기타 http://servedev.tistory.com/45에 보면 윈도우 버벅댈 때 작업관리자에서 프로세스 강제 종료하듯 현재 메모리 쳐묵쳐묵하고 있는 녀석들 강제로 프로세스 종료할 때 쓰는 kill 명령어를 포함해서 몇 가지 명령어가 더 소개되어 있지만… 일단 저는 제가 계속 자주 쓸 거 같은 녀석들만 이 정도로 정리하겠습니다.

마치며

꽤 복잡한 과정이었지만, 천천히 따라오시면 성공할 수 있다고 생각합니다. 자기 집을 꾸미는 것에서 나아가서 직접 집을 지어보는 꿈을 가진 사람들이 있죠. 저처럼 왕초보도 성공했으니 여러분도 할 수 있을 거라고 생각합니다. .. 저도 잘 모르니까 어려운 질문은 던지지 말아주시길.

나만의 리눅스 서버가 생겼으니, 저는 나중에 또 이것저것 깔아보고 시도해볼 생각입니다. 개고생했지만, 제 집이 생겼어요.

(2016년 4월)

(2016-04-24 사소한 오타 수정)

“디지털오션 서버에 워드프레스 블로그 두 개 설치하기 (왕초보)”에 대한 15개의 생각

  1. 그대로 따라가보고 있어요.
    그런데 adduser admin으로 admin 계정을 생성하고자 하는데 해당 그룹에 admin은 이미 있다고해서 진행을 못하고 있어요.
    어떤 계정들이 존재하는지 찾아보려고 구글링해서 명령어를 찾아 /etc/passwd를 입력하면 권한 거부되고요
    awk -F: ‘{print $1}’ /etc/passwd 을 통해 유저 목록을 살펴보면 admin은 없고 daemon이나 mail, news등이 있네요.

    혹시 아실까해서 질문드려봅니다.

    1. 안녕하세요? 저도 잘 몰라서 여기저기 좀 물어봤습니다. 클리앙 회원님의 답변을 소개해드립니다. 도움이 되면 좋겠습니다.

      —–
      주소: http://clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3829052&page=0&sca=&sfl=&stx=&spt=0&page=0&comment_page=1&cwin=#c_3829123

      내용:

      문학소녀님 (2016-09-22 08:31)1.♡.184.65답변
      id admin
      명령어 쳐서 정보 나오는지 보세요.
      grep admin /etc/passwd
      명령어로 쳐서 해당 계정이 나오는지도 보시고요.
      uid를 500 이상 잡으셔서 awk 명령으로 안보이시는거 같은데요.

      (이미 있는 계정이라고 계속 뜨면,)
      그냥
      userdel admin
      으로 계정 지우시고 새로 하시면 됩니다.

      1. 직접 질문까지 해주시고 일단 정말 감사드립니다.
        이 기회에 저도 슬랙을 이용해봐야겠네요.
        저녁에 다시 시도해보려고해요.

        예전에 Writemonkey 포스팅도 잘봤는데 이 기회를 빌어서 감사드립니다.

    2. 이것 슬랙 유저님의 조언:

      – 패스워드 리셋은 루트권한으로 passwd [계정명] 하시면 바꿀 수 있음.
      – 계정이 이름이 admin 인 계정이 있는 건지, 정말 루트권한을 가진 관리자 계정이 admin이라는 이름으로 있는 건지 확인할 필요.

    1. 3개도 저는 시도해보았는데, 안정성 측면에서 아주 소수의 사람들이 접속할 게 아니라면 추천하지 않습니다 ㅎㅎ

  2. ssh 만들기 까지 다 잘 따라했는데 서버에서 리퓨즈 당해요ㅠㅠ 왜 그런거죠?

    1. 현재 제가 디지털오션 이용을 중지한 상태라 바로 확인이 안 되네요 ㅠㅠ
      구글링한 건 ..
      https://www.digitalocean.com/community/questions/putty-ssh-server-refused-our-key
      위와 같은데, 혹시 푸티 같은 데에서 대화창에서 생성된 최종 키와 저장된 실제 키가 다르게 표시된 건 아닌지 키값을 검토해보시는 게 어떨까요

      ㅠㅠ 전문가가 아니라 자세한 도움 드리지 못해서 죄송합니다.

      2016년 12월 30일 (금) 오후 9:16, Disqus 님이 작성:

  3. 드롭릿 처음 상태로 모두 초기화시키는건어떻게할까요..답변기다릴게요

  4. 제가 여기 따라서 쭉..만들었는데요 wp tochu 설치하고 이것저것하다가 숏코드가 아예안먹게되서요 거의 모든링크두요. 데스크톱에서 모바일로 전환하기를 눌러야 그 전테마로 옮겨지고 모바일테마로 바뀌면서 그제서야 링크클릭이 되는데……..어떻게 해야할지아실까요..ㅠ?

댓글 남기기