시놀로지 웹 스테이션(웹서버) 가상호스트로 사용자에게 도메인 쉽게 부여하기

시나리오

필자는 (시놀로지를 비롯한) 서버 시스템을 혼자 사용하고 관리하기 때문에 계정사용이 한정적인데 만일 지인이 웹에 공간을 나눠 달라고 부탁한다면 계정을 생성하고 2차 도메인을 생성해야 한다. 시놀로지 기본 기능인 웹 스테이션을 통한 호스팅과 가지고 있는 도메인에 2차 도메인을 생성한 후 연결해 주면 되지만 기본 기능으로 설정하기엔 약간의 난관에 부딛치게 된다.

계정 생성은 설정이 간편하지만 생성된 계정에 해당하는 주소(mystor.net/~user)를 도메인(user.mystor.net)에 연결해야 되는데 웹 스테이션의 가상 호스트 기능은 아파치 루트폴더의 하위폴더만 지원하기 때문.

다시 설명 하자면 시놀로지 아파치의 기본 폴더인 web 폴더 하위에 위치한 폴더를 가상 호스트를 통해 연결할 수 있다는 얘기. (mystor.net/user -> user.mystor.net)

이것을 해결하려면 아파치의 유저 폴더 위치를 기본 폴더 하위에 위치시켜야 하고 또 계정 생성시 자동으로 기본 폴더 하위에 생성되는 크론을 작성해야 한다. 그리고 ftp(sftp) 관련된 jail 설정도 해줘야 하는 머리아픈 고난이 기다리고 있다. 좀더 간단한 방법은 직접 vhost 파일을 수정하면 되는데 이럴꺼면 CentOS에 아파치를 쓰고 말지.

시놀로지 사용의 본질인 관리의 편안함을 그대로 가지고 가기 위해 명령어와 삽질을 최소화하는 방법을 공개한다.

 

해결 방법

사용자 폴더에 있는 www 폴더를 web 하위의 폴더에 심볼릭 링크를 걸어줌으로써 시놀로지 웹스테이션의 옵션을 그대로 활용.

 

시놀로지를 SSH(터미널)로 접속

시놀로지 서버에 ssh(터미널)를 root 권한으로 접속한다.

find / -name 'homes'

위의 명령어로 사용자의 홈 폴더가 모이는 homes 폴더 위치를 찾을수 있다. 위치는 /var/services/homes 이다.

고로 사용자의 개인 웹페이지가 저장되는 곳은 /var/services/homes/유저아이디/www 이고 웹스테이션 기본 폴더는 /var/services/web 이 된다.

이제 web 폴더 하위에 유저폴더를 심볼릭 링크로 연결해 준다.

ln -s /var/services/homes/유저아이디/www /var/services/web/유저아이디

심볼릭 링크를 만드는 명령어로 유저아이디 하위의 www 폴더를 아파치 기본 폴더인 web의 하위에 유저아이디로 된 링크로 만들어 준다.

sy_web_ssh_01
sono 계정이 심볼릭 링크로 연결된것을 확인 할수 있다.

▲ ll 명령어로 확인.

심볼릭 링크를 지우고 싶으면

rm /var/services/web/유저아이디

위의 명령어들을 절대경로로 설정해 준 이유는 리눅스에 익숙하지 않은 분들을 위한 작은 배려. ^^

 

DSM 에서 도메인 설정

관리자 계정으로 DSM에 접속해서 제어판 – 웹 서비스 – 가상 호스트 클릭

sy_web_ssh_02

▲하위 폴더에 유저 아이디(심볼릭 링크), 호스트 이름은 도메인을 설정한다.

도메인으로 접속해서 설정이 잘 되었는지 확인해보자. 유저를 새로 생성할때 위의 과정(명령어)이 자동으로 되게끔 설정하면 귀찮음을 좀더 덜겠지만 실력이 거기까진 미치지 못해 수동으로 입력하는걸로 해결했다.

번외편 자동화 설정

위의 방법은 메인 도메인 및 2차 도메인을 연결할수 있는데 2차 도메인만 연결해서 사용 한다면  자동으로 연결(user.mystor.net)하는 방법이다. 물론 2차 도메인 세팅은 수동으로 준비되어야 한다.

SSH(터미널)를 root 권한으로 접속 후, /etc/httpd/conf/httpd.conf-user 파일 하단에 아래의 코드를 붙여넣기 한다.

NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
ServerAlias *.mystor.net
DocumentRoot /var/services/web
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.mystor.net$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).mystor.net(.*) /home/$1/www$2
ErrorDocument 403 "/webdefault/error.html"
ErrorDocument 404 "/webdefault/error.html"
ErrorDocument 500 "/webdefault/error.html"
</VirtualHost>

연관 글

댓글