시나리오

필자는 (시놀로지를 비롯한) 서버 시스템을 혼자 사용하고 관리하기 때문에 계정사용이 한정적인데 만일 지인이 웹에 공간을 나눠 달라고 부탁한다면 계정을 생성하고 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 권한으로 접속한다.

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

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

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

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

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

▲ ll 명령어로 확인.

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

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

 

DSM 에서 도메인 설정

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

sy_web_ssh_02

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

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

번외편 자동화 설정

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

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

PG

익스트림 매뉴얼 주인장 PG입니다. 다방면의 디지털 기술에 관심이 많고 삽질을 즐겨합니다. 포스트 내용중 궁금한 점이 있다면 댓글로 남겨주세요.

익스트림 매뉴얼의 모든 내용은 불펌금지 입니다. 자세한 내용은 링크를 참조하세요.

7 댓글이 있습니다.

  1. 안녕하세요 덕분에
    알려주신 심볼릭 링크를 해서 개인웹사이트를 원하는 도메인으로 잘 연결했습니다. 감사합니다.

    그런데 도메인/~사용자/wp 했을때는 잘 실행되던 페이지가 심볼릭링크한 후에 가상호스트 잡은 도메인으로 접속하면 No input file specified 글만 뜨고 실행이 안되는데
    원래 그런건가요 아님.. 제가 무얼 잘못 설정한걸까요..
    혹시 해결책이 있을까요?
    조언 말씀좀 해주시면 감사하겠습니다.

    • 해당 에러는 실행권한이 없어서 생기는 것으로 제어판의 웹서비스-PHP설정에서 PHP open_basedir 사용자 지정 하단에 지정된 경로들을 모두 지우신 후 적용을 하시면 됩니다. 이때 체크박스를 풀지 않고 내용만 지우시면 됩니다.

      • open_basedir 옵션을 none으로 주니 정상동작하긴 하지만, php가 접근할수 있어야 하는 모든 경로가 open-basedir 에 명시된 경우에도 오작동 하는 경우를 관찰했습니다.

        ex>
        /volume1/web/user01.mydomain.com -> ~user01/www
        /volume1/web/www.mydomain.com (심링크 없음)

        폴더 http://www…와 심볼릭링크 user01… 가 있는 폴더의 절대경로, user01 개인웹폴더의 절대경로를 모두 open-basedir에 입력했지만 개인웹에 접근시 500에러를 리턴했습니다.
        검색해보니 php가 파일을 접근할 수 있는 경로를 화이트리스트로 관리하는 기능이라고 하는데, none으로 설정시(체크박스풀지않고 내용만삭제시) 정상동작하는걸 보면 분명 해당 옵션에 문제가 있는것 같긴합니다만… 심볼릭 링크 사용하에 해당 기능이 정상동작 하지 않는것으로 보이긴 하는데… 당장 기능을 끔으로써 쓸수는 있으나 되도록 활성화 상태에서 사용하고 싶어서요..
        검색 키워드도 애매하고.. 주변에 이쪽에 밝은 사람이 없어 이렇게 댓글로 자꾸 여쭙니다 ㅠㅠ

        심링크 이용시 링크의 대상과 링크의 위치가 모두 open_basedir에 등록되 있으나 php가 링크의 대상에 정상적으로 접근하지 못하는것같습니다. 이 기능의 문제라면, 심링크 외에 다른 방식으로 가상 호스트를 관리할 만한 방법은 무엇이 있을까요?

        • 이전 댓글도 얘기했다피 시놀로지 웹서버 기능 자체가 1인 호스트에 세팅되어 있어 LAMP 처럼 세팅하기에는 많은 커스텀을 요구합니다.

          입맞에 맞게 설정하려면 시놀로지의 아파치를 수정해야하는데 시놀로지에 ssh로 접속해서 아파치의 구조를 보면 알겠지만 시놀로지 dsm과 웹서버가 공유하는 설정, 권한등이 얽혀있어서 댓글에서 답변하기 난감합니다.

          (그리고 오래전에 뜯어봐서 지금 기억도 안나구요.)

          시놀로지 아파치 설정 수정이 비효율적인게 시놀로지를 업데이트 하면 모든 설정이 다시 시놀로지의 세팅으로 자동 롤백되버려 다시 수정을 해야합니다. 설정을 백업한 다음 복원한다고 해도 웹서비스 형태로 봤을때는 안정적인것은 아니구요. 본격적으로 웹서버를 운영하신다면 LAMP를 사용하는게 좋습니다.

          시놀로지를 꼭 활용해야 겠다면 LAMP 구성후 samba로 디렉토리를 공유한 다음 시놀로지에서 디렉토리를 네트워크로 땡겨오고 파일스테이션이나 ftp등에 권한을 줘서 활용하는 방법도 있습니다.

  2. “www”로 시작하는 단어를 치니 “http://”가 자동완성되는군요;;
    아래가 원래 쓰고자 했던 말입니다.

    폴더 “www.mydomain.com” 이 있는 폴더와 심볼릭링크 “user01.mydomain.com” 이 있는 폴더의 절대경로,

댓글이 없습니다.