맥에는 기본적으로 apache와 php 가 설치되어 있기 때문에 따로 설치해 줄 필요가 없다 그냥 활성화만 해주고 필요에 따라 설정만 변경해 주면 된다. 요세미티에 설치 되어 있는 apache와 php 버전은 다음 명령어로 확인할 수 있다.
apache 는 2.4.16 버전이 php는 5.5.27 버전이 설치 되어 있다. 우선 설치된 apache를 다음 명령어로 start 해주자.
관리자 권한이 필요한 명령어라 비밀번호를 입력해야 한다. 그러고 나서 웹브라우저로 localhost나 내 ip를 입력하면 기본 index 페이지가 뜬다. 디폴트로 설정된 웹서버의 DocumentRoot 폴더는 /Library/WebServer/Documents 이며 이 위치에 있는 index.html.en 의 내용이 It works! 이다.
apache의 디폴트 설정들을 변경하려면 /private/etc/apache2/ 폴더에 있는 설정파일들을 수정하면 된다. 기본 DocumentRoot 폴더를 변경하고 싶으면 /private/etc/apache2/httpd.conf 파일을 열고 DocumentRoot 부분을 변경하고 한 줄 바로 밑에 있는 Directory 부분을 수정한다.
개인적으로 DocumentRoot는 그냥 두고 userdir 을 활성화 해서 사용하는데 userdir을 활성화 시키려면 /private/etc/apache2/extra/httpd-userdir.conf 파일을 먼저 수정해야 된다
위 스크린샷 처럼 16번째 줄의 Include /private/etc/apache2/users/*.conf 의 주석을 제거하고 /private/etc/apache2/users/ 폴더에 자신의 계정명으로 된 conf 파일을 생성해야 한다. 그리고 3번째 줄의 Required module에 있는 항목들을 LoadModule 하는 코드를 /private/etc/apache2/httpd.conf 파일에서 주석 제거해 주고 위 파일(/private/etc/apache2/extra/httpd-userdir.conf)을 Include하는 코드도 주석제거해 주어야 한다.
일반적으로 mod_authz_host.so 모듈과 mod_authz_core.so 모듈을 LoadModule하는 코드는 이미 주석이 제거되어 있는 상태이다(요세미티 기준)
mod_userdir.so 모듈을 LoadModule하는 코드도 주석 제거 해준다.
httpd-userdir.conf 파일을 Include하는 코드도 주석 제거해 준다.
그리고 마지막으로 위 스크린샷 처럼 /private/etc/apache2/users (/etc/apache2/users) 폴더에 계정명으로 된 conf파일 (username.conf) 를 생성해 준다. Guest.conf 파일을 복사해서 수정하는 경우 Guest 부분을 자신의 계정명으로 변경하고 권한 설정 부분을 Apache 2.4 버전에 맞도록 변경한다. (기존의 Guest.conf파일의 권한설정은 Apache 2.2 기준으로 되어 있어 동작하지 않는다 - 4, 5번째 줄 삭제 후 Require all granted 추가) 모든 변경이 완료되었으면 아파치를 재시작 한다.
자신의 홈 폴더에 Sites라는 폴더를 만들고 웹브라우저의 주소창에 localhost/~계정명 을 입력하면 위 스크린샷 처럼 apache의 기본 파일 Index를 볼 수 있다. (Sites라는 폴더 안에 .localized 라는 빈 파일을 생성해 놓으면 파인더에서는 사이트 라는 한글 이름으로 표시된다)
여기까지 하였으면 apache 웹서버 구동시키는 작업이 완료되었으며 다음 한가지 설정만 변경하여 apache에 php를 연동해 보자.
/private/etc/apache2/httpd.conf 파일을 다시 열고 libphp5.so 모듈을 LoadModule 하는 코드의 주석을 제거하고 apache를 재시작 한다.
Sites 폴더 밑에 위 스크린샷 처럼 php파일을 만들어서 웹브라우저에서 php파일이 정상적으로 표시되면 성공! 추가로 php의 설정을 변경하려면 /private/etc/php.ini.default 파일을 php.ini 파일로 파일명을 변경하고 설정 내용을 변경하면 된다.