macOS Server에서 웹사이트 만들기

macOS Server 앱(구 OS X Server앱)에서 웹 사이트를 만들어 봅시다. 보통은 웹 서버를 구축하고서 그 웹 서버에 웹 사이트를 올리는 순서로 진행해야 하지만, macOS Server 앱을 설치할 때 이미 다 구축이 되었습니다. 그러므로 클릭 한번으로 웹 서버를 작동시킬 수 있습니다.

한글 버전은 발번역의 문제나 인터넷 상에서 정보를 얻기 어려운 문제가 있어 영어버전을 사용하는 것이 조금 더 편하지만, 한글 버전을 쓰는 분들을 위해 메뉴를 한/영 병기하겠습니다. macOS Server 앱에서 따옴표에 묶인 부분들을 찾을 수 있을 거에요.

웹 서버 작동시키기

좌측 “서비스(Services)” 메뉴에서 “웹 사이트(Website)”를 누른 뒤, 우측에서 버튼을 눌러 서비스를 켜세요. 몇 초 걸리기도 하니 인내심을 갖고 기다려주세요. 초록색 불이 들어오면 서비스가 켜진 것입니다. 이제 웹 서버가 작동하기 시작했습니다. 간단하죠?

워드프레스 등 PHP를 사용할 거라면, “웹 응용 프로그램: PHP 활성화(Web Applications: Enable PHP)”에 체크합니다.

웹 사이트 만들기

하단의 +버튼을 눌러 “새로운 웹 사이트(New Web Site)”를 만듭니다.

웹 사이트 기본 설정

도메인 이름(Domain Name): 실제로 사용할 주소
중요:자신이 사용할 도메인 네임 주소를 정확히 입력해야 합니다.
도메인 네임 naver.com 을 소유하고 있을 경우, 대부분의 웹 사이트에서 가장 기본이 되는 사이트는 관습적으로 www.naver.com 주소를 사용하기 때문에, 만일 test.co.kr 도메인을 구입하셨다면, 여기에다가 www.test.co.kr이라고 입력하면 됩니다.

만일 www.test.co.kr 은 다른 데다 쓰고, blog.test.co.kr을 쓰고 싶다면 그렇게 입력하면 돼요. 한마디로, 웹브라우저에서 입력할 주소를 이 칸에 쓰는겁니다.

IP 주소(IP Address): IP로 접속시 보일 사이트
기본값인 “모두(Any)”로 놔두세요. 이걸 자신의 IP주소로 바꾸면, 주소창에 자신의 IP주소를 직접 넣었을 때, 이 웹사이트가 뜨게 됩니다. 만일 컴퓨터의 IP가 1.2.3.4 라면, 원래는 1.2.3.4:80에서는 1개의 웹사이트 밖에 구축이 안됩니다. 그러나 apache에서는 특별한 방법을 통해 한 컴퓨터에서 여러 웹사이트를 구축할 수 있죠.

만일 “도메인 이름(Domain Name)”과 “IP 주소(IP Address)”에 대하여 좀 더 알고싶거나 개념이 헷갈린다면 다음 글을 참조해보세요. 아파치 웹서버에서 컴퓨터 하나로 여러 도메인 주소를 쓰는 원리

SSL 인증서(SSL Certificate): 블로그라면 필요없음
[방송통신위원회 고시 제2012-50호] 때문에 회원가입을 받고, 회원정보를 수집하는 대한민국 내의 모든 사이트(심지어 이메일 한개만일지라도)는 SSL 인증서를 필수로 설치해야 합니다. 그런데 개인 홈페이지를 구축하는 선에서는 비용이 매우 아깝죠. com 도메인을 유지하는 비용보다도 비싸요!

