워드프레스 Nginx 라즈베리파이로 서버 설치 또는 이전

▶ 들어가며

본 블로그(곰곰 잡동사니 블로그)는 Tistory에서 테더툴즈로 돌아가던 시절로부터 시작해서, 노트북 내에 민트 리눅스를 사용하여 집에서 서버로 운영되고 있었습니다. 하지만 본 블로그는 인기가 한 푼 어치도 없는 블로그(…)이기 때문에, i3-3217u가 붙어있는 4GB 메모리의 노트북으로 서버를 운영하기에는 전력량이나 서버 자원량이 너무나도 사치(…)로웠기 때문에, 마침내 전기 사용을 적게 유지할 수 있는 라즈베리파이 2 모델 B를 사용하여 리눅스 서버를 운영하기로 결심을 하였습니다.

(하지만, 2016년 1월부터 Amazon Web Service EC2 서버를 빌려 호스팅하고 있습니다. (…))

[ 부담스럽지 않은 웹 서버 사용에는 라즈베리파이2 모델B도 좋은 선택이 될 수 있습니다. ]

[ 부담스럽지 않은 웹 서버 사용에는 라즈베리파이2 모델B도 좋은 선택이 될 수 있습니다. ]

 

 

▶ 웹 서버에 알맞는 라즈베리 파이 운영체제와 웹 서버 데몬은?

현재 원래 노트북에 Apache + PHP5 + MySQL (속칭 APM)이라고 부르는 그것들을 활용하여 블로그 서버를 운영하고 있었습니다. 트래픽 부담이 적은 제 컴퓨터에서 이 정도면 넘치는 사양이었지요.

[ 현재 운영되고 있는 서버의 대략적인 개요입니다. ]

[ 현재 운영되고 있는 서버의 대략적인 개요입니다. ]

 

라즈베리파이 2 모델 BARMv7 설계 CPU를 사용하기 때문에 ARM용으로 설계된 리눅스 배포판(예: Ubuntu Server, Ubuntu MATE 등)을 라즈베리 파이에 설치할 수 있었습니다. 다만, 라즈베리 파이가 성능이 좋은 모바일 PC는 아니기 때문에, Apache보다 동시 접속자 처리 등에서 훨씬 가볍다고 여겨지는 NginX를 사용하여 웹 서버를 운영하기로 결정하였습니다.

또한 지극히 개인적인 이유로 MySQL 대신 MariaDB를 사용하여 서버를 구축하고자 합니다.

라즈베리 파이에 설치할 운영체제 또한 어떤 것을 골라야 할지 고민됐는데, Raspbian이나 기타 운영체제 대신 저는 Ubuntu MATE 라즈베리 파이 버전을 설치하기로 했습니다. 제가 지금까지 써 오던 우분투 계열의 리눅스이기도 하고, 다양한 팁을 적용하기도 쉬워 보였기 때문입니다. 따라서 서버는 아래와 같이 전환될 예정입니다.

[ 이사가 진행되면 다음과 같이 라즈베리파이가 서버로 운영됩니다. ]

[ 이사가 진행되면 다음과 같이 라즈베리파이가 서버로 운영됩니다. ]

 

 

▶ 1. 라즈베리 파이에 운영체제를 설치한다.

00_rasp1

라즈베리 파이를 구매하여 마우스와 키보드를 연결하고, 모니터를 연결해 두어 부팅할 수 있는 상태로 준비해 두고, 운영체제를 설치해야 합니다.

 

라즈베리 파이용 Ubuntu MATE는 여기에서 다운로드 하실 수 있습니다. 사이트에 들어가 토렌트를 이용하여 운영체제를 다운로드 받습니다.

[ 홈페이지에 들어가 BitTorrent 파일을 받아 토렌트로 다운로드를 마칩니다. ]

[ 홈페이지에 들어가 BitTorrent 파일을 받아 토렌트로 다운로드를 마칩니다. ]

다운로드 받은 img.xz 파일의 압축을 해제합니다. img 파일을 라즈베리 파이용으로 실행할 수 있기 위해 Win32 Disk Imager(여기에서 다운로드 가능)를 실행합니다.

Win32 Disk Imager를 실행하여 ‘Image File’에 다운로드 하여 압축 해제한 img 파일을, ‘Device’에는 micro SD카드를 선택하여 Write를 눌러 이미지를 완성시킵니다.

[ Win32 Disk Imager를 실행하여 다음과 같이 설정되게 합니다. ]

[ Win32 Disk Imager를 실행하여 다음과 같이 설정되게 합니다. ]

완성된 micro SD카드를 라즈베리 파이에 넣고 부팅을 시키면, Ubuntu Mate 설치 화면이 나옵니다. 순서대로 설치를 마칩니다.

설치된 Ubuntu Mate를 여러분들 micro SD와 서버 운영에 맞게 설정을 해 줄 필요가 있습니다. 이에 대해서는 다른 팁에서 다루도록 하겠습니다.

