Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

정리하는 공간

리눅스) Apache 가상호스트 (SELinux 설정) 본문

리눅스 기초

리눅스) Apache 가상호스트 (SELinux 설정)

개구리집 2022. 5. 12. 10:23
반응형
가상호스트

IP 기반 가상호스트 방식

 

이름 기반 가상호스트 방식

 

포트기반 가상호스트 방식

 

먼저 IP 기반 가상호스트 방식을 먼저하고 추후에 수정

 

 

IP 기반 가상호스트

 

[NET 추가 설정]

 

임의의 NET을 추가해주고 위에 처럼 IP주소를 설정해준다.

 

 

ifconfig로 인터페이스 2개가 정상 작동하는지 확인

 

 

[가상호스트 환경설정파일 추가]

 

/etc/httpd/conf.d/vhost.conf

 

위 경로에 가상호스트 설정을 위한 파일을 만들어 준다.(httpd.conf에 만들어도 되지만 편의상)

 

위에 처럼 입력해준다.

 

여기서 새로 생긴 경로들은

 

/vhost/heong/www   문서 주 경로(웹문서 저장소)

 

/vhost/jeong/logs/error_log   에러 로그 경로

 

/vhost/jeong/logs/access_log  접근 로그 경로

 

위 경로들을 잘 기억해둔다. 문제가 생기게 될 경로들이다.

 

위 사진처럼 해당 경로에 전에 없던 logs, www디렉터리를 같이 만들어준다.

 

vhost 아래 디렉터리, 파일들의 권한을 755로 한 번에 바꿔준다.

반응형

Tip

mkdir -p 

디렉터리 이동 없이 해당 디렉터리 하위까지 디렉터리를 생성해준다.

mkdir -p /a/b : b디렉터리가 없었다면 a로 이동 없이 생성 가능

 

chmod -R

해당 디렉터리 아래 디렉터리, 파일의 권한도 모두 변경

 

 

이후 apachectl configtset를 친다면 예상했던 오류가 나온다.

 

SELinux 문제일 것이다.

 

[SELinux 보안 설정]

 

우선 SELinux 문제인지 확인하기 위해

 

getenforce 을 입력하고 현재 SELinux 모드를 확인한다.

 

enforcing 모드라면 setenforce 0 을 입력하고 permissive 모드에 들어가서 apachectl configest를 입력한다.

 

전과 다르게 아무 에러가 없다면 SELinux 보안 문제인 것이다.

 

다시 setenforce 1 을 입력해 enforcing 모드로 진입해서 방금 생성했던 vhost 들의 컨텍스트를 확인해 본다.

 

 

ls -dZ

 

기존에 사용하던 /var/www/html 의 사용자 값과 컨텍스트 값이 방금 생성한 /vhost와 다른 걸 볼 수 있다.

 

바꿔줘야 한다.

 

chcon -R -u system_u -t httpd_sys_content_t /vhost

 

chang context 컨텍스트를 바꾸는 명령어다.

 

-R 옵션은 vhost 하위 디렉터리까지 변경 값을 적용해준다.

 

-u 사용자

 

-t 컨텍스트 

 

사용자와 컨텍스트 필드가 다르기 때문에 이렇게 입력한다.

값이 변한 걸 볼 수 있다.

 

 

이렇게 값을 줘도 systemctl restart httpd 재가동을 하면 에러가 또 뜬다. 

 

journalctl -xe 로 에러 사항을 확인해 보면 위에서 만들었던

 

/vhost/jeong/logs 디렉터리의 값이 또 걸리기 때문이다.

 

 

 

그래서 위 사진처럼 /etc/httpd/conf.d/vhost.conf 에 두 문구를 주석처리하면 잘 작동이 되지만

 

사용을 해야하기 때문에 값을 변경해준다.

 

 

 

기존에 사용하던 값
수정해야할 경로

 

-R 옵션으로 하위 디렉터리까지 값이 잘 변경 되었지만

 

기존에 사용하던 /var/log/httpd 의 컨텍스트 값이 다르다. 똑같이 변경해주면 된다.

 

chcon -R -t httpd_log_t /vhost/jeong/logs

 

chcon -R -u system_u -t httpd_log_t /vhost/jeong/logs

 

사용자는 같았기 때문에 굳이 넣지 않아도 되지만 혹시모르니 넣어준다.

 

 

apachectl configest 입력 후 systemctl restart httpd 를 넣어주면 잘 작동 될 것이다.

 

 

이제 마지막으로 해당 경로에 html 파일을 복사해준다.

 

여기까지 마쳤다면 웹브라우져에

 

http://192.168.111.100 입력!

 

가상호스트 웹 페이지가 잘 열릴 것이다.

 

 

 

 

결론

ls -dZ

사용자, 컨텍스트 확인 후 불 일치 시

chcon -R -u 사용자 -t 컨텍스트 디렉터리,파일
LIST
Comments