리눅스 서버에 워드프레스 설치

워드프레스(WordPress)는 오픈 소스 기반의 웹사이트와 블로그를 손쉽게 만들 수 있는 설치형 블로그로 간단하게 설치하여 고급스럽고 전문적인 웹사이트를 쉽게 만들 수 있게 해준다. 전 세계적으로 워드프레스로 만들어진 웹사이트의 비중이 40%에 이른다고 알려져 있으며, 우리나라에서 서울시, 블로터닷넷디퍼스(Deepers) 등 유명한 사이트들이 워드프레스 기반으로 작성된 사이트이다. 물론 이글이 실린 GOTOCLOUD도 워드프레스로 만들어져 있다.

워드프레스로 홈페이지를 만들고 웹서비스를 하기 위해서는 몇가지 방법이 있는데 워드프레스 블로그나 홈페이지를 제공하는 사이트에 가입하고 글을 게시하는 가입형 워드프레스(WordPress.com에서 제공하고 있다)는 포털에서 제공하는 블로그와 유사한 방식으로 만들 수 있다. 또는 워드프레스를 웹호스팅으로 제공하는 업체에 가입하여 나만의 페이지를 생성하고 꾸밀 수도 있으며 아예 자신의 서버를 구축하고 여기에 워드프레스를 설치하여 직접 서버를 운영할 수도 있다.

워드프레스에 대한 자료와 설치, 테마 설정, 홈페이지 꾸미기 등에 대해서는 검색을 통하여 수많은 정보를 접할 수 있으므로, 이 글에서는 워드프레스 자체보다는 리눅스 서버에 나만의 워드프레스 서버를 구축하는 방법에 대해서 알아보고자 한다.

1. 리눅스 서버 설치

워드프레스는 APM(Apache + PHP + MySQL) 기반에서 운영되는데, APM이 가장 손쉽게 설치되는 운영체제가 리눅스이다. 이 글에서는 CentOS 6 64bit 버전의 리눅스 서버를 구축하고 여기에 워드프레스를 설치하는 과정을 알아볼 것이다.

a) 자신의 서버에 직접 리눅스 설치

리눅스 서버를 설치하기 위해서는 서버를 준비하고, 리눅스 OS를 선택하고 리눅스 설치과정에 따라서 설치해야하는데 이 과정을 직접 할 수 있는 장비와 리눅스 지식을 갖춘 사람이라면 CentOS 6 64bit 버전을 자신의 서버에 직접 설치한다. CentOS를 설치할 때는 최소 설치(Minimal)로 옵션으로 설치한다. CentOS 6 설치 과정은 여기를 참조하기 바란다.

b) 클라우드 서버에 리눅스 서버 생성

워드프레스를 위한 리눅스 서버를 손쉽게 설치하고 바로 인터넷에서 서비스 가능하도록 할 때는 클라우드 서버를 사용하는 것이 좋은 선택이다. 클라우드 업체에서 제공하는 서버를 사용할 경우 저렴한 비용으로 회선과 공인 IP 까지 제공받을 수 있으므로 이 글에서는 클라우드 서버에 리눅스 서버를 생성한 다음에 워드프레스를 설치하고자 한다.

클라우드 서버로 CentOS 6 64bit 서버를 만드는 방법에 대해서는 클라우드 서버 생성이라는 글을 따라 그대로 수행하면 된다.

서버를 직접 설치하든 아니면 클라우드 서버로 구성하든 서버의 관리자로 직접 로그인할 수 있는 서버 준비가 완료되면 워드프레스를 설치하는 과정으로 진행한다.

2. 리눅스 서버 구성

리눅스 서버 설치가 완료되면 서버에 root 관리자로 로그인한 다음에 다음의 설정을 진행한다.

먼저 SELinux를 비활성화한다. SELinux는 리눅스의 보안을 강화하기 위한 소프트웨어로 서버에 있는 파일 하나 하나에 대한 보안 권한을 설정할 수 있는 대단히 강력한 프로그램이지만 제대로 설정하지 못하면 서버에 불필요한 부하가 가해질 뿐 아니라 서비스 별로 일일이 SELinux 규칙을 정해줘야하므로 일반적인 서비스에서는 비활성화해두는 것이 편하다. 물론 그렇다고 보안에 구멍이 생기는 것은 아니고 방화벽 등 다른 방법으로 보안을 강화할 것이므로 크게 걱정하지 않아도 된다.

