아파치 웹 서버의 개념
아파치 웹서버는 리눅스 기반의 오픈소스 웹서버 소프트웨어이다.
아파치는 고성능의 HTTP 서버이며, 안정성과 확장성(모듈), 호환성(다양한 운영체제 사용)이 매우 좋다.
모듈이라는 개념으로 수많은 기능을 추가할 수 있다.
아파치의 기본 구조와 모듈
- httpd
- 설정 파일
- 모듈
모듈
아파치의 주요 설정 파일
아파치의 메인 설정 파일인 httpd.conf의 설정요소
httpd.conf의 설정요소
- ServerRoot - Apache의 설치 디렉토리,
- Listen - 통신하는 특정 포트 설정
- LoadModule - 디렉토리 안 모듈 읽어들이고, 사용 가능한 모듈 목록 추가
- ServerAdmin - 서버 오류 발생 시 클라이언트로 전송하는 오류 메세지가 들어갈 이메일 주소 설정
- ServerName - 호스트 이름 및 포트 설정, 등록된 DNS 이름이 없으면 IP 주소 설정
- DocumentRoot "/usr/local/www" - 클라이언트 요청을 저장하는 디렉토리 설정
- DirectoryIndex index.html - 클라이언트가 서버 루트 경로 접근할때 보여줄 파일
port.conf - 포트 설정 파일
.htaccess 파일의 사용법
.htaccess 파일은 웹 서버 디렉토리를 설정한다. 즉, 웹 서버 설정을 개별적으로 지정할 수 있다.
이 파일은 주로 URL redirection, 인증, 접근 제한, 에러 페이지 설정 등 기능을 설정할 수 있다.
[Order, Allow, Deny 지시어]
클라이언트가 사용하는 호스트의 IP주소나 도메인에 의해 웹서버의 데이터에 대한 접근 통제한다.
Allow, Deny 지시자는 접속 허락과 차단할 수 있도록 지정한다. 동시에 사용할 경우에는 Order 지시어를 통해 설정한다.
-Order Allow, Deny - Allow지시자 먼저 검사하고 Deny 지시자가 검사한다. 접근을 기본적으로 차단한다.
-Order Deny, Allow - Deny지시자 먼저 검사하고 Allow 지시자를 검사한다. 접근을 기본적으로 허용한다.
- URL 리디렉션 및 재작성
RewriteEngine On
RewriteCOnd %{HTTP_HOST} ^olddomain.com$ [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/ [R=301,L]
- 접근 제어(192.168.1 IP 호스트 차단)
<Directory /usr/local/www>
Order Allow,Deny
Allow from all
Deny from 192.168.1
</Directory>
- AuthName "인증시도 문구" - 인증창에 뜰 내용
- AuthType Basic - 인증 방식(Basic/Digest)
- AuthUserFile /www/.htpasswd - 인증 적용 경로( .htaccess 인증요구, htpasswd 인증확인)
- Require user ID - 인증 허용할 user id
- ErrorDocument 401 "인증 실패시 문구" - 인증 실패시 문구
- # htpasswd -c .htpasswd ID - 최초 계정 ID 생성( 추가 생성시 -c 제거)
- Adding Password for ID
- New password: Password 입력
- Re-type new password: Password 재입력
아파치 성능 튜닝의 기초
httpd.conf 설정
- Timeout - 지정한 시간동안 클라이언트가 응답이 없을 경우, 세션 종료
Timeout 60
- KeepAlive - 지속적인 연결 허용 여부 설정
KeepAlive on
- MaxKeepAliveRequests - 허용할 최대 요청 수 지정, 성능 높이려면 높게 설정 권장, 무제한은 0으로 설정
MaxKeepAliveRequests 100
아파치 메모리 사용량 측정
ps aux | grep apache2 | awk '(print $6)' | awk '{total = total + $1} END {print total/1024}'
// 아파치의 메모리 사용량
ps aux | grep httpd | wc -1
// 아파치 프로세스 개수
netstat -nta | grep : 80.*ESTABLISHED | wc -1
//처치 클라이언트 수
메모리 사용량을 프로세스 개수로 나누면 평균 메모리 사용량을 알 수 있다.
도전
아파치와 Nginx의 차이점 이해하기
Apache | Nginx | |
설계 아키텍처 | 프로세스 기반 접근 방식(하나의 스레드가 하나의 요청 처리), 멀티 스레드 방식 | 이벤트 중심 접근 방식(하나의 스레드가 여러 요청 처리), 비동기 방식 |
OS 지원 | 모든 Unix 계열 지원, Windows 모두 지원 | 거의 모든 Unix 계열 지원, Windows 부분 지원 |
유연성 | 동적 모듈과 로딩 지원 | 동적 모듈과 로딩 지원 x |
특징 | 안정성, 확장성, 호환성 우세 | 성능 우세 |
Tomcat의 대해 이해하기
Tomcat은 JAVA 기반의 웹 어플리케이션을 위한 오픈 소스 서블릿 컨테이너이자 웹 서버이다.
JAVA 서블릿과 JSP(JavaServer Pages)를 지원하여 동적인 웹 컨턴츠를 생성하고 처리 가능하다.
서블릿 : 클라이언트의 요청을 처리하고, 그 결과를 반환하는 자바 프로그램
JSP : HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구
[Tomcat의 특징]
- 경량화된 서버 - 경량화된 설계로 서버를 가볍게 빠르게 동작 가능
- 호환성 - 다양한 운영체제 구동 가능
- 보안성 - SSL/TLS 암호화, 사용자 인증 및 권한 관리, 클러스터링 등 보안성이 좋음
- 개발과 배포 용이성 - 대부분의 기능을 개발하고 배포
apache 로컬환경 or 클라우드서버 에서 설치 후 실습해보기
일단 apache를 Linux 환경에서 설치하여 실행해보겠다.
sudo apt-get install apache2
sudo apt-get update apache2
sudo apt-get upgrade apache2
sudo systemctl start apache2 // apache 서버 시작
sudo systemctl stop apache2 // apache서버 종료
sudo systemctl status apache2 // apache 상태 확인
apache 실행하면 http://localhost를 치면 따로 화면이 나오는데 나는 딱히 안나와 찾아보니
이 홈페이지 내용을 보면 위 화면에 보이는 html 파일은 /var/www/html/index.html에 위치하며 변경할 수 있다고 말한다.
Documentroot가 어디로 설정하는지 확인하려 000-default.conf에 확인하였다.
그러면 이제 /var/www/html에 들어있는 파일들이 클라이언트가 요청하면 주는 파일이겠다 생각하였다.
그래서 이제 DirectoryIndex를 찾아서 어떻게 주는지 확인하려고 찾아보았다.
찾은 결과로 /etc/apache2/mods-enabled/dir.conf에 있는 것을 확인하였다.
위 사진을 보아 어떤 파일을 클라이언트에게 주는지 확인할 수 있다.
이를 통해서 내가 html파일과 php파일을 /var/www/html에 넣은 뒤 dir.conf에 설정하면 localhost를 치면 이제 내 html이 나올 수 있겠다는 생각할 수 있게 되었다.
'web hacking(Knockon Bootcamp)' 카테고리의 다른 글
[2주차 TIL] KnockOn Bootcamp PHP (0) | 2024.12.16 |
---|---|
[2주차 TIL] KnockOn Bootcamp MYSQL (0) | 2024.12.16 |
[2주차 TIL] KnockOn Bootcamp JavaScript (0) | 2024.12.13 |
[2주차 TIL] KnockOn Bootcamp HTML 기본 태그 (0) | 2024.12.11 |
[1주차 TIL] KnockOn Bootcamp HTML, CSS, JS (1) | 2024.12.08 |