최초 작성일 : 2021-09-13 | 수정일 : 2021-09-13 | 조회수 : 635 |
userdir 활성화하기 or DocumentRoot 폴더 변경하기
보통은 위의 두 가지 방법으로 세팅을 하는 것 같다.
나는 이 중 userdir 활성화를 택하기로 했다.
userdir 활성화의 이점은 localhost/~username처럼 하위 링크를 얻을 수 있다는 것. 방법은 아래와 같다.
1. /private/etc/apache2/extra 디렉토리의 httpd-userdir.conf 파일을 편집
$ cd /private/etc/apache2/extra
$ sudo vi httpd-userdir.conf
-httpd-userdir.conf 파일에서 '# Include /private/etc/apache2/users/*.conf' 부분의 주석처리(# )를 삭제
마찬가지로 sudo 권한이라서 password 요청이 들어올 수 있다.
패스워드를 입력하면 vi 편집기가 뜬다.
vi 편집기에 익숙하지 않아서 조금 헤맸는데, 그래도 아래 링크 등을 참고하면 금방 적응할 수 있다.
coding-factory.tistory.com/505
coding-factory.tistory.com
마우스를 사용하는 시스템이 아니라서, 키보드로 지금 명령을 할지 입력을 할지를 지정해줘야 한다.
커서 이동은 방향키로도 가능하다.
처음 써본다면 esc, i, :만 기억하면 된다.
화살표키를 이용해서 편집할 곳으로 커서를 이동한 다음, 키보드 상에서 'i'키 를 누르면 화면 맨 아랫줄에
-- INSERT --
라는 표시가 뜬다.
그 상태에서는 텍스트 입력 및 수정이 가능하다.
수정이 끝났다면 esc를 누르고 나서, ':'를 누르자. (쉬프트도 눌러줘야 한다) 그러면 다시 화면 맨 아랫줄에
:
라는 표시가 뜰 것이다.
저장하고 종료할 거라면, 아래처럼 : 뒤에 wq를 입력하고 엔터를 누르면 된다.
:wq
다시 터미널 기존 위치로 돌아갈 것이다.
혹시 강제종료하고 싶다면 wq 대신에 q!를 입력하면 된다.
2. /private/etc/apache2 디렉토리의 httpd.conf 파일을 편집
내 경우에는 위의 경로에 httpd.conf 파일이 있었다.
이번에는 Atom으로 열어서, 우선 아래 두 줄의 주석처리(#)를 제거하고,
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
혹시 모를 ServerName 관련 오류를 피하기 위해, 주석을 제거하고 ServerName 설정을 변경하고 저장했다.
(Atom의 경우, 저장할 때 Atom Helper가 권한 관련하여 비밀번호를 요청할 수 있다.)
ServerName localhost
3. Sites 폴더 생성
localhost/~username 요청시 베이스로 사용할 디렉토리를 만드는 작업이다.
/Users/유저명 의 유저명 경로에 Sites 폴더를 만들면 된다.
나는 터미널을 이용했다.
$ cd ~
$ mkdir Sites
4. Sites 폴더에 접근 권한 주기
/private/etc/apache2/users 경로에 유저명.conf 파일을 만들어주는 작업이다.
Guest.conf 파일을 복사해서 내용만 수정해도 된다.
여기서 꽤 고전했다.
conf 파일의 내용은 여기를 참고해서 아래와 같이 작성했다.
<Directory '/Users/username/Sites/'>
Options Multiviews Indexes
Require all granted
</Directory>
첫번째 줄의 username을 내 계정명으로 변경한 상태로 저장하고, 아파치를 재시작 후 접속을 시도해보았더니

권한이 없어서 접속할 수 없다는 오류페이지. 흔히 말하는 403 에러인듯.
에러 로그를 찾아보니 이런 메시지가 뜬다.
cat /var/log/apache2/error_log # 에러 로그를 찍어보자
(13)Permission denied: AH00035: access to /~username denied (filesystem path '/Users/username/Sites') because search permissions are missing on a component of the path
구글의 도움을 받아 아래와 같은 해결법을 찾았다.
mytory.net
터미널로 이동해서 Sites 폴더에 권한 755를 부여했다.
$ cd ~
$ sudo chmod 755 Sites
755 권한은 소유자는 읽기, 쓰기, 실행이 가능하고, 그 외 사용자는 읽기, 실행이 가능한 타입.
여전히 Forbidden이다.
apple.stackexchange.com/questions/95660/how-to-fix-403-in-mac-os-x-built-in-apache/136941#136941
apple.stackexchange.com
httpd.conf 파일의 User 이름을 변경해서 해결할 수 있다고 한다.
User _www
해당 파일을 확인해보니 실제로 User명이 _www로 되어있다.
_www를 사용자명으로 변경했다.
그리고 해당 답변자가 추가로 조언해준 보안 이슈를 해결하고 나서
Listen 80
->
Listen 127.0.0.1:80
아파치를 재실행해본다.
$ sudo apachectl restart

http://localost/~username/index.html로 접속에 성공했다 결과는 성공!
와이파이 환경 내에서 접속하려면 위의 Listen 127.0.0.1:80 부분을 Listen 80으로 그대로 두어야 한다.