1 / 45

Apache2

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.

cree
Download Presentation

Apache2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Apache2 Installation & Configuration 실무 운영체제 10조 임경택, 최규영, 정예슬

  2. Agenda • Apache2 Introduce • Apache2 Installation • Apache2 Configuration • Global Environment • Main Server Configuration • Virtual Host Configuration • Demo

  3. Apache2 Installation 아파치 웹서버 설치하기

  4. Apache2 Installation #1 1. Apache2Webserver를다운로드한다.

  5. Apache2 Installation #2 2. 다운로드 받은 파일을 압축을 해제한다.

  6. Apache2 Installation #3 • Configure 과정을 진행하기에 앞서, 선행 설정을 시행한다. • Ex) Webserver를 Prefork Mode로 설정할 때, 최대 접속자 수 제한값 수정 server/mpm/prefork/prefork.c에서 정의된DEFALUT_SERVER_LIMIT를 변경한다.

  7. Apache2 Installation #4 4. Configure 작업을 진행한다.

  8. Apache2 Installation #5 5. Make를 실행하여 Apache2를 Complie함.

  9. Apache2 Installation #6 6. Make install을 수행하여, 생성된 실행파일을 지정된 위치(/usr/local/apache2)에 생성시킴.

  10. Apache2 Directory structure 아파치 웹서버의 디렉토리 구조도

  11. Apache2 Directories

  12. Apache2 Configuration 아파치 웹서버 환경설정

  13. Apache2 Configuration • Apache2Webserver의 환경설정 파일 • /usr/local/apache2/conf/httpd.conf • Configuration Category • Global Environment • Main Server Configuration • Virtual Host Configuration

  14. 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

  15. Config:Global Environment • PidFile logs/httpd.pid • Apache Process가 시작될 때 자기 자신의 프로세스 번호(PID)를 기록하는 파일을 지정함. • Timeout 300 • Server와 Client 간 아무런 Message가 발생하지 않았을 때 연결을 종료할 기간(초 단위)

  16. Config:Global Environment • KeepAlive On • 특정 Child Process가 특정 사용자의 지속적인 요청 작업들을 계속해서 처리하도록 허용함. • MaxKeepAliveRequests 30 • 하나의 방문자에 대한 프로세스가 처리하는 횟수를 지정함. 무한적으로 처리해야 할 경우 0 으로 셋팅. • KeepAliveTimeOut 15 • 유지된 프로세스의 타임아웃 기간(초)

  17. Config:Global Environment • PreForkMPM(Moudule: prefork.c) • 전통적인 아파치의 요청 처리 방식. (ProcessFork) • StartServers 5 • 시작 시 띄울 프로세스 개수 • MinSpareServers 5 • 유휴(대기) 프로세스의 최소범위 • MaxSpareServers 10 • 유휴(대기) 프로세스의 최소/최대 범위 • MaxClients 150 • 최대 접속할 수 있는 클라이언트개수. • MaxRequestsPerChild 30 • 자식 프로세스들이 받을 수 있는 클라이언트 요청 수

  18. Config:Global Environment • WorkerMPM(Moudule: worker.c) • 방문자의 요청을 Thread 방식으로 처리함. • StartServers 5 • 시작 시 띄울 프로세스 개수 • MaxClients 150 • 동시 연결 가능한 최대 Client 개수 • MinSpareThread 25 • 유휴(대기) 쓰레드의 최소 범위 • MaxSpareThread 75 • 유휴(대기) 쓰레드의 최대 범위 • ThreadsPerChild 25 • 개별 자식 프로세스가 지속적으로 가질 수 있는 스레드의 개수 • MaxRequestsPerChild 0 • 자식 프로세스가 서비스할 수 있는 최대 요청 개수

  19. Config:Global Environment • perchildMPM(Moudule: perchild.c) • NumServers 5 • 자식 프로세스의 동시 생성가능한 개수 • StartThreads 5 • 각 자식프로세스의 초기화 스레드 개수 • MinSpareThreads 5 • 항상 대기하고 있을 스레드의 최소 개수 • MaxSpareThreads 10 • 항상 대기하고 있을 스레드의 최대 개수 • MaxThreadsPerChild 20 • 각 자식프로세스의 최대 스레드 개수 • MaxRequestPerChild 0 • 각 자식프로세스당 최대 연결 횟수

  20. Config:Global Environment • Listen 80 ( Listen xxx.xxx.xxx.xxx:80 ) • 시스템의 기본값 이외에 다른 IP Address와 포트에 대해서도 연결할 수 있도록 해줌. • LoadModule_php4_moudle_modules/libphp4.so • 아파치를 DSO 방식으로 설치한(이전의 설치방법이 해당됨) 다음, 필요한 모듈을 아파치에 로드하는 지시자. • ExtendedStatus On • Webserver Monitoring 시, 자세한 상태 정보 기능을 제공함.

  21. 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

  22. Config:Main Server Configuration • UseCanonicalName Off • 아파치 프로세스가 자기 자신의 URL과 ServerName, Server_port 값들을 설정하는 방법에 대한 지시자. • Off되면 클라이언트에 의해 제공되는 HostName과 Port를 사용함. • On되면 ServerName 지시자의 값을 사용하게 됨. • DocumentRoot "/usr/local/apache2/htdocs“ • 아파치 서버의 웹문서의 주소

  23. Config:Main Server Configuration • <Directory /> Options FollowSymLinks AllowOverride None</Directory> • / 디렉토리에 대하여 옵션을 설정함. • 심볼릭 링크를 허용하고, • AccessFileName에 지정된 파일을 액세스 인증파일로 인증하지 않음.

  24. 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라고 입력했을 때, 그 디렉토리에서 처음찾게 될 웹문서 순서를 지정해줌.

  25. Config:Main Server Configuration • AccessFileName .htaccess • 특정 디렉토리내의 모든 웹문서들을 ID와 패스워드로 인증하여 인증받은 사용자들만 접근을 허용하기 위한 설정. • 디렉토리 별로 접근제어할 정보파일의 이름을 설정함. • <FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All</FilesMatch> • 위에서 설정한 .htaccess 파일을 웹브라우져에서 볼 수 없게 만드는 옵션. 보안상 이유로 반드시 설정해야 함.

  26. 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 • 특정파일 타입에 대한 컨텐츠로부터 여러가지 정보를 사용할 수 있도록 허용함.

  27. 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

  28. Config:Main Server Configuration • ServerTokens Prod • 아파치 서버의 HTTP 응답 헤드를 설정함. • 만일 이 값이 Full이라면 운영체제의 OS 타입과 컴파일된 모듈등 모둔 정보들이 노출될 수 있음. • Ex) Prod: 웹서버의 종류만을 제공함. • ServerSignature On • 아파치 웹서버의 에러문서에 추가적인 정보(아파치 버전, 가상호스트 정보, 관리자 이메일 등)을 보여주게 됨. • ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/“ • 별칭 설정 • DocumentRoot 밖의 문서를 안쪽에서 사용하기 위해. • 짧게 줄여서 별칭으로 사용하기 위해

  29. Config:Main Server Configuration • IndexOptions FancyIndexing VersionSort • 디렉토리 목록을 어떻게 보여줄 가를 결정함. • AddIcon • 아이콘을 확장자 별로 설정함. • DefaultIcon • 기본 아이콘을 설정함. • AddDescription • 확장자에 대한 설명을 설정함. • ReadmeName • README 웹페이지의 아랫부분에 README 파일을 붙임. • HeaderName • HEADER 웹페이지의 헤더부분에 HEADER 파일을 붙임. • IndexIgnore • 웹페이지에 디렉토리목록을 인덱싱할 때 제외할 파일 지정. 와일드 카드 허용됨.

  30. 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로 사용 가능하게 함.

  31. 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 • 웹문서의 에러 발생시 응답을 정의할 수 있는 방법

  32. 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> • 서버의 상태를 점검할 수 있게 하는 설정을 사용하기 위해 로드하는 모듈.

  33. Config: Virtual Host Configuration • 한 개의 아파치에서 여러 개의 웹사이트를 돌리고자 할 경우 설정함. • NameVirtualHost 192.168.0.201 • 가상 호스트의 주소를 설정하는 지시자.

  34. 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_:*> • 가상 호스트 설정으로 위에서 설정되지 않은 다른 모든 가상호스트에 대해 응답을 하고자 할때 설정

  35. Apache2 Demo 설치된 아파치 서버의 데모 보기

  36. Thank you! 실무 운영체제 10조 임경택, 최규영, 정예슬

  37. 참고 자료 #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.

  38. 참고 자료 #2 • Prefork 방식으로 구동되는 Apache2 부모 프로세스 자식 프로세스들

  39. 참고 자료 #3 • <Directory [path]> ~ </Directory> 문법 • Option: 지정한 디렉토리 이하에 모든 파일과 디렉토리들에 적용할 접근 제어를 설정함. • None: 모든 옵션을 허용하지 않음. • All : MultiViews를 제외한 모든 옵션 설정을 허용. • Indexes: 디렉토리 내에 DirectoryIndex에서 지정한 파일이 없을 경우, 목록을 보여줌. • Includes: SSI 사용을 허용함. • IncludesNOEXEC: SSI사용은 허가하지만 #exec와 #include는 허용하지 않음. • FollowSymlinks: 심볼릭 링크를 허용함. • ExecCGI: perl과 같은 CGI 실행을 허용하기 위한 설정. • MultiViews: 웹브라우져의 요청에 따라 적절한 페이지를 보여줌.

  40. 참고 자료 #3 • <Directory [path]> ~ </Directory> 문법 • AllowOverride: 어떻게 접근을 허용할 것이가에 대한 설정. 가장 최근에 설정된 값이 우선 적용됨. • None: AccessFileName에 지정된 파일을 액세스 인증파일로 인증하지 않음. • All: 이전의 인증방식에 대하여 새로운 접근인증방식을 우선 적용하도록 override를 허용함. • AythConfig: htpasswd 유틸리티를 이용하여 .htaccess파일로 제어하고자 할 때해당 디렉토리에 이 값을 적용함. • FileInfo: .htaccess에 대하여 문서 유형을 제어하는 지시자 사용을 허용. • Indexes: 디렉토리 indexing을 제어하는 지시자 사용 허용. • Limit: 호스트 접근을 제어하는 지시자 사용을 허용. • Options: 디렉토리옵션을 제어하는 지시자 사용을 허용.

  41. 401은 권한이 없을 시 발생하는 클라이언트 오류에 관한 상태코드이다. 정답 4번 리눅스 마스터 1급 기출문제 • 아파치acces_log파일의 내용 설명중, 상태코드에 대한 설명이 알맞지 않은 것은? • ① Code 200 - 요청이 유효함 • ② Code 403 - 요청된 엑세스가 허용되지 않음 • ③ Code 404 - 요청된 문서가 존재하지 않음 • ④ Code 401 - 클라이언트나 사용자의 엑세스가 허가됨

  42. 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"

  43. httpd.conf의 해당디렉토리 설정에서 Options에 Indexes를 추가하면 디렉토리와 파일이 탐색기 처럼 나타남. 정답 4번 리눅스 마스터 1급 기출문제 • 아파치 웹 서버에 접속하려고 했더니 웹 페이지가 나오는것이아니라파일들의목록이그대로화면에 출력될경우환경설정을변경내용으로알맞은것은? • ① MultiViews 옵션추가 • ② MultiViews 옵션삭제 • ③ Indexes 옵션추가 • ④ Indexes 옵션삭제

  44. 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주소로 접근 할 수 있기 때문에 이름기반 가상호스트 설정임을 알 수 있다

  45. 정답 4번 리눅스 마스터 1급 기출문제 • 아파치웹서버설정파일인httpd.conf의KeepAliveOn이되어있는경우, 지속적인접속동안 허용할 최대 요청횟수를 지정하는 지시자로 알맞은 것은? • ① KeepAliveTimeout 15 • ② StartServer • ③ Timeout 300 • ④ MaxKeepAliveRequests 100

More Related