[CentOS] Linux Apache 정리 및 구축[/etc/httpd/conf/httpd.conf ]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux

[CentOS] Linux Apache 정리 및 구축[/etc/httpd/conf/httpd.conf ]

TIENE 2023. 8. 9. 08:10
반응형

- Linux Web Server는 다양하다. 그 중에서 Apache의 점유율이 가장 높다.

출처 : https://ko.hostadvice.com/marketshare/server/

 

- 먼저, Apache Web Server의 관련 파일과 구축 방법을 살펴보고 추후에 다른 Web Server도 살펴보려고 한다.

 

항목 설명
<Directory>

/etc/httpd/ Linux 체계에서 Apache HTTP Server를 위한 주요 설정 파일과 관련 디렉토리를 포함한 디렉토리

conf/ 
 Apache Server를 위한
주요 설정 파일을 담고 있는 디렉토리
- httpd.conf: Apache 주요 설정 파일
- extra/: 다양한 모듈을 위한 추가 설정 파일을 포함하고 있는 서브 디렉토리
- conf.d/: .conf으로 끝나는 추가 설정 파일을 보관할 수 있는 디렉토리. 메인 httpd.conf 파일도 포함할 수 있다.
logs/ Apache Server에서 생성되는 Log 파일 보관 디렉토리 - access_log: 들어오는 HTTP 요청 Log 파일
error_log: Error 메시지와 서버 관련 이슈 Log 파일
conf.modules.d/ 로드된 모듈을 위한 구성 파일 보관 디렉토리
modules/
- 서버의 성능을 확장하는 Apache 모듈 파일 보관 디렉토리
httpd.conf 파일에 있는 LoadModule 지시어를 사용하여 로드된 Dynamic Shared Object (동적 공유 객체)  모듈 저장 디렉토리

conf.d/
(if present)
메인 구성에 포함하길 원하는 추가 구성 파일 보관 디렉토리
가상 호스트, 보안 설정 그 밖의 설정을 위한 커스텀 설정을 정리하고 포함하기 위해 이 디렉토리를 사용한다.
ssl/ 
(if configured for SSL/TLS):
- 안전한 연결을 위하여 키와 인증서를 포함한 SSL/TLS 관련 파일들을 포함하는 디렉터리
sites-available/ and sites-enabled/ 
(Ubuntu-based systems):

모든 배포판에서 기본적으로 나타나지 않을 수 있는 디렉토리다
가상 호스트 구성을 사용하기 위해 사용되는데 특히, 우분투 체계에서 사용된다.

 

 

/etc/httpd/conf/httpd.conf
구별 항목 설명
Global Configuration ServerRoot Web Server Configuration 파일이 위치한 디렉토리
Listen Web Server가 Incoming Connections에 대해
대기하고 있는 IP 와 Port 설정
Server Identity 
and 
Contact Information
ServerAdmin 서버 관리자의 E-mail 주소
ServerName 서버의 FQDN
Server Behavior 
and 
Performance
Timeout 특정 이벤트에 대한 최대 대기 시간
KeepAlive 영구 연결 기능 On / Off
MaxKeepAliveRequests 하나의 지속적인 연결에서 허가된 요청의 최대 수
KeepAliveTimeout 지속적인 연결 상태에서 서버가 다음 요청을 기다리는 시간
Document Root 
and 
Directories
DocumentRoot Web Contents가 저장된 메인 디렉토리
<Directory> blocks 사용 권한을 설정하고 접근 제어를 하는데,
자주 사용되는 디렉토리별 설정을 정의
Logging ErrorLog Error Log 파일 위치 지정
CustomLog Error Log 파일 위치와 포맷 지지정
Modules LoadModule Apache 모듈을 로드하여, 서버 성능 확장
Virtual Hosts NameVirtualHost IP 주소나 호스트 이름을 사용하여
가상 호스트를 구별하는 방법을 설정
<VirtualHost> blocks `DocumentRoot`, `ServerName`, 그리고 다른 항목을 포함하여 특정한 가상 호스트에 대한 설정
Security 
and 
Access Control
ServerTokens Server 응답 헤더에 어떤 정보를 포함할 것인지 설정
ServerSignature Apache가 서버 생성 문서에 추가하는 바닥글 제어
DirectoryIndex 디렉토리가 요청될 때, 제공할 기본 파일 설정
Authentication and Authorization 기본 인증 혹은 다이제스트 인증과 같은 인증 메커니즘과
<Location>혹은 <Directory> 블록을 사용하는 접근 제어 설정 옵션

