웹 서버
웹 클라이언트로부터 HTTP 요청 받아 웹 문서를 전달하는 역할을 수행
웹 서버 프로그램에는 아파치 웹 서버, Ngix, 구글의 GWS, 마이크로소프트 IIS 등이 있다.
(기출) 가벼움과 높은 성능을 목표로 하는 웹 서버 프로그램이다. 리버스 프록시, 로드밸런서, HTTP Cache 기능을 제공한다. => NGINX
웹 문서(HTML 문서)
웹 브라우저
웹 서버와 통신하며 HTML 문서나 파일을 연동하고 출력하는 응용프로그램이다.
웹 서버와 HTTP 프로토콜로 통신하고, 웹 페이지를 URL로 접근한다.
(기출) 리눅스에서는 firefox, opera, chrome 등이 있다. (리눅스에서 X => 사파리(애플), 익스플로러(마이크로소프트))
웹 브라우저를 HTTP 클라이언트, 웹 서버를 HTTP 서버라고 한다.
HTTP 클라이언트는 HTTP 서버에 요청방식(HTTP method), URL, 프로토콜 버전 등을 전송하고 HTTP 서버는 요구에 따라 데이터와 상태코드 등으로 응답한다.
GET: 서버로부터 자료 가져옴
HEAD: HTTP 헤드 정보만 가져옴
POST: 서버에 정보 저장
PUT: 서버에 자료 올린다.(수정)
DELETE
telnet 명령으로 다른 서버에 접속한 후 GET / 입력하면 해당 웹 서버의 정보를 알 수 있다.
HTTP 서버는 요청에 대한 상태코드를 전송한다.
2xx: Successful
3xx: redirection
4xx: Client Error
401: Unauthorized
404: Not Found
5xx: Server Error
아파치는 1. 무료 공개 소프트웨어 2. 리눅스와 유닉스 계열 뿐만아니라 다양한 OS 지원한다.
리눅스에서 웹 서버 운영하려면 Apache HTTP 서버를 설치하면 된다. 리눅스에는 PHP라는 웹 프로그래밍 언어와 MySQL 데이터베이스 연계해서 사용하는데 이 조합을 LAMP(linux,apache,mysql,php)라고도 부른다.
아파치 웹 서버는 HTML 문서를 보여준다. 아파치 서버에서 PHP 문서가 해석할 수 있도록 장착된 것을 모듈이라 한다.
아파치에 PHP를 모듈로 장착하는 방법 2가지가 있다.
(1) 정적모듈: PHP가 아파치에 완전히 고정 => 속도 빠르지만 수정시 둘 다 다시 설치
(2) 동적모듈: DSO(dynamic shared object)라 하는데 사용자의 요청이 있을때 해당 프로세스에 포함되는 방식 => 자원의 효율성 up
=> 아파치 2.0 이후에는 오직 동적 모듈 방식인 DSO 방식으로만 컴파일해 설치한다.
아파치 2.x 정리
무료 공개 소프트웨어, 리눅스와 유닉스 모두 지원, 동적 모듈 방식(DSO), 멀티스레딩 지원, 하이브리드 웹 서버를 표방
아파치 1.3과 큰 차이점은 멀티스레딩을 지원한다. 1.3은 클라이언트 요청 하나에 하나의 프로세스가 담당했다.
2.x버전에는 스레드가 도입되어 스레드가 하나의 프로세스가 다수의 클라이언트 요청을 처리할 수 있게 하였다. => MPM(multi processing module)방식
MPM은 다양한 모듈을 제공하는데 현재 가장 많이 사용하는 2가지 방식
(1) prefork: 각 요청에 프로세스가 매핑된다. 부모 프로세스가 클라이언트 요청이 들어올 경우 대기하다가 자식 프로세스 생성 여부 등을 관리
(2) worker: 초기에 시작하는 프로세스 개수 지정, 페이지 요청 들어오면 스레드로 처리한다. 프로세스당 처리하는 스레드 개수 지정하고 초과하면 새로운 자식 프로세스를 생성한다.
rpm -qi httpd로 웹 서버 패키지 Apache httpd 확인
yum install httpd 명령으로 패키지 설치
[웹 서버 구축 절차]
(1) 아파치 웹 서버의 환경 설정 파일 /etc/httpd/conf/httpd.conf에 도메인이나 IP 주소 설정
(2) 웹 문서를 저장할 디렉터리 확인
필요에 따라 가상 도메인 설정
(3) 웹 문서 만들기
(4) 웹 데몬을 구동
아파치의 웹 서버의 주 환경 설정파일
| 이름 | 역할 | 예 |
|---|---|---|
| ServerName | 가장 먼저 설정해야 한다. 웹 서버의 도메인명이나 IP주소를 기입 도메인명:포트번호 형식 | ServerName www.example.com:80 |
| DocumentRoot | 웹 문서를 저장하는 디렉터리 | DocumentRoot "/var/www/html" |
| DirectoryRoot | 웹 문서 디렉터리에서 가장 먼저 인식되는 파일을 지정 | DirectoryRoot index.html 첫 페이지는 index.html |
웹 문서가 저장되는 디렉터리 /var/www/html으로 이동해 vi 편집기로 index.html 문서를 만든다.
필수 작업은 아니다. 가상 도메인을 지정했거나 도메인 기반으로 실습하려면 /etc/hosts에 등록하면 된다.
웹 서버 시작하기 systemctl start httpd.service
웹 서버 동작과 관련 메시지 systemctl -l status httpd.service 오류 및 성공 관련 정보 자세히
ps aux | grep httpd 웹 서버 프로세스 확인
웹 서버 관련 설정 변경시 데몬 재시작 systemctl restart httpd.service
부팅시 웹 서버 활성화 systemctl enable httpd.service