개요

개인적으로 생각하는 우분투의 장점중 하나는 웹 서버의 가상 호스트를 체계적으로 관리할 수 있다는 점입니다.


가상 호스트를 단일 파일로 관리하는 RHEL이나 CentOS 와는 달리 우분투는 /etc/nginx/sites-available 폴더에 가상 호스트 설정을 넣어주고 /etc/nginx/sites-enabled 폴더에는 활성화할 가상 호스트를 symbolic link  해서 사용하고 있습니다.


즉 새로 blog.example.com 이라는 가상 호스트를 추가하려면 /etc/nginx/sites-available/blog.example.com 파일에 가상 호스트 설정을 하고 다음 명령어로 symbolic link 를 해준 후에 웹 서버를 재구동해 주면 됩니다

가상 호스트 활성화

ln -s /etc/nginx/sites-available/blog.example.com /etc/nginx/sites-enabled
BASH


RHE/CentOS에 비해서 체계적으로 가상 호스트를 관리할수 있는 장점이 있지만 가상 호스트 파일을 직접 만들어 줘야 하는 번거로움이 있어서 지금 소개하는 스크립트를 작성하게 되었습니다.

이 스크립트는 laravel homestead 의 laravel.sh 를 참고해서 작성했습니다.


serve-php 스크립트

serve-php.sh 는 github 에 gist 로 공개한 간단한 가상 호스트 생성 스크립트로 다음 역할을 수행합니다.

  1. RHEL/CentOS 에서 Ubuntu 방식으로 가상 호스트를 관리할 수 있게 해줌
  2. PHP 로 개발한 서비스의 가상 호스트에 필요한 기본 설정을 제공


스크립트는 gist 에 있으므로 git clone 하거나 다음 명령어로 다운받아서 사용하면 됩니다.

git clone

git clone https://gist.github.com/82c107282241c7a52ad9.git serve-php
BASH

curl 로 다운로드

curl -o serve-php.sh https://gist.githubusercontent.com/lesstif/82c107282241c7a52ad9/raw 
sudo mv serve-php.sh /usr/local/bin/ 
sudo chmod +x /usr/local/bin/serve-php.sh
BASH


이제 RHEL/CentOS 계열은 /etc/nginx/nginx.conf 의 http 블록에 다음 내용을 추가해 줍니다.

/etc/nginx/nginx.conf

http {
   ##
   # Virtual Host Configs
   ##
   include /etc/nginx/conf.d/*.conf;
   ## 추가 부분
   include /etc/nginx/sites-enabled/*;
}
BASH


사용

PHP 로 개발한 서비스를 새로 가상 호스트로 추가하려면 다음 명령어를 실행합니다.

가상 호스트 생성

sudo serve-php.sh domain path
BASH



domain 에는 서비스의 도메인을 적어주고 path 는 PHP 서비스의  web root 를 주면 됩니다.

주의할 점은 laravel 로 개발한 소스의 경우 소스의 root 가 아니라 public 폴더를 적어줘야 합니다.


예로 라라벨로 개발한 서비스의 도메인이 blog.example.com 이고 web root 가 /var/www/blog.example.com 폴더일 경우(이 폴더 바로 아래에 artisan 명령어가 있어야 합니다.) 다음과 같이 웹 서버 루트를 지정하면 됩니다.

sudo serve-php.sh blog.example.com /var/www/blog.example.com/public
CODE


성공적으로 추가되었으면 /etc/nginx/sites-available/blog.example.com 와 /etc/nginx/sites-enabled/blog.example.com 파일이 생기고 nginx 와 php-fpm 을 재시작하므로 브라우저에서 바로 가상 호스트로 연결할 수 있습니다.

nginx 가상 호스트 설정

$ ls -l /etc/nginx/sites-available/blog.example.com  /etc/nginx/sites-enabled/blog.example.com 

-rw-r--r-- 1 root root 2431 May  5 11:41 /etc/nginx/sites-available/blog.example.com
lrwxrwxrwx 1 root root   44 May  5 11:41 /etc/nginx/sites-enabled/blog.example.com -> /etc/nginx/sites-available//blog.example.com

BASH


마치며

가상호스트를 추가하는 작업은 자주 발생하므로 스크립트를 이용한 자동화가 필요합니다.

소개한 스크립트를 활용하면 가상 호스트 추가에 필요한 nginx 설정 파일을  자동 생성해 주며 RHEL/CentOS 에서도 우분투 방식의 가상 호스트 관리를 사용할 수 있는 장점이 있으므로 잘 활용하시기 바랍니다.


같이 보기