XE3를 위한 웹 서버 세팅 가이드

LuisK
XEHub
Published in
11 min readSep 23, 2019

#창작자와 기술기업을 위한 문서

이 글은 창작자와 기술기업을 위해 XE3 설치 전 필요한 웹 서버 설치 가이드를 제공하고 있습니다.
본 게시글은 엔진엑스(Nginx) 기준으로 작성되어 있으며, 아파치는 별도 설정 없이 .htaccess 사용만 가능하다면 바로 사용하실 수 있습니다.

XE CAMPUS 바로가기

시작하기에 앞서

본 게시글에서는 Linux 기반의 Nginx를 기반으로 XE3를 설치하여 운용할 수 있는 웹 서버 환경 구성 방법에 대해 다루겠습니다.

그와 더불어 서버 OS로 적합한 CentOS를 기준으로 작업하며, 일부 명령어는 CentOS7 이하에서는 작동하지 않거나 다른 명령어일 수 있습니다.

SSH 접속 및 환경 구성

서버 환경 구성도 만들기

개발자 또는 프로젝트마다 다르지만, 운영하기 쉽게 /home 폴더에 domain이라는 폴더를 만들어 그 안에 내 사이트 도메인별로 분류하여 운영할 목적으로 폴더 및 경로를 관리합니다.

예를 들어 xe3dev.test 라는 도메인을 서비스로 운영하기 위해 /home/domain/xe3dev/www 이라는 디렉토리를 만들고, 개발 및 테스트용으로 test.xe3dev.test 라는 도메인을 테스트용으로 운용하려고 하면, /home/domain/xe3dev/test 라는 도메인으로 운영할 것입니다.

프로젝트의 작업자 또는 운영자의 성향에 맞는 디렉토리를 구성하지만 ,보안에도 신경을 써서 디렉토리를 작업해야 합니다.

LEMP 스택

LEMP스택이란 Linux + Nginx + MySQL(MariaDB)로 구성한 웹 어플리케이션을 의미합니다. 비슷한 말로 LAMP 스택이라고 LEMP 스택에서 Nginx 대신 Apache로 구성한 스택도 역시 많이 사용하고 있습니다.

Nginx 설치

Nginx는 웹 서버 종류 중 하나로 아파치(Apache)와 더불어 인기가 많은 웹 서버 중 하나입니다.

기본적인 CentOS의 repo(저장소)로는 Nginx를 설치할 수 없음으로 EPEL 저장소를 설치합니다.

$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ rpm -Uvh remi-release-7.rpm

그다음 해당 저장소가 정상적으로 설치되면 아래의 명령어로 Nginx를 설치합니다.

$ yum install nginx -y

설치가 되면, 리눅스를 재부팅하거나 예기치 않게 재부팅되더라도 자동으로 Nginx가 시작될 수 있게 명령어를 입력합니다.

$ systemctl enable nginx

그 이후 Nginx를 실행하여 정상적으로 실행되었는지 확인합니다.

$ service nginx start
# 또는
$ systemctl start nginx

PHP 7 설치

php7을 설치하기 위해서는 앞서 Nginx를 설치했던 것과 같이 추가적인 저장소 설치가 필요합니다.

$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ rpm -Uvh remi-release-7.rpm

위의 명령어를 입력하여, 저장소를 설치한 후, 기본적으로는 php7.2 패키지가 비활성화되어 있음으로 아래의 명령어로 활성화합니다.

$ yum install yum-utils -y
$ yum-config-manager --enable remi-php72

그 이후 php에 기본적인 패키지들을 설치해줍니다.

$ yum --enablerepo=remi,remi-php71 install php-fpm php-common -y

완료되었다면, php의 기본 모듈들을 설치해줍니다.

$ yum --enablerepo=remi,remi-php72 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

Nginx + PHP 섞기

이제 Nginx와 PHP를 내 마음대로 사용하기 위해서 Nginx에 php가 가동될 수 있게 해줘야 합니다.

먼저, Nginx의 설정을 바꾸기 위해 vi editor로 파일을 만듭니다.

$ vi /etc/nginx/conf.d/default.conf

deafult.conf 내용