MIME Types 
and 
Handling
AddType or AddHandler Server가 얼마나 다양한 파일 종류를 핸들링할 수 있는지 정의 

 

 

 

[Linux Apache Server 정리 및 구축]


1. Apache 설치 및 파일 수정하기

yum -y install httpd

- Web Server Service 인 httpd를 설치한다.

 

- 설치 후, 관련 디렉토리로 이동한다.

/etc/httpd/conf/httpd.conf

- 항목별 설명은 위의 내용을 참고하면된다.

- 간단하게 Web Server를 구축하고 접속해보기 위해서 아래의 내용을 수정한다.

- DocumentRoot는 Web Server의 Main 디렉토리이며, /www라는 디렉토리에 주요 Web Contents를 저장하여 구동할 것이다.

- <Directory> 에서는 DocumnetRoot에서 설정한 Main 디렉토리에 대한 권한을 부여한다.

- 관련 오류도 살펴보기 위해서, 아래와 같이 입력한다.

[root@Linux02 ~]# mkdir /www
[root@Linux02 ~]# cd /www

 

- DirectoryIndex는 Web Site로 접속할 때, 제공하는 기본 파일이다.

 

- 다음과 같이 여러 개의 파일을 생성하여 나열하면, index.html 파일부터 제공한다.

- 만약, index.html 파일이 없다면, 다음에 나열된 파일을 제공한다.

[root@Linux02 www]# echo Welcome To Webserver > start.html

 

systemctl start httpd

- Web Server를 시작하고 접속해본다.

- Testing Page가 출력되는데, 위에서 <Directory> 에서 지정한 디렉토리 권한이 잘못된 것이다.

- 다시, /etc/httpd/conf/httpd.conf 을 열어서 수정해야한다.

 

- /www라는 곳이 Web Server의 주요 디렉토리인데, 그 위의 디렉토리(상위디렉토리)에 권한을 부여해야한다.

- 따라서, 최상위 디렉토리를 입력하여 권한을 부여하고 다시 접속해본다.

 

- 정상적으로 접속이 되었다.


2. Apache Log 확인

more /etc/httpd/conf/httpd.conf

- 메인 설정 파일을 열어서 182번째의 항목을 보면 Error Log 관련 위치를 확인할 수 있다.

- 위치를 변경할 수 있으며, Error Log 파일을 열어서 확인할 수 있다.

 

/etc/httpd/logs

- 위의 디렉토리로 이동하면, 접근 Log과 Error Log가  저장되어있다.

 

/etc/httpd/logs/access_log

- 접근 성공한 Log 파일을 열어서 확인해보면, 위에서 접속했을 때의 기록이 남아있다.

 

/etc/httpd/logs/error_log

- Error를 출력해보기 위해서 다음의 테스트를 진행한다.

 

- 다음과 같이 권한을 부여하고, tiene.html 으로 접속할 때의 출력 상태를 확인해본다.

- 접근이 불가하다는 Error Log가 출력된다.

[root@Linux02 logs]# cd /www
[root@Linux02 www]# echo Error > tiene.html
[root@Linux02 www]# chmod 700 tiene.html

 

tail -5 /etc/httpd/logs/error_log

- 파일 허가권 Error가 발생하여 접근이 불가하다는 Error Log를 확인 할 수 있다.

 

chmod 755 tiene.html
rm -rf start.html

- DirectoryIndex 에서 지정한 start.html를 지우고, tiene.html에 755권한을 부여한다.

- 이제는, index.html파일이 없기 때문에, 다음으로 지정된 tiene.html이 기본 Page으로 출력된다.

 

- DocumentRoot로 지정된 디렉토리에 없는 파일로 접속하면, Not Found Error가 발생한다.

- 이 내용은 error_log 파일에 저장되지 않는다.

 

 

 

 


3. Apache 메인 파일 문법 검사

httpd -t

- 위의 명령어를 사용하면, 메인 파일의 문법 오류를 발견할 수 있다.

- 메인 파일에 사소한 오타를 내고 명령어를 입력했고, syntax error가 발생했으며, 위치를 친절하게 알려준다.

 

- 오타를 수정하면 Error 같은 기다란 Log 가 출력된다.

- IPv6 주소를 사용하여 해당 서버의 FQDN을 지정할 수 없다는 내용인데, 메인 파일을 열어서 수정하면 출력을 막을 수 있다. 아래의 내용이 출력되어도 Web Server 구동의 지장은 없다.

 

vi /etc/httpd/conf/httpd.conf

- 95번째의 항목을 Loopback 주소를 입력하고 저장한다.

 

- 다시 문법을 검사하면 출력되지 않는다.


 

반응형