a) SELinux 비활성화

다음의 명령어로 SELinux를 비활성화 한다.

# setenforce 0

시스템 재시작 시  SELinux가 비활성화 되도록 /etc/sysconfig/selinux 파일을 열어서 중간의 SELINUX=enabled 부분을 그림과 같이 disabled로 수정한다.

2

b) 방화벽 설정

다음으로 리눅스 서버의 방화벽 설정을 변경한다. 리눅스는 기본적으로 보안을 위해 허가된 포트 이외에는 모두 차단하도록 되어 있다. 여기서는 ssh 접속을 위한 22번 포트와 http 접속을 위한 80번 포트를 제외하고는 모두 차단하기로 한다.

3

그림처럼 /etc/sysconfig/iptables 파일을 열어서 중간부분에 -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 라고 추가한 다음 저장한 후 다음의 명령을 실행한다.

# service iptables restart
# chkconfig iptables on

service iptables restart는 iptables라는 방화벽 서비스를 재시작하는 명령이고, chkconfig iptables on은 시스템 시작시에 iptables 서비스를 활성화하는 명령이다.

c) 시간동기화

다음으로 리눅스 서버의 시간을 인터넷 시간과 일치하도록 ntpd라는 시간동기화 서비스를 활성화하고 시스템 시작시에 항상 실행되도록 등록한다. ntpd를 실행하기 전에 서버가 인터넷에 접속이 가능하도록 설정되어 있어야한다. 클라우드 서버 생성의 3.네트워크 생성을 참조하기 바란다.

# yum -y install ntp
# service ntpd start
# chkconfig ntpd on

d) APM (Apache, PHP, MySQL) 설치

다음으로 워드프레스에서 필요한 Apache 웹서버, PHP 및 MySQL 데이터베이스를 설치한다. CentOS에서는 yum이라는 패키지 관리 프로그램을 사용하여 세가지 패키지를 설치할 수 있다.

# yum install -y httpd mysql-server php php-mysql php-gd php-ldap php-imap

이 명령어를 입력하면 패키지가 설치가 진행되고 패키지 설치가 완료된다. 패키지 설치가 완료되면 httpd 와 myslqd 서비스를 실행하고 시스템 시작시에 실행되도록 서비스를 등록한다.

# service httpd start
# service mysqld start
# chkconfig httpd on
# chkconfig mysqld on

지금까지의 과정이 정상적으로 완료되면 인터넷 창을 열어서 인터넷 주소 창에 http://ip-address 를 입력하면 다음과 같이 웹페이지가 나타날 것이다.

7

3. 워드프레스 설치

워드프레스를 설치하기 위한 리눅스 서버의 준비가 완료되면 워드프레스를 설치하고 구성한다.

a) 워드프레스 다운로드

다음의 명령어로 관리자 홈디렉토리 아래에 워드프레스 최신 버전 (한글버전)을 다운로드 한 후 압축을 푼다.

# cd ~

# wget https://ko.wordpress.org/wordpress-4.2.4-ko_KR.tar.gz

# tar zxvf wordpress-4.2.4-ko_KR.tar.gz

( http://ko.wordpress.org 에 접속하면 최신 버전 또는 이전 버전을 다운로드 할 수 있다. 원하는 버전을 다운로드 한다)

압축을 풀면 실행한 디렉토리에서 ls 명령어를 실행하면 다음 그림과 같이  wordpress라는 디렉토리가 생성된다.

8

b) MySQL 데이터베이스 설정

다음으로 워드프레스를 위한 MySQL 데이터베이스를 설정한다.

MySQL DB에 root로 로그인한다.

# mysql -u root -p

Enter password:

초기 암호는 없으므로 엔터키를 입력하면 로그인된다. 로그인 한 다음에 MySQL root 암호를 변경한다. 여기에서 password 부분을 원하는 암호로 설정한다.

mysql> SET PASSWORD = PASSWORD(‘password‘);

워드프레스 DB를 생성한다. 여기에서는 DB 이름을 wordpress로 지정하였다. 원하는 DB 이름을 지정해주면 된다.

mysql> CREATE DATABASE wordpress;

다음으로 wp라는 워드프레스 DB 사용자를 생성하고 암호를 부여한다. dbpassword 대신에 자신이 원하는 암호를 입력한다.

mysql> CREATE USER wp@localhost;

