- Linux Web Server는 다양하다. 그 중에서 Apache의 점유율이 가장 높다.
- 먼저, 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 주소를 입력하고 저장한다.
- 다시 문법을 검사하면 출력되지 않는다.
'IT > ㄴ Linux' 카테고리의 다른 글
[CentOS] Linux Apache에서 가상 호스트를 구성하여 다중 Web Site 구축하기 [ httpd.conf / vhost.conf] (0) | 2023.08.10 |
---|---|
[CentOS] Linux NGINX 기초 및 구축 [ /etc/nginx/nginx.conf ] (0) | 2023.08.10 |
[CentOS] Linux DNS PTR 조회해보기 [ /etc/named.rfc1912.zones] (0) | 2023.08.09 |
[CentOS] Linux 보조 DNS Server 구축 [/etc/named / slave] (0) | 2023.08.07 |
[CentOS] Linux DNS Server 정리 및 구축 [bind / Root Hint / hosts / resolv.conf] (0) | 2023.08.01 |