2016년 이전까지만 하더라도 StartSSL 등에서 기관이 인증한 무료 SSL을 사용할 수 있었는데, 보안상의 이유로 크롬 등에서 차단되었습니다. 그래서 macOS Server에서 클릭 몇번으로 자체 발급 가능한 SSL인증서를 사용하는 것과, StartSSL에서 무료 인증서를 받아서 사용하는 것 사이에는 아무 차이가 없어요. 둘 중 무엇을 사용하든, https로 웹 사이트에 접속하는 사용자는, 위험한 사이트라며 경고 화면을 보게될 것입니다.

남들이 봐달라고 웹 사이트를 만들었는데, 보안 경고가 뜨면 사람들이 안들어오겠죠? 그러므로, 혼자 사이트를 쓸거라면(블로그처럼), 회원가입을 막고 인증서는 “없음(None)”을 선택할 것을 추천합니다.

다음에 사이트 파일 저장(Store Site Files In): 사이트 파일을 저장할 내 컴퓨터 내 폴더
기본적으로 ‘/Library/Server/Web/Data/Sites/도메인 이름(Domain Name)에 입력한 주소’에 파일을 저장하게 되어있습니다. 만일 좌측에서 제일 상단에 자신의 컴퓨터 이름으로 되어있는 메뉴의 “설정(Settings)” 탭에서 “서비스 데이터(Service Data)”의 위치를 바꾸었다면 그 위치로 ‘/그 위치/Library/Server/Web/Data/Sites/도메인 이름(Domain Name)에 입력한 주소’에 파일을 저장합니다.
물론 여기서 수동으로 아무 폴더에 파일을 저장할 수도 있습니다.

접근할 수 있는 사람(Who Can Access):공개 사이트인 경우 필요없음
“모두(Anyone)”으로 해두지 않는다면, 웹사이트에 접속했을 때 아무 글씨도 없는 하얀 화면에 아이디와 비번을 넣는 창이 열립니다. 여기서 아이디와 비번은 맥에 로그인할 때 사용하는 계정의 아이디/비번이에요. 서버 앱에서는 좌측의 “사용자(Users)” 메뉴에서 평상시 컴퓨터를 쓸 때는 로그인 화면에 보이지 않는 “서비스 전용(Services Only)”사용자를 만들 수 있습니다. 이를 이용하면, 맥 자체에 등록된 제한된 사용자만 웹사이트를 볼 수 있게 됩니다.

추가 도메인(Additional Domains):
인터넷 주소창에 naver.com을 쳐보세요. 주소가 www.naver.com로 바뀌어 접속되는 것을 확인하실 수 있습니다. 도메인 naver.com을 소유하고 있을 경우, naver.com은 사용하지 않는 상위 주소로 놔두고, www.naver.com 에서 기본 웹사이트를, blog.naver.com 등에서 다른 웹사이트들을 서비스합니다. 이 메뉴가 바로 이러한 기능을 구현하는 부분입니다. 예를 들어, “도메인 이름(Domain Name)”에서는 www.naver.com을 입력해두고, 여기에서는 naver.com을 입력해두시면 됩니다.
혹은 아예 다른 도메인도 한 주소로 운영할 수가 있습니다. 만일 www.naver.co.kr도 같은 페이지를 보이게 해주고 싶다면, 여기에 www.naver.co.kr도 추가해두시면 됩니다.

리다이렉트(Redirects):
리다이렉트는 웹에서 손쉽게 검색할 수 있는 부분이고 설정이 딱히 어려운 것도 아닙니다.

가상본(Aliases):
가상본도 딱히 신경쓰실 필요 없습니다.

인덱스 파일(Index Files):
원래, www.naver.com은 폴더명 같은 것일 뿐이고, www.naver.com이라고 치더라도 실제로는 www.naver.com/index.html 같은 html파일을 보여주게 됩니다. 여기서 지정하는 인덱스 파일이란, 도메인네임주소로 접속했을 시, 기본적으로 보여주게 될 html이나 php파일을 지정해주는 것입니다. 보편적으로 쓰이는 index.html, index.php, 워드프레스를 사용할 때에는 딱히 건드리지 않아도 무방합니다.

고급 설정

“고급 설정 편집(Edit Advanced Setting)”눌러 안쪽에 들어가면 다음과 같은 체크박스들이 있습니다.