라즈베리 파이2B에 설치한 Ubuntu MATE 간단한 최적화 하기 (클릭)

 

 

 

▶ 2. nginx 설치

이제부터 터미널을 활용하여 nginx를 설치하고자 합니다. 터미널에 apt-get 명령어를 입력하여 nginx를 설치합니다.

sudo apt-get install nginx

nginx가 설치가 완료되면, 웹 서버에 접속이 잘 되는지 웹 서버 IP로 접속을 하여 메인페이지를 확인합니다.

 

설치가 완료된 경우, 저의 경우는 웹서버용 사용자 계정을 하나 만들어, 그 계정 안에 웹페이지 서버를 운영하고자 합니다. (※ 이렇게 하는 이유는 vsftpd를 활용할 때, 사용자 계정 이상으로 넘나들 수 있는 권한을 주지 않기 위해서입니다. 저는 리눅스 초보인지라 더 좋은 방법이 떠오르지 않아, 이 방법으로 앞으로 안내하고자 합니다.)

nginx 메인 폴더를 변경하기 위해서는 nginx 설정 파일을 바꾸어 주어야 합니다. nginx 설정 파일이 들어있는 디렉토리 중 sites-available 안의 default 설정 파일을 변경해 주면 됩니다.
저는 nano 편집기가 편하므로 nano를 사용하여 설정 파일을 수정하고자 합니다.

sudo nano /etc/nginx/sites-available/default

 

다음과 같은 세 가지가 수정되어야 합니다. (권장 변경 사항 1개, 필수 변경 사항 2개)

※ 1) 권장: 루트 폴더를 /home/web/www/ 로 변경하여 줍니다.

[ root 디렉토리를 다음과 같이 수정합니다. 여기에 설정되는 폴더는 mkdir로 미리 만들어져 있어야 합니다. ]

[ root 디렉토리를 다음과 같이 수정합니다. 여기에 설정되는 폴더는 mkdir로 미리 만들어져 있어야 합니다. ]

※ 2) 필수 1: index 부분에 index.php가 들어갈 수 있도록 합니다.

[ index에 index.php를 넣어 주어 php로 만들어진 웹페이지가 정상 작동하도록 합니다. ]

[ index에 index.php를 넣어 주어 php로 만들어진 웹페이지가 정상 작동하도록 합니다. ]

※ 3) 필수 2: nginx를 위한 php5-fpm을 설치하여 실행하기 위해 다음 사진과 같이 주석이 해제되어 있어야 합니다.

[ nginx에서 PHP를 사용할 수 있게 다음과 같이 주석을 몇 줄 해제해야합니다. (주의해서 해제할 것) ]

[ nginx에서 PHP를 사용할 수 있게 다음과 같이 주석을 몇 줄 해제해야합니다. (주의해서 해제할 것) ]

이와 같은 과정이 끝나면 nginx의 설정은 일단(…) 마무리 됩니다.

아래 명령어를 활용해 엔진엑스 데몬을 재시작 해 줍니다.

sudo service nginx restart

 

 

 

▶ 3. php5 & php5-fpm & php5-mysql 설치

apt-get을 이용하여 php5와 php5를 nginx 및 MariaDB에서 사용하기 위한 데몬을 설치하도록 합니다. 아래 명령어를 사용합니다.

sudo apt-get install php5 php5-fpm php5-mysql

설치가 끝나면, phpinfo 파일을 만들어 서버에서 실행시켜 봅니다.

<?php
phpinfo();
?>

 

다음과 같이 실행이 된다면, MariaDB를 설치해 주시면 됩니다.

[ phpinfo(); 가 정상적으로 이해되어 오픈되고 있음을 확인할 수 있습니다. ]

[ phpinfo(); 가 정상적으로 이해되어 오픈되고 있음을 확인할 수 있습니다. ]

 

 

▶ 4. MariaDB 설치 & 간단한 설정하기

역시 apt-get을 이용하여 MariaDB를 설치해 줍니다. MariaDB는 MySQL의 fork이기 때문에 실제 사용방법은 MySQL과 거의 동일합니다.

sudo apt-get install mariadb-server

MariaDB가 설치되었으면, mysql 로 접속하여 MariaDB가 사용가능한 상태인지 확인합니다. (아래 명령어 이용, 기본 root 비밀번호는 관리자 비밀번호와 동일)

sudo mysql -uroot -p
[ mysql 명령어를 사용하여, MariaDB에 접속해 봅니다. ]

[ mysql 명령어를 사용하여, MariaDB에 접속해 봅니다. ]

이와 같이 MariaDB에 접속이 가능한 상태면, 워드프레스 사용을 위해 MariaDB 서버 입출력을 utf-8로 바꾸어 주는 작업을 해야 합니다.

아래와 같이 MariaDB 설정 파일을 변경해 줍니다. 아래 명령어를 활용해 다음 스크린샷과 같이 설정 파일을 수정해 줍니다.
스크린샷에서 보이는 것처럼 아래 내용이 추가되어야 합니다.