mysql> SET PASSWORD FOR wp@localhost = PASSWORD(‘dbpassword‘);

다음으로 wp라는 user에게 wordpress DB의 권한을 부여한다.

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wp@localhost IDENTIFIED BY ‘dbpassword‘;

mysql> FLUSH PRIVILEGES;

이상으로 워드프레스를 위한 데이터베이스 설정이 완료되었으므로 exit 명령어로 MySQL DB에서 빠져 나온다.

mysql> exit;

c) 워드프레스 설정

 

압축을 풀어둔 워드프레스 파일을 /wordpress 디렉토리로 복사한 후 설정파일을 생성한다.

# cp -a ~/wordpress/* /wordpress/

# cd /wordpress

# cp wp-config-samples.php wp-config.php

/wordpress 디렉토리 안에 만들어진 wp-config.php를 열어 아래와 같이 수정한다.

사용자 지정 2

여기서 wordpress에는 앞에서 생성한 DB 이름, wp에는 DB 사용자 이름, dbpassword 부분에는 DB 사용자의 암호를 입력한다.

다음의 명령어를 수행하여 /wordpress 디렉토리의 권한을 apache.apache로 변경한다.

# cd /

# chown -R apache.apache /wordpress

웹서버 설정 파일 /etc/httpd/conf/httpd.conf 파일에서 기본 디렉토리를  /wordpress로 변경한다. 중간 부분의 DocumentRoot 부분을 찾아서 다음 그림과 같이 /wordpress로 변경한다.

13

그리고 바로 아래에 있는 AllowOverride None을 AllowOverride All 로 수정한다.

14

그리고 /etc/php.ini 파일을 열어서 post_max_size 의 기본값이 8M 인데 이 값을 적절히 크게 조절하여, 미디어 파일을 워드프레스에 업로드할 때 용량 제한에 걸리지 않도록 해준다. 그리고 httpd 서비스를 재시작한다.

# service httpd restart

모든 설정이 정상정으로 완료되면 http://ip-address 를 입력하면 다음과 같이 워드프레스 설정화면이 나타난다.

15

 

위의 설정 화면에서 사이트 제목 및 사용자명, 비밀번호, 이메일 주소 등을 입력한 후 워드프레스 설치하기를 눌러 워드프레스 설치를 완료한다.

d) SMTP 플러그인 설치

다음으로 워드프레스에서 sendmail의 SMTP를 통해 메일을 보내기 위한 플러그인을 설치한다. 워드프레스 설정의 플러그인 메뉴의 플러그인 설치에서 WP-Mail-SMTP를 검색해서 설치한다. 설치 후에 Email 설정에서 다음과 같이 설정한다.

e-mail

  • From Email: 워드프레스에서 발송되는 메일의 발송자 e-mail  주소를 입력한다.
  • From Name: 발송자의 이름을 입력한다.
  • Mailer: 메일 발송에 사용될 메일 프로그램을 선택한다. 여기에서는 Use the PHP mail() function to send emails를 선택한다.
  • Return Path: 회신 주소로 발송자 e-mail을 사용할 경우 체크한다.

이와 같이 설정한 후 변경 사항을 저장하고 아래에 Test Email 란에 메일 주소를 입력하여 메일이 발송되는 지 테스트한다.

 맺는 말

이 글에서는 CentOS 6 64bit 리눅스를 기준으로 리눅서 서버를 설치하고 워드프레스를 설치하기 위한 Apache, PHP, MySQL를 설치한 후에 필요한 설정과 워드프레스 패키지를 설치하는 과정을 논하였다.  설치가 완료된 후 워드프레스 자체에 대한 설정이 진행되어야 하며, 이에 대해서는 다른 글에서 설명하고자 한다.

