정리하는 공간
리눅스) Apache 가상호스트 (SELinux 설정) 본문
가상호스트
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 컨텍스트 디렉터리,파일
'리눅스 기초' 카테고리의 다른 글
리눅스) 프록시 서버 [실습] (0) | 2022.05.12 |
---|---|
리눅스) 프록시 서버 구성 [이론] (0) | 2022.05.12 |
리눅스) Apache 인증 사용(Basic 인증, Digest인증) (0) | 2022.05.12 |
리눅스) SELinux (0) | 2022.05.12 |
리눅스) 웹 서버(아파치, html, perl, python) userdir (0) | 2022.05.12 |