서버측 포함 활성화(Enable Server Side Includes)
.htaccess 파일을 사용한 덮어쓰기 허용(Allow overrides using .htaccess files)
폴더 목록 생성 허용(Allow folder listing)
CGI 실행 허용(Allow CGI execution)
사용자 설정 오류 페이지 사용(Use custom error page):

워드프레스를 사용할 거라면 “.htaccess 파일을 사용한 덮어쓰기 허용(Allow overrides using .htaccess files)” 부분만 체크하면 됩니다. 보통 아파치 서버에서 한글로 된 주소를 사용하려면 Mod_url을 설치해야 하는데, macOS Server에서는 다국어 관련 인코딩 모듈이 이미 설치되어 있습니다. 이 체크 하나만으로 한글 고유 주소(Permalink)를 사용할 수 있게 됩니다.

또한 “사용자 설정 오류 페이지 사용(Use custom error page)” 기능은, 허용되지 않는 주소로 요청이 들어올 경우 원하는 html이 보이도록 하는 기능으로, 워드프레스 사용자는 굳이 이렇게 하지 않아도 오류 페이지가 따로 존재하기 때문에 신경쓰실 필요가 없습니다.

워드프레스 블로그 설정에 관한 내용만 보고싶으시다면, macOS Server로 맥에서 워드프레스 블로그 만드는 법을 참조하시기 바랍니다.

아파치 웹서버에서 컴퓨터 하나로 여러 도메인네임주소를 쓰는 원리

아파치 웹 서버에서 컴퓨터 하나로 여러 도메인네임주소를 사용하는 원리를 이해해 봅시다. 어떻게 www.example.com, blog.example.com 은 물론 아예 다른 도메인네임주소인 www.test.com 등을 모두 한대의 컴퓨터에서 서비스할 수 있는 걸까요.

웹 서버는 80포트를 사용한다.

웹사이트는 기본적으로 80포트를 통해 통신이 이루어집니다. 구글컴퓨터의 IP인 172.217.24.196에 접속을 하더라도, 172.217.24.196:80으로 접속하게 되는 것입니다. 이 포트는 기본포트이므로 주소창에 따로 나타나지도 않습니다.

이는 www.google.com과 같은 도메인네임주소를 사용할 때에도 마찬가지입니다. 주소창에 www.google.com 을 입력하면, 도메인네임서버와의 통신을 통해 172.217.24.196을 반환받습니다. 실제로는 172.217.24.196:80에 접속을 하게 되지만, 주소창에는 www.google.com만 뜨게 됩니다.

즉, www.google.com을 입력하면, 무조건 80번 포트로 운영중인 웹 사이트에만 접속할 수 있습니다. 물론 ISP 업체에서 80번 포트를 막아놨을 경우 우회하는 방법들이 있기는 하지만, 기본적으로는 80번 포트를 제외한 나머지 포트는 꼭 포트번호까지 써줘야 합니다.

하나의 포트번호는 하나의 사이트만 서비스 가능하다.

만일 다른 웹 사이트를 만들고 싶다면, 172.217.24.196:8080과 같이 다른 포트번호를 사용해야 합니다. 그런데 이 주소를 직접 도메인네임주소와 연결시킬 방법이 없습니다. www.google.com:8080과 같이 포트번호를 꼭 써준 주소를 써야하죠. 숫자주소가 싫어서 도메인네임서버를 사용하는 건데, 다시 숫자가 주소를 써야한다니 달가울 리가 없습니다.

도메인네임서버(DNS)에는 포트번호를 넣을 수 없다.

예를들어 1.2.3.4:80 에게는 www.example.com 이라는 문자 주소를 부여하고, 1.2.3.4:81에게는 www.test.com이라는 문자주소를 부여하고 싶다고 해봅시다. 간단히 생각해보면, 도메인네임서버(DNS)에게 www.test.com이 들어오면 1.2.3.4:81로 가라고 A레코드를 주면 될 것 같습니다. 하지만 포트번호를 끼고 레코드를 작성할 수가 없습니다. 그렇기 때문에, 1.2.3.4 에 www.example.com과 www.test.com을 모두 연결해야 합니다. 그리고 1.2.3.4:81 로 접속하고 싶다면, www.test.com:81로 접속해야만 합니다.