15 thoughts on “리눅스 서버에 워드프레스 설치

  1. 수고 많으십니다.
    GOTOCLOUD님 덕분에 많은 정보와 지식을 배웁니다
    저는 centos-6.x-x86_64-apm으로 클라우드 서비스를 이용하는 사람입니다.
    여러 날 공부 끝에 저의 서버에 워드프레스 설치까지 성공적으로 마쳤습니다.
    저의 os 이미지에는 apm이 설치되어 있어서 별도로 설정은 안 하고 워드프레스를 설치하기 위하여 테이더베이스 생성 정도만 하고 저의 지식으로 워드프레스는 무난하게 잘 설치 되었는데 문제는 워드프레스 테마,플러그인등을 설치하려면 
    저의 관리자 화면에서 FTPS(SSL)이나 FTP로 연결하여야 하는데 FTPS(SSL)로 연결하려고 호스트이름은 저의 공인 아이피 주소를 입력하고 FTP 사용자이름은 root로 ,FTP 비밀번호는 root 비밀번호를 입력하고 연결하면 서버에서 거부한다고 에러 메시지가 나옵니다. 이 문제는 무엇인지 가르쳐 주시기를 바랍니다.

    ps:알드라이브에서 저의 서버에 접속하려고 연결타입은 SFTP로, 호스트는 아이피로, 아이디는 root로, 비밀번호는 root 비밀번호로 설정하고 접속하면은 잘 접속됩니다.
    ————————————————————————–

    또 그리고 한가지 문제가 더 있습니다.

    위의 문제를 해결하기 위하여 인터넷에서 알아본 결과 저의 워드프레스 파일 중 wp-config 파일을 조금 수정하면 워드프레스 테마.플러그인 등을 다운받으려고 할 적에
    FTP 사용자 자격증명을 요구하지 않고 바로 설치할 수 있습니다
    그런데 이번에는 XML 파일을 불러들이려고 워드프레스 가져오기 플러그인을 설치 후
    xml파일을 서버에 올리고 나서 읽어들이려고 하려면 파일을 읽지 못하고 백지상태가 됩니다. 이유는 DOMDocument and XMLReader PHP 활성화 필요로 나오는데
    해결방법을 가르쳐주시기를 진심으로 바랍니다.

    다 설치된 상황에서 워드프레스에서는 제일 중요하다고 볼 수도 있는 샘플테이터를 불러들여야 하는데 실망이 이만저만이 아닙니다.

    좋은 결과를 기대합니다

    감사합니다.

  2. root로 ftp를 접속할려면 아래와 같이 root사용자에 대해서 ftp 서버 접속을 허용해줘야 합니다. 일반적으로 vsftp가 돌고 있으면 아래의 링크와 같이 하면 될 겁니다. 다른 ftp 서버라면 그에 맞춰서 root 사용자 접속 허용이 필요합니다만, 최근에는 ftp로 파일을 주고 받는 것을 권장하지 않는 추세라 대부분 sftp를 사용하는 것이 정석입니다.

    http://jmnote.com/wiki/Vsftpd_root_%EC%A0%91%EC%86%8D_%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C_%ED%95%98%EA%B8%B0

    그런데, 어디서 ftp 권한을 요구하나요? 테마나 플러그인은 워드프레스에 관리자로 로그인해서 받으면 될 건데요. 혹시 ftp로 다른데서 받은 플러그인을 업로드 하고자 하는 건가요? 그럴 경우는 권한 문제입니다. sftp 등으로 파일을 업로드 한 후에 그 파일들에 대해서
    # chown -R apache.apache aaa.tar.gz
    과 같이 권한을 apache.apache로 변경해 줘야할 겁니다.

    제가 블로그에 쓴 대로 설치할 경우에는 플러그인 등을 설치할 때 별도의 ftp 로그인을 요구하지 않습니다.

  3. GOTOCLOUD 님 소중한 시간 내주어서 답변주시점 진심으로 감사드립니다.
    FTP 문제는 위의 글처럼 저의 wp-config 파일을 수정해서 해결되었고 XML 문제도 저의 서버 호스팅 회사인 가비아 엔지니어에게 문의하여서 해결하였습니다.

    정말 감사합니다.

  4. 안녕하세요. Gotocloud 님.
    궁금한것들이 발생하여 글을 남겨봅니다..
    현재 저도 동일한 환경에 워드프레스를 설치하였습니다.
    사이트상의 오류로 인하여 FTP상의 워드프레스를 강제로 삭제하고 DB삭제를 안해서..
    사이트가 꼬이기 시작하더군요. 결국 DB도 깔끔하게 밀어줘야 한다는 이야길 들었습니다.

    그래서 mysql까지 접근을 하였는데..
    사실상 워드프레스 파일을 삭제하기 위해
    어떤 명령어를 넣어야할지모르겠습니다.

    검색을 해서 mysql> 상태에서 drop database 를 해 보았더니
    -> 라고만 뜨고 아무것도 변화가 없네요.
    사실상 phpmyadmin에 접속한게 아니라 명령어 형태의 mysql에 접속하다보니..
    어려운 부분이 많은데요..혹 워드프레스 데이터 삭제를 위해 정확하게
    어떤 명령어가 들어가야 하는지 아니사요?
    간혹 검색하다보면 ‘데이터베이스네임’을 입력하라는데..
    아무것도 안보이는데 무슨 이름을 적으라는건지.. 이해가 안되어서요..

    너무나 초보적인 질문을 드려.. 죄송합니다.

    1. mysql 에서 모든 명령어는 ;로 끝나야합니다.

      mysql> show databases;
      +——————–+
      | Database |
      +——————–+
      | information_schema |
      | mysql |
      | test |
      | wordpress |
      +——————–+
      4 rows in set (0.00 sec)

      위의 내용과 유사하게 나오면 거기서 wordpress라는 것이 워드프레스 데이터베이스입니다. (이건 설치할때 뭘로 했냐에 따라 달라질 수 있습니다.)
      삭제는
      mysql> drop database wordpress;

      와 같이 하면 됩니다.

  5. 안녕하십니까? GOTOCLOUD님
    서버를 처음 접한 저에게 많은 도움이 되어서 감사드립니다.
    저는 Ubuntu 14 LTS를 사용하고 있고 워드프레스까지 설치는 잘된 거 같습니다.
    그런데 sendmail을 설치하고 아무것도 수정안하고 테스트로 Contact 폼이나 댓글,회원가입 알림 등을 테스트하였지만 아무런 메일이 안 옵니다. 그래서 GOTOCLOUD님이 알려주신 대로 SMTP 플러그인을 설치하였더니 네이버 계정으로는 정확하게 메일이 전달되는데 g메일계정은 스팸으로 분류되고 야후나 다음은 아예 메일이 오지를 않더군요 혹시 문제를 해결할 수 있을지 몰라 글을 남겨봅니다.

    감사합니다!

    1. G메일 또는 야후 메일 등에서 메일을 받지 못하는 경우는 두가지 이유가 대부분입니다.
      첫번 째는 메일을 발송하는 서버의 ip 대역이 스팸대역으로 차단되어 있는 경우로 https://gotocloud.co.kr/?p=530를 참조하여 풀어달라고 하시면 됩니다.
      두 번째는 메일서버의 reverse dns lookup에 실패하는 경우로 이에 대해서는 메일을 발송하는 서버의 호스트네임을 외부에서 인식하도록 DNS에 등록요청해야 합니다.
      리눅스 서버의 콘솔에서
      # mail aaa@bbb.com
      형태로 메일을 보내서 회신되는지 확인해보시기 바랍니다.

  6. # cp -a ~/wordpress/* /wordpress/

    이부분이 안되고 있어서요.. 혹시 다른디렉토리에 카피하는 이유를
    알수 있을까요?

    1. /wordpress 라는 별도의 디렉토리에 두는 이유는 홈페이지 root를 여기에 두고 관리하기 편하게 하기 위함입니다. 굳이 여기에 안두셔도 되요.

    2. 안녕하세요. 친절한 설명 너무 감사드립니다.
      몇 번의 설치 중에 있는데
      cp -a ~/wordpress/* /wordpress/
      이 부분이
      target ‘/wordpress/’ is not a directory라고 지속적인 오류가 발생합니다.

      하나도 빼놓지 않고 따라하고 있는데 이러한 오류가 왜 발생하는지 혹시나 아실까해서 이렇게 답글 남깁니다. 정말 감사드립니다.

  7. 안녕하십니까? GOTOCLOUD님

    서버를 처음 접한 저에게 많은 도움이 되어서 감사드립니다.

    wordpresst설치를 완료하고 리눅스를 재시작 하였더니 워드프레스 화면이 아닌

    리눅스서버 화면이 나오는데 다시 워드프레스 화면을 나오게 하고 고정으로 재부팅해도

    나올수 있도록 할수 있는 방법이 있다면 알려줄수 있으신가요?

  8. 친절하게 설명해주신 덕분에 큰 어려움 없이 설치 한것 같습니다 .
    감사합니다.

    그런데 지금 저는 위 설명 처럼 설정 화면이 뜨지않고

    Testing 123… 화면이 뜨는데요,

    뭐를 잘못해서 그런지 몰라 문의 드려봅니다.

    위에 설명처럼 설정화면으로 가기 위해서 어떻게 하면될까요?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.