server {
listen 80;
server_name xe3dev.test;
#server_name에는 http:// 같이 프로토콜을 제외한 도메인 주소를 입력해도 됩니다.

root /home/domain/xe3dev/www;
#원래는 /usr/share/nginx/html 경로
#원하는 폴더로 변경
index index.php index.html index.htm;

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

server_name에는 내 서버 IP 또는 도메인 등이 알맞게 들어가야 합니다.

또한, root에는 /home/domain/xe3deb/www로 설정되어 있었다는 점을 알아둡시다.

처음에 nginx를 실행하여 봤던 메인 페이지는 상단의 경로에 있던 index.html을 불러와서 보여준 것 입니다.

모든 파일의 작성 및 내용 수정이 끝났다면 nginx를 재 시작합니다.

$ service nginx restart
# 또는
$ systemctl restart nginx

다음에는 PHP-FPM를 세팅할 것입니다.
PHP-FPM 없이도 Nginx만으로도 웹서버를 운영 할 수 있는데 웹 서버만으로는 정적인 페이지밖에 표현을 못 하게 됩니다.

정적인 페이지란 우리가 사전에 만든 파일을 링크해서 이동시키거나 보여주거나 하는 단적인 기능만 할 수 있습니다. 하지만 우리는 그런 페이지가 아닌 DB에 데이터도 저장하고, 데이터를 가공해서 사용자에게 보여주는 등의 사이트를 만드는 것이 목표입니다.

그러기 위해선 추가로 Nginx와 PHP를 연동 시켜 동적인 웹 애플리케이션을 구축 할 수 있게 됩니다.

PHP-FPM를 설정하기 위해서 vi editor로 작성합니다.

$ vi /etc/php-fpm.d/www.conf

www.conf 내용

user = apache를 user = nginx로 수정
group = apache를 group = nginx로 수정
;listen.owner = nobody를 listen.owner = nginx로 수정
;listen.group = nobody를 listen.group = nginx로 수정
listen = 127.0.0.1:9000 를
listen = /var/run/php-fpm/php-fpm.sock 로 수정

하나의 장비에서 Nginx와 PHP-FPM이 운영된다면 유닛스 소켓 방식이 더 유리합니다. 그렇기에, listen에다 unix 소켓을 사용하였고 PHP-FPM 서비스의 권한을 nginx로 수정시켰습니다.

모든 내용의 작성이 끝났다면 언제나 :wq를 입력하여 저장하고 나옵니다.
그 이후 정상적으로 php가 연동되었는지 확인하기 위해, 아래의 php info를 작성하여 해당 페이지로 접속합니다.

<?php phpinfo(); ?>

만약, 작성한 내용이 그대로 보인다면 nginx를 재시작하여 다시 접속하거나, php 관련 설정 내용이 제대로 작성되었는지 확인합니다.

만약 그래도 페이지를 찾을 수 없는 404 Page Not Found 또는 기타 에러가 발생한다면 Selinux라고 하는 리눅스의 보안 정책으로 인해 제한되어 있을 수 있습니다.

대부분 구글링해서 찾게 되면 이 Selinux를 비활성화하라고 나와 있는데, 이는 보안 설정을 전부 비활성화되므로 아래의 명령어를 그대로 실행합니다.

$ stenforce 0

이제 웹 서버와 Nginx를 설치하여 확인했으니 가장 중요한 데이터베이스를 설치하면 끝!

MariaDB 설치

이제 Nginx와 PHP를 내 마음대로 사용하기 위해서 Nginx에 php가 가동될 수 있게 해줘야 합니다.

CentOS7에서는 MySQL이 아닌 MariaDB가 기본으로 잡혀서 MariaDB를 설치할 것입니다.

다음 명령어로 MariaDB를 설치합니다.

$ yum install mariadb-server mariadb -y

설치가 완료되었으면 서비스를 등록합니다.

$ systemctl start mariadb
$ systemctl enable mariadb

마지막으로 다음 명령어를 통해 기본적인 설정을 입력합니다.

$ mysql_secure_installation (이 명령어 입력)Enter current password for root (enter for none):
...
...
...
...
Success!

Root의 비밀번호를 세팅하고, 가급적 Y 또는 N을 입력하는 항목에는 Y를 대답하여 기본 세팅된 데이터를 삭제하고 권한을 초기화 하는 것이 좋습니다.

이렇게 진행하면 Nginx와 PHP 7, MariaDB까지 모두 설치하였습니다.

이제 대망의 XE3를 설치할 차례입니다.

XE3 설치 및 구성

XE3 Core 다운로드

XE3는 공식 홈페이지( https://www.xpressengine.io/) 에서 다운로드할 수 있으며, 방금 만든 프로젝트의 폴더로 압축을 풀어 올려놓으면 설치 준비 끝!

DB 사용자 설정

DB를 사용하려면 root 계정에 db를 만들어주어야 합니다.
터미널은 너무 어려울 수 있으니, 조금 더 쉬운 adminer를 다운로드받아, 적절한 이름 (db.php 또는 dbdb.php) 으로 바꿔줍니다.

xe3dev.test/db.php 와 같이 변경한 파일명으로 접속하여 root 계정으로 로그인합니다.

Adminer에서 root 계정으로 로그인하는 모습.

데이터베이스 선택 창에서 데이터베이스 만들기 를 클릭합니다.

그 이후 원하는 DB 이름으로 이름을 지은 다음 오른쪽의 utf8mb4_general_ci 를 선택하여 저장합니다.

게시판 제목 또는 내용의 이모지 지원을 위해서 utf8mb4_general_ci 를 선택합니다.

아래와 같이 데이터베이스를 만들었다면, DB 설정도 끝!

축하드려요! 성공적으로 데이터베이스를 만들었습니다!

XE3 설치

DB사용자 설정까지 해주었다면, 이제 XE3를 본격적으로 설치할 때입니다.
XE3 최신 버전을 다운로드 받아 압축 해제하여 프로젝트 폴더에 옮겨줍니다.

첨부된 이미지는 FTP가 아닌 직접 Windows 디렉토리에 넣는 작업입니다 :)

본인의 서버 도메인 또는 IP로 접속한 다음 XE3 공식 홈페이지의 매뉴얼의 내용 중 “최신버전 다운로드 (웹/FTP 환경)” 항목을 참고하여 설치하면 끝!

가상서버 또는 리얼서버를 사용하여 웹 서버 설치부터, XE3 설치까지 해보았습니다.

처음 XE를 사용하여 서버를 이전해야 할 때, 또는 급하게 XE를 설치할 서버가 가상서버이거나, 리얼서버라서 당황하지 않고 단숨에!

XE는 창작자와 기술기업을 위한 기술 자료를 공유하고, 상생하는 건강한 커뮤니티 문화를 조성하기 위해 노력하고 있답니다 :)

창작자를 위한 XE 플러그인 장터도 들러보세요!
XE Store 바로 가기

XE 공식 홈페이지 바로 가기
XE CAMPUS 바로 가기

--

--