이 방법은, www.example.com과 www.test.com은 모두 1.2.3.4:80으로 연결되고, www.example.com:81과 www.test.com:81 모두 1.2.3.4:81로 연결됩니다. 전혀 원하는 방향이 아니죠. 그래서 Virtual Host 기능을 사용하게 됩니다.

1단계: 도메인네임서버(DNS)에서 A레코드 작성하기

일단, 도메인네임서버(DNS)에서 할 일은 간단합니다. www.example.com이든 www.test.com이든 blog.example.com이든 모두 자신의 아이피(여기서는 1.2.3.4)로 연결하는 A 레코드를 작성합니다.

이 단계까지 올바로 마쳤다면, www.test.com을 입력하든 www.example.com을 입력하든, 결국 숫자주소 1.2.3.4:80에 해당하는 www.example.com 사이트가 나타나야 합니다. 아직은 이상해 보이지만, 이상하게 생각할 필요 없습니다. 저도 처음에 설정하면서 이 부분이 가장 헷갈렸습니다.

아파치 웹 서버에서 가상호스트(Virtual Host)로 관리

도메인네임서버(DNS)에서 올바로 설정을 마쳤다면, 이제는 아파치 웹 서버의 모듈인 가상호스트(Virtual Host)를 알맞게 설정해주면 됩니다. 가상호스트(Virtual Host)의 기능은, 도메인네임서버(DNS)에게 1.2.3.4를 소개받아 접속한 사람이 www.example.com 을 치고 소개를 받은건지, www.test.com을 치고 소개를 받은건지를 구분해서 각각 알맞은 폴더를 보여주게 됩니다.

만일 www.example.com을 치고 온 사람이라면, 자동적으로 1.2.3.4으로 보내주고, www.test.com을 치고 온 사람은 자동적으로 1.2.3.4:81로 보내주고서 포트번호를 숨겨줍니다. 이것이 바로 한 컴퓨터로 80번 포트를 갖는 여러 주소의 사이트를 운영하는 법입니다.

여전히 www.example.com:81 로도, www.test.com에 해당하는 1.2.3.4:81에 접속할 수는 있습니다. 그렇기 때문에 가상호스트(Virtual Host)를 사용할 때에는 81처럼 손쉽게 넣을 수 있는 포트가 아닌 만번대 이상의 찍어서 맞추기는 힘든 포트를 사용하는 것이 좋습니다. 기본적으로 macOS Server에서는 이 작업을 알아서 해줍니다.

정리하자면 다음과 같습니다.

  • 1.2.3.4를 입력하면 1.2.3.4가 열림
  • www.example.com을 입력하면 1.2.3.4:80이 열림,
    주소창에는 www.example.com이 보임
  • www.test.com을 입력하면 1.2.3.4:81이 열림,
    주소창에는 www.test.com이 보임

사용법만 알면 쉬운 macOS Server

웹 검색을 해보면 아파치 웹 서버 자체에 대한 정보는 많고, macOS Server에 대한 정보는 별로 없기 때문에, 오히려 아파치의 config 파일을 직접 수정하는 게 쉬울 수도 있습니다. 저도 그랬어요. macOS Server를 어떻게 설정해야 가상호스트(Virtual Host)를 사용할 수 있는지 한참 헤맸습니다. 분명 가상호스트(Virtual Host) 기능이지만, 앱의 UI에서 그런 단어는 전혀 찾을 수 없으니까요.

macOS Server에서는 다음 링크와 같이 설정하면 손쉽게 Virtual Host를 이용해서 컴퓨터 한대로 80번 포트로 운영되는 여러 도메인네임주소를 사용할 수 있습니다.