sudo nano /etc/mysql/mariadb.cnf


#
## nano에 진입한 후, 아래 내용이 가장 마지막에 추가되도록 합니다.
#

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
[ 이와 같은 형식으로 mariadb.cnf 파일 제일 아래에 내용을 입력해주면 됩니다. ]

[ 이와 같은 형식으로 mariadb.cnf 파일 제일 아래에 내용을 입력해주면 됩니다. ]

이와 같이 설정을 모두 마쳤다면, 아래 명령어들을 이용해 전체적으로 서비스를 재시작 해 줍니다.

sudo service mysql restart
sudo service nginx restart

이제, 통상적인 방법으로 워드프레스를 설치해 주시면 됩니다. 아래 추가 정보는 wordpress 서버를 이사하실 때 도움이 될만한 명령어를 모아두었습니다.

 

 

 

▶ 웹서버에서 다른 웹서버로 워드프레스 통째로 백업 & 복구하기

1) 워드프레스 폴더를 통째로 압축하고 해제할 때 사용할 수 있는 명령어 (예: wordpress라는 폴더에 워드프레스가 있을 때)

sudo tar -cvf backup.tar wordpress   # 압축을 수행할 때 사용하는 명령어
sudo tar -xvf backup.tar   # 압축을 해제할 때 사용하는 명령어

 

2) WordPress를 사용하고 있는 데이터베이스 전체를 백업해야 할 때 사용하는 명령어

sudo mysqldump -uroot -p -A > backup_db.sql

# 데이터베이스 전체를 백업하는 명령어

 

3) WordPress database만 백업하고 싶을 때 (DB 이름이 wordpress인 경우)

sudo mysqldump -uroot -p wordpress > backup_db_wordpress.sql

# wordpress 데이터를 백업하는 명령어

 

4) 데이터베이스를 복구할 때 사용하는 명령어

sudo mysql -uroot -p < backup_db.sql   # 전체 데이터베이스를 복원할 때
sudo mysql -uroot -p wordpress < backup_db_wordpress.sql
 # wordpress 데이터베이스만 복원할 때 (단, create database wordpress; 명령어로 wordpress DB가 미리 만들어져 있어야 함)

# 데이터베이스 백업을 복원할 때 사용하는 방법

 

 

궁금한 점 있으시면 틈틈히 답변 드립니다. 댓글 부탁드립니다.

무사히 워드프레스를 라즈베리파이에 설치 또는 이사 마치시기를 바랍니다. 감사합니다.

gomgom

무엇을 하든 곰곰히 생각하는 곰곰입니다.

You may also like...

2 Responses

  1. Tae Kim 댓글:

    안녕하세요!
    현재 라즈베리파이3에 nginx+php7+MariaDB 로
    워드프레스까지 설치 완료했습니다.
    도메인은 구글에서 도메인을 구입하여 연결까지 하였구요. 문제가 생겼는데 집안에서 와이파이로 연결할시에는 http://www.웹주소.com으로 연결도 되고 워드프레스에 로그인도 잘 되는데.

    외부에서 접속 (혹은 핸드폰 LTE로 연결)했을시에는 접속이 되질 않습니다.

    제가 쓰는 ISP는 포트80이 막혀있어
    공유기에 8080으로 포트포워딩을 해주었고
    nginix로는 server쪽에 설정을 8080으로 바꾸어 주고 http://www.웹주소.com으로 접속을 시도했더니 이번엔 접속이 아니라 서버에 로그인(?)을 하라고 떠버리네요..?;;;

    4일간 구글링은 해서 하라는데로 다 해본거 같은데 도대체가 방법을 못찾겠습니다 ㅜㅜ

    • 곰곰 댓글:

      안녕하세요, Tae Kim님.
      집에 서버를 설정해 두셔서 라즈베리파이3 서버의 80번 포트를 공유기 바깥쪽에서 8080 포트로 접속 가능하게 포트 포워딩 설정해 두셨다는 얘기시겠지요? ^^

      (1) 일단 라즈베리파이의 nginx에서 포트 번호 80번이 적용된 서버가 잘 적용되어 있다면, http://라즈베리파이IP주소 로 접속할 때 접속이 가능하실겁니다.
      (2) 내부에서 접속이 가능하다면, 외부 또는 내부를 가리지 않고, http://www.웹주소.com:8080 으로 접속하게 되면 라즈베리파이로 접속이 가능해야 정상입니다.

      내부에서 접속이 가능한데, 외부에서 접속이 가능한 경우는 본 적이 없어 당황스럽네요. ㅠㅠ
      혹시 제 설명이 잘못되었다면, 다시 조금 더 상세하게 댓글로 설명을 남겨 주시면 다시 검토해 보겠습니다. 감사합니다. ^^

곰곰에 답글 남기기 응답 취소

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