450 likes | 705 Views
Apache2. Installation & Configuration. 실무 운영체제 10 조 임경택 , 최규영 , 정예슬. Agenda. Apache2 Introduce Apache2 Installation Apache2 Configuration Global Environment Main Server Configuration Virtual Host Configuration Demo. Apache2 Installation. 아파치 웹서버 설치하기. Apache2 Installation #1.
E N D
Apache2 Installation & Configuration 실무 운영체제 10조 임경택, 최규영, 정예슬
Agenda • Apache2 Introduce • Apache2 Installation • Apache2 Configuration • Global Environment • Main Server Configuration • Virtual Host Configuration • Demo
Apache2 Installation 아파치 웹서버 설치하기
Apache2 Installation #1 1. Apache2Webserver를다운로드한다.
Apache2 Installation #2 2. 다운로드 받은 파일을 압축을 해제한다.
Apache2 Installation #3 • Configure 과정을 진행하기에 앞서, 선행 설정을 시행한다. • Ex) Webserver를 Prefork Mode로 설정할 때, 최대 접속자 수 제한값 수정 server/mpm/prefork/prefork.c에서 정의된DEFALUT_SERVER_LIMIT를 변경한다.
Apache2 Installation #4 4. Configure 작업을 진행한다.
Apache2 Installation #5 5. Make를 실행하여 Apache2를 Complie함.
Apache2 Installation #6 6. Make install을 수행하여, 생성된 실행파일을 지정된 위치(/usr/local/apache2)에 생성시킴.
Apache2 Directory structure 아파치 웹서버의 디렉토리 구조도
Apache2 Configuration 아파치 웹서버 환경설정
Apache2 Configuration • Apache2Webserver의 환경설정 파일 • /usr/local/apache2/conf/httpd.conf • Configuration Category • Global Environment • Main Server Configuration • Virtual Host Configuration
Config:Global Environment • ServerRoot “/usr/local/apache2” • Webserver의 Home Directory를 지정함. • LockFile logs/accept.lock • LockFilePath를 지정함. • Def) /usr/local/apache2/logs/accept.lock • ScoreBoardFile logs/apache_runtime_status • ScoreBoardFile의 위치를 지정하는 설정. • /usr/local/apache2/logs/apache_runtime_status
Config:Global Environment • PidFile logs/httpd.pid • Apache Process가 시작될 때 자기 자신의 프로세스 번호(PID)를 기록하는 파일을 지정함. • Timeout 300 • Server와 Client 간 아무런 Message가 발생하지 않았을 때 연결을 종료할 기간(초 단위)
Config:Global Environment • KeepAlive On • 특정 Child Process가 특정 사용자의 지속적인 요청 작업들을 계속해서 처리하도록 허용함. • MaxKeepAliveRequests 30 • 하나의 방문자에 대한 프로세스가 처리하는 횟수를 지정함. 무한적으로 처리해야 할 경우 0 으로 셋팅. • KeepAliveTimeOut 15 • 유지된 프로세스의 타임아웃 기간(초)
Config:Global Environment • PreForkMPM(Moudule: prefork.c) • 전통적인 아파치의 요청 처리 방식. (ProcessFork) • StartServers 5 • 시작 시 띄울 프로세스 개수 • MinSpareServers 5 • 유휴(대기) 프로세스의 최소범위 • MaxSpareServers 10 • 유휴(대기) 프로세스의 최소/최대 범위 • MaxClients 150 • 최대 접속할 수 있는 클라이언트개수. • MaxRequestsPerChild 30 • 자식 프로세스들이 받을 수 있는 클라이언트 요청 수
Config:Global Environment • WorkerMPM(Moudule: worker.c) • 방문자의 요청을 Thread 방식으로 처리함. • StartServers 5 • 시작 시 띄울 프로세스 개수 • MaxClients 150 • 동시 연결 가능한 최대 Client 개수 • MinSpareThread 25 • 유휴(대기) 쓰레드의 최소 범위 • MaxSpareThread 75 • 유휴(대기) 쓰레드의 최대 범위 • ThreadsPerChild 25 • 개별 자식 프로세스가 지속적으로 가질 수 있는 스레드의 개수 • MaxRequestsPerChild 0 • 자식 프로세스가 서비스할 수 있는 최대 요청 개수
Config:Global Environment • perchildMPM(Moudule: perchild.c) • NumServers 5 • 자식 프로세스의 동시 생성가능한 개수 • StartThreads 5 • 각 자식프로세스의 초기화 스레드 개수 • MinSpareThreads 5 • 항상 대기하고 있을 스레드의 최소 개수 • MaxSpareThreads 10 • 항상 대기하고 있을 스레드의 최대 개수 • MaxThreadsPerChild 20 • 각 자식프로세스의 최대 스레드 개수 • MaxRequestPerChild 0 • 각 자식프로세스당 최대 연결 횟수
Config:Global Environment • Listen 80 ( Listen xxx.xxx.xxx.xxx:80 ) • 시스템의 기본값 이외에 다른 IP Address와 포트에 대해서도 연결할 수 있도록 해줌. • LoadModule_php4_moudle_modules/libphp4.so • 아파치를 DSO 방식으로 설치한(이전의 설치방법이 해당됨) 다음, 필요한 모듈을 아파치에 로드하는 지시자. • ExtendedStatus On • Webserver Monitoring 시, 자세한 상태 정보 기능을 제공함.
Config:Main Server Configuration • User nobody • Group nobody • 아파치 웹 데몬이 구동될 때 생성되는 Child Process의 uid와 pid를 지정함. (root는 절대 피해야 함!) • ServerAdmin you@example.com • 관리자의 E-Mail, Error Page 하단에 표기됨. • ServerName www.example.com:80 • 클라이언트에게 보여질 호스트 이름을 지정함. • bbs.yahoo.co.kr -> www.yahoo.co.kr
Config:Main Server Configuration • UseCanonicalName Off • 아파치 프로세스가 자기 자신의 URL과 ServerName, Server_port 값들을 설정하는 방법에 대한 지시자. • Off되면 클라이언트에 의해 제공되는 HostName과 Port를 사용함. • On되면 ServerName 지시자의 값을 사용하게 됨. • DocumentRoot "/usr/local/apache2/htdocs“ • 아파치 서버의 웹문서의 주소
Config:Main Server Configuration • <Directory /> Options FollowSymLinks AllowOverride None</Directory> • / 디렉토리에 대하여 옵션을 설정함. • 심볼릭 링크를 허용하고, • AccessFileName에 지정된 파일을 액세스 인증파일로 인증하지 않음.
Config:Main Server Configuration • UserDir public_html • 하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어 사용할 때 필요한 개별 가입자의 홈페이지 디렉토리 이름. • ex) http://www.superuser.or.kr/~sspark • DirectoryIndex index.html index.php … • WebBrowser에서 http://www.yahoo.co.kr/~bible라고 입력했을 때, 그 디렉토리에서 처음찾게 될 웹문서 순서를 지정해줌.
Config:Main Server Configuration • AccessFileName .htaccess • 특정 디렉토리내의 모든 웹문서들을 ID와 패스워드로 인증하여 인증받은 사용자들만 접근을 허용하기 위한 설정. • 디렉토리 별로 접근제어할 정보파일의 이름을 설정함. • <FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All</FilesMatch> • 위에서 설정한 .htaccess 파일을 웹브라우져에서 볼 수 없게 만드는 옵션. 보안상 이유로 반드시 설정해야 함.
Config:Main Server Configuration • TypesConfig conf/mime.types • mime.types 파일을 어디서 찾을 수 있는 지정함. • mime.types: 서버에 의해 리턴될 수 있는 파일명과 mime 형식을 기술해놓은 파일.(Def. /usr/local/apache2/conf ) • DefaultType text/plain • mime.types에 정의되어있지 않은 파일형식에 대한 요청 시 기본적인 mime 타입을 정해둔 것임. • MIMEMagicFile conf/magic • 특정파일 타입에 대한 컨텐츠로부터 여러가지 정보를 사용할 수 있도록 허용함.
Config:Main Server Configuration • HostnameLookups Off • 방문자에 대한 주소를 IP 주소로 기록할 것인가(Off)? • 도메인명으로 기록할 것인가(On)? • ErrorLog logs/error_log • ErrorLog File의 위치를 지시하는 지시자 • LogLevel warn • 에러 로그의 기록 레벨 설정 • emerg < alart < crit < error < warn < notice < info < debug
Config:Main Server Configuration • ServerTokens Prod • 아파치 서버의 HTTP 응답 헤드를 설정함. • 만일 이 값이 Full이라면 운영체제의 OS 타입과 컴파일된 모듈등 모둔 정보들이 노출될 수 있음. • Ex) Prod: 웹서버의 종류만을 제공함. • ServerSignature On • 아파치 웹서버의 에러문서에 추가적인 정보(아파치 버전, 가상호스트 정보, 관리자 이메일 등)을 보여주게 됨. • ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/“ • 별칭 설정 • DocumentRoot 밖의 문서를 안쪽에서 사용하기 위해. • 짧게 줄여서 별칭으로 사용하기 위해
Config:Main Server Configuration • IndexOptions FancyIndexing VersionSort • 디렉토리 목록을 어떻게 보여줄 가를 결정함. • AddIcon • 아이콘을 확장자 별로 설정함. • DefaultIcon • 기본 아이콘을 설정함. • AddDescription • 확장자에 대한 설명을 설정함. • ReadmeName • README 웹페이지의 아랫부분에 README 파일을 붙임. • HeaderName • HEADER 웹페이지의 헤더부분에 HEADER 파일을 붙임. • IndexIgnore • 웹페이지에 디렉토리목록을 인덱싱할 때 제외할 파일 지정. 와일드 카드 허용됨.
Config:Main Server Configuration • DefaultLanguage • 기본 언어 설정 • AddLanguage • 언어 인코딩 추가 • LanguagePriority • 언어 인코딩 순서를 내림차순으로 지정함. • AddDefaultCharset • 기본적인 캐릭터셋 설정 • AddCharset • 추가 캐릭터샛 설정 • AddEncoding • 특정 브라우져에서 받는 도중 정보에 대한 압축 해제 지원 • AddHandler • 파일확장자를 처리기에 연결시켜줌(ex. AddHandler cgi-script .cgi : cgi 파일을 cgi-script핸들러에 연결) • AddType text/html • .shtml SSI 코드가 들어있는 문서의 확장자를 shtml로 사용 가능하게 함.
Config:Main Server Configuration • ErrorDocument 500 "The server made a boo boo.“ • ErrorDocument 404 /missing.html • ErrorDocument 404 "/cgi-bin/missing_handler.pl“ • ErrorDocument 402 http://www.example.com/subscription_info.html • 웹문서의 에러 발생시 응답을 정의할 수 있는 방법
Config:Main Server Configuration • <Location /server-status> SetHandler server-status Order deny, allow Deny from all Allow from .example.com</Location> • 서버의 상태를 점검할 수 있게 하는 설정 • <Location /server-info> SetHandler server-int Order deny,allow Deny from all Allow from .example.com</Location> • 서버의 상태를 점검할 수 있게 하는 설정을 사용하기 위해 로드하는 모듈.
Config: Virtual Host Configuration • 한 개의 아파치에서 여러 개의 웹사이트를 돌리고자 할 경우 설정함. • NameVirtualHost 192.168.0.201 • 가상 호스트의 주소를 설정하는 지시자.
Config: Virtual Host Configuration • <VirtualHost 192.168.0.201> ServerAdmin webmaster@man.co.kr DocumentRoot /home/lohan/public ServerName www.lohan.co.kr ServerAlias lohan.co.kr ErrorLog /home/bible/www_log/error_log CustomLog /home/bible/www_log/access_log</VirtualHost> • <VirtualHost _defualt_:*> • 가상 호스트 설정으로 위에서 설정되지 않은 다른 모든 가상호스트에 대해 응답을 하고자 할때 설정
Apache2 Demo 설치된 아파치 서버의 데모 보기
Thank you! 실무 운영체제 10조 임경택, 최규영, 정예슬
참고 자료 #1 • Configure Option • --prefix=[Path] • 설치될 Apache2의 홈 디렉토리를 지정함. • --enable-so • DSO(Dynamic Shared Object) 방식으로 설치함. • --with-mpm=(worker | beos | prefork | … ) • Apache Process가 사용할 멀티 프로세싱/스레딩 방식을 지정함. • 기타 옵션 • --disable-access, --disable-auth, --enable-auth-anon, --enable-auth-anon, ensable-auth-dbm…etc.
참고 자료 #2 • Prefork 방식으로 구동되는 Apache2 부모 프로세스 자식 프로세스들
참고 자료 #3 • <Directory [path]> ~ </Directory> 문법 • Option: 지정한 디렉토리 이하에 모든 파일과 디렉토리들에 적용할 접근 제어를 설정함. • None: 모든 옵션을 허용하지 않음. • All : MultiViews를 제외한 모든 옵션 설정을 허용. • Indexes: 디렉토리 내에 DirectoryIndex에서 지정한 파일이 없을 경우, 목록을 보여줌. • Includes: SSI 사용을 허용함. • IncludesNOEXEC: SSI사용은 허가하지만 #exec와 #include는 허용하지 않음. • FollowSymlinks: 심볼릭 링크를 허용함. • ExecCGI: perl과 같은 CGI 실행을 허용하기 위한 설정. • MultiViews: 웹브라우져의 요청에 따라 적절한 페이지를 보여줌.
참고 자료 #3 • <Directory [path]> ~ </Directory> 문법 • AllowOverride: 어떻게 접근을 허용할 것이가에 대한 설정. 가장 최근에 설정된 값이 우선 적용됨. • None: AccessFileName에 지정된 파일을 액세스 인증파일로 인증하지 않음. • All: 이전의 인증방식에 대하여 새로운 접근인증방식을 우선 적용하도록 override를 허용함. • AythConfig: htpasswd 유틸리티를 이용하여 .htaccess파일로 제어하고자 할 때해당 디렉토리에 이 값을 적용함. • FileInfo: .htaccess에 대하여 문서 유형을 제어하는 지시자 사용을 허용. • Indexes: 디렉토리 indexing을 제어하는 지시자 사용 허용. • Limit: 호스트 접근을 제어하는 지시자 사용을 허용. • Options: 디렉토리옵션을 제어하는 지시자 사용을 허용.
401은 권한이 없을 시 발생하는 클라이언트 오류에 관한 상태코드이다. 정답 4번 리눅스 마스터 1급 기출문제 • 아파치acces_log파일의 내용 설명중, 상태코드에 대한 설명이 알맞지 않은 것은? • ① Code 200 - 요청이 유효함 • ② Code 403 - 요청된 엑세스가 허용되지 않음 • ③ Code 404 - 요청된 문서가 존재하지 않음 • ④ Code 401 - 클라이언트나 사용자의 엑세스가 허가됨
DoucumentRoot는 아파치가 웹페이지를 저장할 디렉토리를 정의한다. Alias와 같은 지시자에 의해 설정된 것 이외에 아파치는 주어진 URL에서 이 지시자에 의해 정의된 경로를 최상위 경로로 인식한다. DocumentRoot"/usr/local/apache/htdocs"라고 설정하고 "http://www.myhost.com/index.html"와 같이 접속한다면, 서버 내부적으로는 /usr/local/apache/htdocs/index.html을 의미하게 된다. 정답 2번 리눅스 마스터 1급 기출문제 • 아파치 설정 파일에서 웹문서의 기본 경로를 설정해주는 지시자로 알맞은 것은? • ① ServerRoot "/usr/local/apache/htdocs" • ② DocumentRoot "/usr/local/apache/htdocs" • ③ HttpdRoot "/usr/local/apache/htdocs" • ④ HttpdDocs "/usr/local/apache/htdocs"
httpd.conf의 해당디렉토리 설정에서 Options에 Indexes를 추가하면 디렉토리와 파일이 탐색기 처럼 나타남. 정답 4번 리눅스 마스터 1급 기출문제 • 아파치 웹 서버에 접속하려고 했더니 웹 페이지가 나오는것이아니라파일들의목록이그대로화면에 출력될경우환경설정을변경내용으로알맞은것은? • ① MultiViews 옵션추가 • ② MultiViews 옵션삭제 • ③ Indexes 옵션추가 • ④ Indexes 옵션삭제
DocumentRoot를 각각다르게 설정하였기때문에 같은 페이지를 • 볼 수 없다. • 2. 이름기반가상호스트설정을 해야각웹페이지에서같은IP로접근 • 할 수 있다. • 포트는 80만 사용하고 있다. • 1, 2, 3번 모두 틀렸으므로 4번이 정답이다. 리눅스 마스터 1급 기출문제 • 다음은 간략한 가상 호스팅에 대한 아파치 웹 서버 설정 파일의 내용이다. 설정에 대한 설명으로 가장 알맞은 것은? Port 80 ServerName www.ihd.or.kr DocumentRoot /usr/local/apache/htdocs NameVirtualHost 192.168.10.1 <VirtualHost 192.168.10.1> DocumentRoot /home/ihdweb01 ServerName my.ihd.or.kr ……… </VirtualHost> <VirtualHost 192.168.10.1> DocumentRoot /home/ihdweb02 ServerName linux.ihd.or.kr ……… </VirtualHost> • ① 사용자가 www.ihd.or.kr, my.ihd.or.kr, inux.ihd.or.kr의 어느 주소로 위의 서버에 접근하더라도 모두 같은 페이지를 볼 수 있도록 설정하였다 • ② 위의 가상호스트 설정은 각 웹 페이지에 모두 같은 IP주소로 접근 할 수 있기 때문에 IP기 반 가상 호스트 설정임을 알 수 있다 • ③ 각각의 가상서버들에 웹을 통해 접근할 경우 각기 다른 포트번호를 통해서 접근 할 수 있도록 설정이 되어있다 • ④ 위의 가상호스트 설정은 각 웹 페이지에 모두 같은 IP주소로 접근 할 수 있기 때문에 이름기반 가상호스트 설정임을 알 수 있다
정답 4번 리눅스 마스터 1급 기출문제 • 아파치웹서버설정파일인httpd.conf의KeepAliveOn이되어있는경우, 지속적인접속동안 허용할 최대 요청횟수를 지정하는 지시자로 알맞은 것은? • ① KeepAliveTimeout 15 • ② StartServer • ③ Timeout 300 • ④ MaxKeepAliveRequests 100