CentOS7 에 XE3 ( XpressEngine ) 설치하기 ( NginX, PHP, MariaDB )

Posted by Everyharu
2017. 2. 6. 16:06 IT/서버세팅

XpressEngine

1. 소개

XE 는 XpressEngine 이라는 PHP 기반의 한국형 오픈소스 게시판이다.

누구나 쉽게 설치하여 게시판을 운영할 수 있다는 점에서 매력적이고

웹을 개발하고 유지보수하기 쉬운 언어인 PHP 를 사용한다는 점에서도 매력적이다.

거기다 꾸준이 보안패치 등을 해주니 이 또한 매력적이다.


워드프레스처럼 전세계적으로 사용되는건 아닌거 같다.

아무래도 한국과는 다르게 해외에서는 쓰레드 방식의 커뮤니티가 주로 사용되어서 그런듯 하다.


아무튼 우리는 한국사람이니 한국형 게시판을 운영하고 싶다면 XE 또는 그누보드 또는 직접 만드는게 답이나 다름없다.

이 외에 검증되지 않은 오픈소스들은 대다수는 분명 좋은 소스들이지만

일부는 초보자들이 섣부르게 운용하는건 보안적으로 위험하다.

때문에 전문가들이 어느정도 검증하기 전까지는 초보자들은 XE같은 오픈소스 게시판을 운영하는게 좋다.


이 글에서 소개하는 XE 설치 버전은 ver 3.0.0-bata.11 이다.




2. 설치

XE를 설치하기 위해서는 기초 준비가 필요하다.

https://xpressengine.gitbooks.io/xpressengine-manual/content/ko/installation.html

에서는 사전 준비에 대한 항목이 제대로 나와있지 않아서 설치에 어려움을 겪는 분들이 많을것이라고 생각된다.

일단 아래는 su 를 이용하여 Root 계정으로 접속하여 진행하자.


a. 웹서버 설치

여기서는 NginX 를 사용하겠다. NginX 설치방법은 다음 페이지를 참고하자. ( CentOS7 에 NginX 최신버전 설치하기 )


b. PHP 설치

php 만 설치하는 것이라면 간단하겠지만 

OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
GD PHP Extension

와 같은 Extension 들을 추가로 요구하고 있기에 설치에 곤욕을 치를 수 있다.

다음을 입력해보자.

yum install -y epel-release
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum --enablerepo=remi update remi-release
yum --enablerepo=remi-php70 install -y php php-pdo php-openssl php-tokenizer php-mbstring php-pear php-fpm php-mcrypt php-devel php-xml php-mysql php-gd php-zip

설치가 완료되면 php.ini 파일을 설정해야한다. 기본적으로 아래의 설정은 설정하고 넘어가자.

vim /etc/php.ini

1
2
3
4
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Seoul
cs

1
2
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=0
cs

이번에는 nginx에서 proxy로 사용하기 위해 php-fpm 을 설정한다.
vim /etc/php-fpm.d/www.conf
1
2
3
4
5
;user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache
group = nginx
cs


1
2
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
cs
1
2
3
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
cs

이렇게 세군대를 수정해준다.
그리고 php-fpm을 실행하고 시작프로그램으로 등록한다.
1
2
systemctl enable php-fpm.service
systemctl start php-fpm
cs


추가적으로 Composer 를 설치해 준다. (nodejs 에서의 npm 과 비슷한 역할을 해준다.)

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer


c. MariaDB 설치

다음 링크를 참조하자. ( MariaDB 최신버전 설치하기 )




이제 사전 준비가 끝났다. 본격적으로 XE를 설치해 보자.

이제부터는 su 계정이 아닌 본인 계정으로 진행하도록 하자.


d. XE 설치

여러가지 설치방법을 제공하려고 노력한듯 하지만 git을 이용하여 설치하는게 이후에도 안정적으로 운영할 수 있는듯 싶다.

git 을 이용하여 설치해 보도록 하자.

우선 다음은 기본적으로 XE를 설치할 디렉토리에서 진행한다.

필자의 경우에는 /home/www/mo/ 를 예제로 진행하도록 하겠다.

sudo mkdir -p /home/www/mo

sudo chown -R 사용자계정:사용자계정 /home/www/

cd

git clone https://github.com/xpressengine/xpressengine.git

mv xpressengine/* /home/www/mo/

cd /home/www/mo/

composer install

php artisan xe:install

위 까지 입력하고 나면 뭔가 Host 를 입력하는 란이 나온다. 본격적인 설치를 진행하는것이다.

이제부터 설치정보를 입력해야한다.

Host [localhost] : Database 주소. 기본 localhost

Port [3306] : Database prot. 기본 3306

Database name : Database name

UserId [root] : Database user id. 기본 root

Password [] : Database user password

Table Prefix [xe] : DB의 테이블명으로 쓰이는 Prefix

site url [http://mysite.com] : 홈페이지 주소 입력.

하위 디렉토리에 설치 할 경우 하위 디렉토리까지 입력해야 합니다.


Timezone [Asia/Seoul] : 타임존 정보를 입력합니다. 기본 Asia/Seoul

타임존 에서 원하는 지역의 시간대를 입력하세요.


locale [] : 언어를 입력합니다. 영어, 한국어 두가지 언어를 지원합니다.

다른 언어의 설치는 인스톨 후에 언어팩을 업로드해서 사용가능합니다. RC 버전에서 지원할 예정입니다.

이외에도 관리자 정보를 입력하는 등의 질문이 나오는데 잘 맞추서 입력하거나 엔터(디폴트 값 적용)를 눌러주면된다.





설치가 완료되었다면 이제 본격적으로 설치된 XE를 접속해 보아야 한다.

이를 위해 NginX 로 XE로 접근 가능하도록 설정해 보자.

sudo vim /etc/nginx/conf.d/default.conf

를 열어보면 디폴트 설정이 보이는데 삭제하고 다음을 입력한다.
(아래에서 localhost 부분은 사용자가 위에 입력한 host 와 같이 입력한다. 즉 본인이 사용하는 도메인을 입력하면 된다.)

server {
    listen       80;
    server_name  localhost; 

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main; 

    index   index.php;
    root    /home/www/mo; 

    location / {
        try_files $uri $uri/ /index.php?$args;
    }    

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }   

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }   

    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #   

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }    

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/mo$fastcgi_script_name;
        include     fastcgi_params;
    }  
}


입력하고 :wq 로 저장하고 나와서 테스트해보자.

sudo nginx -t

성공했다는 메시지가 나오면 정상 수정된 것이니 nginx 를 재시작 해보자.

systemctl restart nginx




이렇게 까지 했을때 접속이 되야하지만 기본적으로 centos7 에서는 selinux 가 켜져있다.

이를 꺼버리라는 조언들을 들었다면 못들음셈 쳐라. 보안에 굉장히 도움이 되는 도구인데

유독 국내 블로그들에서는 이걸 끄라고 하는 경우가 많다. 말도안되는 소리다.

다음을 입력하면 selinux 가 켜져있어도 된다.

chcon -R -t httpd_sys_content_t /home/www

/usr/sbin/setsebool -P httpd_can_network_connect true

setsebool -P httpd_can_network_connect 1

setsebool -P httpd_enable_homedirs 1

setsebool -P httpd_can_network_relay 1

setsebool -P httpd_setrlimit 1

chcon -R -t httpd_sys_rw_content_t /home/www/mo/






이제 웹브라우저로 해당 서버의 ip를 입력하여 문제 없이 접속되는지 확인해보자.


문제 없이 설치된다면 기본 테마인 Alice 테마의 화면을 만나볼 수 있다.