centos 7 + apache httpd 2.4 로 도커를 구성해 컨테이너 실행시 아파치 웹서버가 기본 설정 동작하도록 하였다.
테스트로 http://localhost:10000 로 접속하니 다음과 같은 에러가 발생하였다.
참고로
로컬 10000 포트와 도커 컨테이너의 80 포트를 연결하였고,
/home/ysoftman/httpd 에 apache httpd 가 구동중이다.
Forbidden
You don't have permission to access / on this server.
도커 컨테이너의 apache httpd error_log 에는 다음과 같이 기록되었다.
[core:error] [pid 56] (13)Permission denied: [client 172.17.0.1:40368] AH00035: access to / denied (filesystem path '/home/
ysoftman/httpd') because search permissions are missing on a component of the path
문제 원인은 httpd 가 실행되고 있는 경로(/home/ysoftman/httpd)가 httpd.conf 에서 다음과 같이 기본 daemon 으로는 실행(접근)할 수 있는 권한이 없어서였다.
apache httpd 는 httpd.conf 에서 설정된 User/Group 의 권한으로 실행되는데
내가 만든 계정은 user(ysoftman) group(programmer)로 /home/ysoftman 에서 daemon 계정은 실행할 수 있는 권한이 없다.
namei 로 DocumentRoot 경로를 확인해보면 다음과 같이 경로상의 모든 디렉토리에 x 권한이 있지만 ysoftman 에만 설정되어 있지 않았다.
참고로 namei 프로그램은 경로상의 모든 이름(디렉토리,파일)에 각각에 대해 -m(mode) -o(owner) -l(list format) 로 옵션으로 정보를 보여준다.
namei -mol /home/ysoftman/httpd/htdocs/
f: /home/ysoftman/httpd/htdocs/
drwxr-xr-x root root /
drwxr-xr-x root root home
drwx------ ysoftman programmer ysoftman
drwxr-xr-x ysoftman programmer httpd
drwxr-xr-x ysoftman programmer htdocs
[해결방법1]
httpd.conf 의 User Group 을 현재 httpd 가 실행되는 /home/ysoftman 에 맞게 변경해주면 된다.
User ysoftman
Group programmer
[해결방법2]
만약 User/Group 을 daemon 을 그대로 사용한다면 다음과 같이 실행권한을 /home/ysoftman 에서 모든 사용자가 실행할 수있도록 실행 권한을 추가하면 된다.
chmod +x /home/ysoftman
확인해보자
namei -mol /home/ysoftman/httpd/htdocs
f: /home/ysoftman/httpd/htdocs
drwxr-xr-x root root /
drwxr-xr-x root root home
drwx--x--x ysoftman programmer ysoftman
drwxr-xr-x ysoftman programmer httpd
drwxr-xr-x ysoftman programmer htdocs
해결방법1 또는 2를 적용하고 http://localhost:10000 로 접속하면