book.naver.com/bookdb/book_detail.nhn?bid=16317946
*해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다.
상세한 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다.
웹 서버 종류
- Apache : 아파치 재단이 주도하는 오픈소스 웹 서버. 사용자의 요청에 따라 프로세스나 쓰레드를 생성해 처리한다.
- IIS : MS가 개발하고 관리하는 웹 서버. MS ASP를 지원하며, GUI 기반의 관리 콘솔을 사용 가능하다.
- Nginx : 비동기 이벤트 방식으로 동작. 로드밸런스, HTTP 캐시, 리버스 프록시 기능 제고
- GWS : 구글이 제공하는 웹 서버
웹 브라우저 종류
- 파이어폭스 : 모질라에서 개발한 브라우저. 리눅스, 윈도우, MAC에서 동작. 개코 엔진을 기반으로 HTML 해석
- 크롬 : 구글에서 개발한 웹 브라우저. 웹킷을 기반으로 HTML 해석
- 오페라 : 탭 브라우징 등을 최초로 선보인 브라우저
- 인터넷 익스플로어 : MS 엣지는 HTML5 사용
- 사파리 : MAC
웹의 동작 원리
클라이언트 | <= | 방화벽 | => | 웹 서버 | <=> | WAS | <=> | DB 서버 |
- 방화벽 : 네트워크를 이용한 공격에서 내부망과 내부 시스템 보호
- 웹 서버 : HTTP 프로토콜을 이용해 클라이언트의 요청을 처리하고 응답.
- 웹 응용 서버(WAS) : 웹 기반 서비스의 응용 역할. 서버는 사용자에 응답하는 기능, 얘는 복잡한 로직 처리 및 기능 확장
- DB 서버 : 서비스를 위한 주요 데이터를 저장하고 관리
- 사용자가 URL을 웹 브라우저에 입력한다.
- DNS 조회 기능을 통해 IP 주소로 변환한다.
- TCP의 3way-handshaking 연결로 웹 서버에 연결한다. (일반적으로 80포트, HTTPS면 443)
- HTTP 프로토콜로 웹 서버에 요청
- 웹 서버는 WAS를 통해 기능을 지시하고, WAS는 DB 서버와 연동하여 기능 처리.
- 웹 서버가 최종 정보를 클라이언트에 응답(Response)
- TCP의 4way-handshaking 로 연결 종료
HTTP 프로토콜
- 클라이언트와 서버 사이에 데이터를 요청하고 전송하기 위한 표준 규약
- GET : URL 형식으로 리소스 데이터 요청
- HEAD : 리소스의 헤더 정보 요청
- POST : 요청할 내용을 바디에 담아 서버에 전송 (폼을 이용한 데이터 전송)
- PUT : 새로운 문서를 만들거나 기존 정보 갱신
- DELETE : 웹의 리소스를 삭제
- CONNECT : 피록시 같은 중간 서버에 접속
- TRACE : 요청한 리소스가 수신되는 경로 확인
- OPTIONS : 웹 서버가 제공하는 메소드 확인
HTTP 응답 코드
- 1XX : 조건부 응답, 정보 교환 / 2XX 성공 / 3XX 리다이렉션 / 4XX 요청요류 / 5XX 서버오류
- 200 : ok (오류없이 성공)
- 300 : Multiple Choices
- 301 : Moved Permanently
- 302 : Moved Temporary
- 400 : Bad Request
- 401 : Unauthorized
- 403 : Forbidden
- 404 : Not Found
- 405 : Method Not Allowed
- 408 : Request Timeout
- 500 : Internel Server Error
- 503 : Server Unavailable
HTTP 헤더 구조
- HTTP 프로토콜은 헤더(부가 정보)와 바디(실제 데이터)로 구성된다.
- 공통 헤더 항목
- Date : HTTP를 생성한 일시
- Connection : Keep-Alive 설정
- Cache-Control : Cache 속성 설정
- Content-Type : 콘텐츠 종류 지정
- Content-Encoding : 데이터 압축 방식
- Content-Length : 전송할 데이터 크기
*Cache-Control
no-store (저장 안함) / no-cache (서버에 확인 후 캐시 사용) / must-revalidate(만료된 캐시 확인)
public (공유 캐시에 저장) / private (특정 사용자 환경에서만 저장) / max-age (유효기간 명시)
- 요청 헤더의 주요 항목
- Method, URL, HTTP 버전
- Accept : 서버로부터 전송받고자 하는 콘텐츠의 마임 타입 지정
- If-Modified-Since : 지정한 날자 이후로 변경된 경우만 수신
- User-Agent : 웹 브라우저의 정보 지정
- Cookie : 쿠키를 키와 값의 쌍으로 전송 (세션 아이디 포함)
- Host : 대상 서버의 도메인 이름
- Origin : 요청이 어느 주소에서 시작되었는가
- Referer : 이번 요청 이전의 페이지 주소
- 응답 헤더의 주요 항목
- HTTP 버전, 응답 코드
- Server : 서버 정보
- Location : 응답코드 301, 302 리다이렉션 상태에서의 위치 정보
- Set-Cookie : 클라이언트에 저장할 쿠키 정보 지정
- Expires : 해당 리소스의 유효 일시
- Allow : 응답코드 405 상태에서 서버가 제공할 수 있는 HTTP 메서드 지정
아파치 웹 서버
- 오픈소스로 제공되는 웹 서버로, 다양한 OS에서 사용이 가능하다.
- 아파치 1.X는 프로세스 기반, 2.X는 MPM으로 프로세스와 쓰레드 사용.
- 아파치 2.X 부터는 prefork 방식과 worker의 두 가지 방식으로 클라이언트의 요청을 자식 프로세스들에 할당한다.
- prefork : 하나의 프로세스를 복제하여 미리 동작시킨 후 클라이언트의 요청 처리. 하나의 프로세스가 하나의 쓰레드.
- worker : 초기에 구동할 프로세스의 수를 지정해, 초과시 새로운 프로세스 생성. 하나의 프로세스가 여러 개의 쓰레드.
- 아파치 웹 서버는 다양한 모듈을 적재할 수 있으며, 정적 적재와 동적 적재가 있는데 2.x 버전은 동적 적재만 지원.
- 정적 적재 : 필요한 모듈을 웹 서버와 함께 컴파일 한 후 시작시 동시에 적재
- 동적 적재 : 웹 서버를 실행한 후, 사용자의 요청이 있을 경우에만 모듈을 적재
*LAMP : Linux+Apache+MySQL(MariaDB)+PHP 를 함께 사용해 다양한 서비스를 동적으로 제공
PHP (PHP-Hypertext-Preprocessor)
- 웹 서비스의 로직을 구현하고 동적으로 웹 페이지를 생성하는 언어.
- 서버에서 실행되는 언어로, DSO(동적 적재 방식)으로 동작한다.
*아파치와 PHP는 configure->make->make install 방식으로 소스코드를 컴파일 및 설치한다.
*MySQL은 cmake->make instrall 방식으로 소스코드를 컴파일 및 설치한다.
*일반적으로 아파치->MySQL(MariaDB)->PHP 순으로 설치한다.
설치 방법
아파치 웹 서버의 주요 디렉터리
- 소스코드 컴파일 방식으로 아파치 웹 서버를 설치하면 /usr/local/apache 에 파일이 설치된다.
- 하위 경로
bin | 실행 및 관리용 프로그램 | build | 컴파일에 사용한 스크립트 파일 저장 |
cgi-bin | CGI 스크립트 파일 저장 | conf | 아파치의 환경설정 파일 저장 |
error | HTTP 에러 발생시 표시될 메시지 문서 저장 | htdocs | HTML 등 웹 페이지가 저장 |
icons | 아파치 웹 서버의 이미지 저장 | includes | 헤더 파일 저장 |
logs | 로그 파일 저장 | man | Manual 파일 저장 |
manual | HTML 파일 형식으로 매뉴얼 저장 | modules | 아파치가 사용하는 모듈 파일 저장 |
- 패치지 관리자로 설치하면 리눅스 시스템의 디렉터리 특징에 따라 파일들이 저장된다.
/var/www/html | HTML 등 웹 페이지가 저장 | /var/www/cgi-bin | CGI 스크립트 파일 저장 |
/var/www/error | 에러시 표시할 메시지 | /var/www/icons | 서버사 사용하는 이미지 |
/var/www/httpd | 웹 서버의 웹 로그 저장 | /var/www/conf | 환경설정 파일 저장 |
/var/www/conf.d | 추가 설정 파일 저장 | /usr/lib64/httpd/modules | 모듈 파일 저장 |
*httpd 밑에는 방문 정보인 access_log와 에러 정보인 error_log 가 저장된다.
아파치 웹 서버의 실행 파일 목록
- 패키지 관리자로 설치한 경우 /usr/bin 혹은 /usr/sbin에 저장된다.
ab | 벤치마킹 도구 | apachectl | 서버 실행, 종료, 재시작 |
htpasswd | 암호 인증이 필요한 웹의 아이디와 암호 생성 | htdigest | 사용자 인증 파일 생성, 업데이트 |
httpd | 웹 서버의 데몬 프로그램 | logresolve | 로그 파일에서 ip 주소를 호스트네임으로 변환 |
rotatelogs | 로그 로테이트를 위한 도구 |
*httpd 명령 : httpd [옵션] [파일 이름]
-t 문법적 오류 점검 / -f : 특정 환경설정 파일로 데몬 실행 / -S : 설정된 가상 호스트 목록 / -l : 컴파일된 모듈의 목록
*apachectl [명령]
help : 도움말 / start,stop,restart / configtest : httpd.conf의 문법적 오류 점검 /
graceful : 클라이언트의 접속을 유지하며 httpd.conf 재구성 / status, fullstatus : 웹 서버의 상태 출력
아파치 웹 서버의 환경설정 파일
httpd.conf | 기본 설정 파일 |
httpd-mpm.conf | MPM 관련 설정 파일 |
httpd-multilang-errordoc.conf | 에러 처리에 대한 다국어 문서 설정 파일 |
httpd-autoindex.conf | 디렉터리 목록의 표시 방법 설정 |
httpd-userdir.conf | 개인 사용자의 홈 디렉터리 설정 |
httpd-info.conf | 서버의 실행 상태 모니터링 |
httpd-vhosts.conf | 버추얼 호스트 설정 파일 |
httpd-dav.conf | WebDAV를 설정하는 파일 |
httpd-default.conf | 웹 서버의 기본 설정값을 설정하는 파일 |
httpd-languages.conf | 웹 문서의 언어 설정 파일 |
httpd-manual.conf | 아파치 메뉴얼 문서 지원 파일 |
httpd-ssl.conf | SSL 지원을 위한 파일 |
*WebDAV : 웹 서버에서 파일 목록의 조회, 수정, 삭제를 수행하는 프로토콜
*설정 파일 변경 후에는 아파치 파일 재시작이 필요.
httpd.conf의 기본 설정
- ServerRoot : 아파치의 주요 파일들이 저장된 최상위 디렉터리
- Listen : 아파치 웹 서버가 사용할 TCP 포트 번호
- LoadModule : DSO 방식으로 로딩할 모듈 지정
- User : 아파치 실행 데몬의 사용자 권한 지정
- Group : 아파치 실행 데몬의 그룹 권한 지정
- ServerAdmin : 웹 서버 관리자의 이메일 주소를 지정해 오류 발생시 표시
- ServerName : 서버의 호스트 이름 지정
- DocumentRoot : 웹 문서가 저장되는 기본 디렉터리 경로 지정
- DirectoryIndex : 웹 디렉터리를 방문할 때 처음 열릴 파일 목록
- AccessFilename : 각 디렉터리별 추가 설정을 위해 각각 저장하는 설정 파일
- ErrorLog : 아파치 웹 서버의 에러로그 파일 위치 지정
- LogLevel : 에러로그를 기록하는 수준 결정
- DefaultType : 기본 MIME 타입 지정
- AddType : 파일 확장자에 대한 MIME을 등록해 처리 방식 지정
- AddDefaultCharset : 웹 문서들의 기본 문자셋 지정
- TypesConfig : 서버가 처리할 수 있는 MIME 타입을 기술한 mime.types 위치 지정
- MIMEMagicFile : MIME 타입 결정에 대한 힌트를 담은 파일
- ErrorDocument : 오류 처리 방식 등록
- Alias : 특정 경로에 대한 별칭
- Redirect : 특정 URL로 접근 시 다른 URL로 이동하도록 설정
- include : 별도의 설정 파일 포함
- AddEncoding : 특정 웹 브라우저를 대상으로 압축된 형식으로 데이터를 전송할 수 있도록 설정
- AddLanguage : 웹 페이지에서 지원하는 언어 설정
- LanguagePriority : 웹 페이지 언어를 표시할 때 우선순위 지정
- AddCharset : 해석시 사용하는 문자셋
- AddHandler : .cgi 파일 처리
- ScriptAlias : CGI 스크립트를 특정한 위치에서만 제공하도록 설정하여 임의 실행 방지
- <Directory 디렉토리명>~</Directory> : 디정한 디렉터리에 대한 권한, 제어 방식, 옵션 지정
- <FileMatch 파일명형식>~</FileMatch> : 지정한 파일 형식에 대해 접근 통제 관리 방식 지정
- <lfModule 모듈명>~</lfModule> : 지정한 모듈에 대한 세부 동작 옵션 설정
*12에서는 debug < info < notice < warn < error < crit < alert < emerge 순으로 위험한 상태
*28에서 Order, Allow, Deny를 이용해 접근 통제를 설정할 수 있다.
1. 다음 중 웹브라우저의 특징으로 틀린 것은?
1) 모자이크 : 1993년 일리노이 대학의 국립 슈퍼컴퓨터 활용센터에서 개발
2) 네스케이프 : 미국 네스케이프 커뮤니케이션사가 만든 최초의 상업용 웹 브라우저
3) 인터넷 익스플로어 : MS에서 개발한 윈도우 기반의 웹 브라우저
4) 파이어폭스 : 모질라 프로젝트에서 지원하는 상업용 웹브라우저
4
2. 다음은 MySQL의 소스 컴파일 설치 과정의 한 부분이다. 관련한 설명으로 틀린 것은?
./configure --localstatedir=/usr/local/mysql/data
--prefix=/usr/local/mysql --with-charset=euc_kr
1) --prefix=/usr/local/mysql 은 MySQL이 설치될 홈 디렉터리이다.
2) --localstatedir=/usr/local/mysql/data 는 MySQL의 데이터들을 저장시키기 위한 옵션이다.
3) --with-charset=euc_kr 은 MySQL에서 한글사용을 가능하게 해주는 옵션이다.
4)이 작업의 결과 /usr/local/mysql/data에 mysql과 test 두 개의 데이터베이스가 생성되었다.
4
3. MySQL 4.1.9 설치 시 환경설정을 위한 /configure 완료 후 데몬 테스트까지 수행하기 위한 명령어를
순서대로 나열하시오.
make -> make install -> /mysql_install_d -> /safe_mysqld &
4. 아파치 서버의 기본 로그 포멧을 지정한 것이다. 설명으로 옳지 않은 것은?
LofFormat "%h %l %u %t \%r\ %>s %b" common
1) %h는 호스트 이름
2) %l은 원격 로그 이름
3) %u는 사용자인증에 사용된 이름
4) %r은 원격지의 호스트이름
4
5. 아파치 설정 파일에서 아파치 서버의 기본 디렉터리를 지정하는 지시자는?
1) ServerSignature
2) ServerRoot
3) ServerPath
4) ServerName
2
'자격증 > 리눅스 마스터 1급' 카테고리의 다른 글
리눅스마스터_1급_3과목_파일 관련 서비스 (0) | 2021.02.12 |
---|---|
리눅스마스터_1급_3과목_인증 관련 서비스 (0) | 2021.02.12 |
리눅스마스터_1급_2과목_시스템 백업 (0) | 2021.02.11 |
리눅스마스터_1급_2과목_시스템 보안 및 관리 (0) | 2021.02.11 |
리눅스마스터_1급_2과목_시스템 분석 (0) | 2021.02.11 |