apache2

45
Installation & Configuration 실실 실실실실 10 실 실실실 , 실실실 , 실실실

Upload: cree

Post on 09-Jan-2016

63 views

Category:

Documents


4 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Apache2

Installation & Configuration

실무 운영체제 10 조임경택 , 최규영 , 정예슬

Page 2: Apache2

Apache2 Introduce Apache2 Installation Apache2 Configuration

◦ Global Environment◦ Main Server Configuration◦ Virtual Host Configuration

Demo

Page 3: Apache2

아파치 웹서버 설치하기

Page 4: Apache2

1. Apache2 Webserver 를 다운로드한다 .

Page 5: Apache2

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

Page 6: Apache2

Configure 과정을 진행하기에 앞서 , 선행 설정을 시행한다 .◦ Ex) Webserver 를 Prefork Mode 로 설정할 때 , 최대

접속자 수 제한값 수정 server/mpm/prefork/prefork.c 에서 정의된DEFALUT_SERVER_LIMIT 를 변경한다 .

Page 7: Apache2

4. Configure 작업을 진행한다 .

Page 8: Apache2

5. Make 를 실행하여 Apache2 를 Complie 함 .

Page 9: Apache2

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

Page 10: Apache2

아파치 웹서버의 디렉토리 구조도

Page 11: Apache2
Page 12: Apache2

아파치 웹서버 환경설정

Page 13: Apache2

Apache2 Webserver 의 환경설정 파일◦/usr/local/apache2/conf/httpd.conf

Configuration Category◦ Global Environment◦ Main Server Configuration◦ Virtual Host Configuration

Page 14: Apache2

ServerRoot “/usr/local/apache2”◦ Webserver 의 Home Directory 를 지정함 .

LockFile logs/accept.lock◦ LockFile Path 를 지정함 .◦ Def) /usr/local/apache2/logs/accept.lock

ScoreBoardFile logs/apache_runtime_status◦ ScoreBoardFile 의 위치를 지정하는 설정 .◦ /usr/local/apache2/logs/apache_runtime_status

Page 15: Apache2

PidFile logs/httpd.pid◦ Apache Process 가 시작될 때 자기 자신의 프로세스

번호 (PID) 를 기록하는 파일을 지정함 .

Timeout 300◦ Server 와 Client 간 아무런 Message 가 발생하지

않았을 때 연결을 종료할 기간 ( 초 단위 )

Page 16: Apache2

KeepAlive On◦ 특정 Child Process 가 특정 사용자의 지속적인 요청

작업들을 계속해서 처리하도록 허용함 .

MaxKeepAliveRequests 30◦ 하나의 방문자에 대한 프로세스가 처리하는 횟수를

지정함 . 무한적으로 처리해야 할 경우 0 으로 셋팅 .

KeepAliveTimeOut 15◦ 유지된 프로세스의 타임아웃 기간 ( 초 )

Page 17: Apache2

PreForkMPM(Moudule: prefork.c)◦ 전통적인 아파치의 요청 처리 방식 . (Process Fork)

◦ StartServers 5 시작 시 띄울 프로세스 개수

◦ MinSpareServers 5 유휴 ( 대기 ) 프로세스의 최소 범위

◦ MaxSpareServers 10 유휴 ( 대기 ) 프로세스의 최소 /최대 범위

◦ MaxClients 150 최대 접속할 수 있는 클라이언트 개수 .

◦ MaxRequestsPerChild 30 자식 프로세스들이 받을 수 있는 클라이언트 요청 수

Page 18: Apache2

WorkerMPM(Moudule: worker.c)◦ 방문자의 요청을 Thread 방식으로 처리함 .

◦ StartServers 5 시작 시 띄울 프로세스 개수

◦ MaxClients 150 동시 연결 가능한 최대 Client 개수

◦ MinSpareThread 25 유휴 ( 대기 ) 쓰레드의 최소 범위

◦ MaxSpareThread 75 유휴 ( 대기 ) 쓰레드의 최대 범위

◦ ThreadsPerChild 25 개별 자식 프로세스가 지속적으로 가질 수 있는 스레드의 개수

◦ MaxRequestsPerChild 0 자식 프로세스가 서비스할 수 있는 최대 요청 개수

Page 19: Apache2

perchildMPM(Moudule: perchild.c)

◦ NumServers 5 자식 프로세스의 동시 생성가능한 개수

◦ StartThreads 5 각 자식프로세스의 초기화 스레드 개수

◦ MinSpareThreads 5 항상 대기하고 있을 스레드의 최소 개수

◦ MaxSpareThreads 10 항상 대기하고 있을 스레드의 최대 개수

◦ MaxThreadsPerChild 20 각 자식프로세스의 최대 스레드 개수

◦ MaxRequestPerChild 0 각 자식프로세스당 최대 연결 횟수

Page 20: Apache2

Listen 80 ( Listen xxx.xxx.xxx.xxx:80 )◦ 시스템의 기본값 이외에 다른 IP Address 와 포트에

대해서도 연결할 수 있도록 해줌 .

LoadModule_php4_moudle_modules/libphp4.so◦ 아파치를 DSO 방식으로 설치한 ( 이전의 설치방법이

해당됨 ) 다음 , 필요한 모듈을 아파치에 로드하는 지시자 .

ExtendedStatus On◦ Webserver Monitoring 시 , 자세한 상태 정보 기능을

제공함 .

Page 21: Apache2

User nobody Group nobody

◦ 아파치 웹 데몬이 구동될 때 생성되는 Child Process 의 uid 와 pid 를 지정함 . (root 는 절대 피해야 함 !)

ServerAdmin [email protected]◦ 관리자의 E-Mail, Error Page 하단에 표기됨 .

ServerName www.example.com:80◦ 클라이언트에게 보여질 호스트 이름을 지정함 .◦ bbs.yahoo.co.kr -> www.yahoo.co.kr

Page 22: Apache2

UseCanonicalName Off◦ 아파치 프로세스가 자기 자신의 URL 과 ServerName,

Server_port 값들을 설정하는 방법에 대한 지시자 .◦ Off 되면 클라이언트에 의해 제공되는 HostName 과

Port 를 사용함 .◦ On 되면 ServerName 지시자의 값을 사용하게 됨 .

DocumentRoot "/usr/local/apache2/htdocs“◦ 아파치 서버의 웹문서의 주소

Page 23: Apache2

<Directory />Options FollowSymLinksAllowOverride None

</Directory>

◦ / 디렉토리에 대하여 옵션을 설정함 .◦ 심볼릭 링크를 허용하고 ,◦ AccessFileName 에 지정된 파일을 액세스 인증파일로

인증하지 않음 .

Page 24: Apache2

UserDir public_html◦ 하나의 아파치 웹서버에서 여러 사용자의 홈페이지를

별도로 만들어 사용할 때 필요한 개별 가입자의 홈페이지 디렉토리 이름 .

◦ ex) http://www.superuser.or.kr/~sspark

DirectoryIndex index.html index.php …◦ WebBrowser 에서 http://www.yahoo.co.kr/~bible

라고 입력했을 때 , 그 디렉토리에서 처음찾게 될 웹문서 순서를 지정해줌 .

Page 25: Apache2

AccessFileName .htaccess ◦ 특정 디렉토리내의 모든 웹문서들을 ID 와 패스워드로

인증하여 인증받은 사용자들만 접근을 허용하기 위한 설정 .

◦ 디렉토리 별로 접근제어할 정보파일의 이름을 설정함 .

<FilesMatch "^\.ht">Order allow,denyDeny from allSatisfy All

</FilesMatch>◦ 위에서 설정한 .htaccess 파일을 웹브라우져에서 볼 수

없게 만드는 옵션 . 보안상 이유로 반드시 설정해야 함 .

Page 26: Apache2

TypesConfig conf/mime.types◦ mime.types 파일을 어디서 찾을 수 있는 지정함 .◦ mime.types: 서버에 의해 리턴될 수 있는 파일명과 mime

형식을 기술해놓은 파일 .(Def. /usr/local/apache2/conf )

DefaultType text/plain◦ mime.types 에 정의되어있지 않은 파일형식에 대한 요청 시

기본적인 mime 타입을 정해둔 것임 .

MIMEMagicFile conf/magic◦ 특정파일 타입에 대한 컨텐츠로부터 여러가지 정보를 사용할

수 있도록 허용함 .

Page 27: Apache2

HostnameLookups Off◦ 방문자에 대한 주소를 IP 주소로 기록할 것인가 (Off)?◦ 도메인명으로 기록할 것인가 (On)?

ErrorLog logs/error_log◦ ErrorLog File 의 위치를 지시하는 지시자

LogLevel warn◦ 에러 로그의 기록 레벨 설정◦ emerg < alart < crit < error < warn < notice <

info < debug

Page 28: Apache2

ServerTokens Prod◦ 아파치 서버의 HTTP 응답 헤드를 설정함 .◦ 만일 이 값이 Full 이라면 운영체제의 OS 타입과 컴파일된

모듈등 모둔 정보들이 노출될 수 있음 .◦ Ex) Prod: 웹서버의 종류만을 제공함 .

ServerSignature On◦ 아파치 웹서버의 에러문서에 추가적인 정보 ( 아파치 버전 ,

가상호스트 정보 , 관리자 이메일 등 ) 을 보여주게 됨 .

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/“◦ 별칭 설정

DocumentRoot 밖의 문서를 안쪽에서 사용하기 위해 . 짧게 줄여서 별칭으로 사용하기 위해

Page 29: Apache2

IndexOptions FancyIndexing VersionSort◦ 디렉토리 목록을 어떻게 보여줄 가를 결정함 .

AddIcon◦ 아이콘을 확장자 별로 설정함 .

DefaultIcon◦ 기본 아이콘을 설정함 .

AddDescription◦ 확장자에 대한 설명을 설정함 .

ReadmeName◦ README 웹페이지의 아랫부분에 README 파일을 붙임 .

HeaderName◦ HEADER 웹페이지의 헤더부분에 HEADER 파일을 붙임 .

IndexIgnore◦ 웹페이지에 디렉토리목록을 인덱싱할 때 제외할 파일 지정 . 와일드 카드

허용됨 .

Page 30: Apache2

DefaultLanguage◦ 기본 언어 설정

AddLanguage◦ 언어 인코딩 추가

LanguagePriority◦ 언어 인코딩 순서를 내림차순으로 지정함 .

AddDefaultCharset◦ 기본적인 캐릭터셋 설정

AddCharset◦ 추가 캐릭터샛 설정

AddEncoding◦ 특정 브라우져에서 받는 도중 정보에 대한 압축 해제 지원

AddHandler◦ 파일확장자를 처리기에 연결시켜줌 (ex. AddHandler cgi-script .cgi : cgi

파일을 cgi-script 핸들러에 연결 ) AddType text/html

◦ .shtml SSI 코드가 들어있는 문서의 확장자를 shtml 로 사용 가능하게 함 .

Page 31: Apache2

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

Page 32: Apache2

<Location /server-status>SetHandler server-statusOrder deny, allowDeny from allAllow from .example.com

</Location>◦ 서버의 상태를 점검할 수 있게 하는 설정

<Location /server-info>SetHandler server-intOrder deny,allowDeny from allAllow from .example.com

</Location>◦ 서버의 상태를 점검할 수 있게 하는 설정을 사용하기 위해 로드하는

모듈 .

Page 33: Apache2

한 개의 아파치에서 여러 개의 웹사이트를 돌리고자 할 경우 설정함 .

NameVirtualHost 192.168.0.201◦ 가상 호스트의 주소를 설정하는 지시자 .

Page 34: Apache2

<VirtualHost 192.168.0.201>ServerAdmin [email protected] /home/lohan/publicServerName www.lohan.co.krServerAlias lohan.co.krErrorLog /home/bible/www_log/error_logCustomLog /home/bible/www_log/access_log

</VirtualHost>

<VirtualHost _defualt_:*>◦ 가상 호스트 설정으로 위에서 설정되지 않은 다른 모든 가상호스트에

대해 응답을 하고자 할때 설정

Page 35: Apache2

설치된 아파치 서버의 데모 보기

Page 36: Apache2

Thank you!

실무 운영체제 10 조임경택 , 최규영 , 정예슬

Page 37: Apache2

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.

Page 38: Apache2

Prefork 방식으로 구동되는 Apache2

부모 프로세스부모 프로세스

자식 프로세스들자식 프로세스들

Page 39: Apache2

<Directory [path]> ~ </Directory> 문법◦ Option: 지정한 디렉토리 이하에 모든 파일과 디렉토리들에

적용할 접근 제어를 설정함 . None: 모든 옵션을 허용하지 않음 . All : MultiViews 를 제외한 모든 옵션 설정을 허용 . Indexes: 디렉토리 내에 DirectoryIndex 에서 지정한 파일이

없을 경우 , 목록을 보여줌 . Includes: SSI 사용을 허용함 . IncludesNOEXEC: SSI 사용은 허가하지만 #exec 와 #include

는 허용하지 않음 . FollowSymlinks: 심볼릭 링크를 허용함 . ExecCGI: perl 과 같은 CGI 실행을 허용하기 위한 설정 . MultiViews: 웹브라우져의 요청에 따라 적절한 페이지를 보여줌 .

Page 40: Apache2

<Directory [path]> ~ </Directory> 문법◦ AllowOverride: 어떻게 접근을 허용할 것이가에 대한 설정 .

가장 최근에 설정된 값이 우선 적용됨 . None: AccessFileName 에 지정된 파일을 액세스 인증파일로

인증하지 않음 . All: 이전의 인증방식에 대하여 새로운 접근인증방식을 우선

적용하도록 override 를 허용함 . AythConfig: htpasswd 유틸리티를 이용하여 .htaccess 파일로

제어하고자 할 때 해당 디렉토리에 이 값을 적용함 . FileInfo: .htaccess 에 대하여 문서 유형을 제어하는 지시자

사용을 허용 . Indexes: 디렉토리 indexing 을 제어하는 지시자 사용 허용 . Limit: 호스트 접근을 제어하는 지시자 사용을 허용 . Options: 디렉토리옵션을 제어하는 지시자 사용을 허용 .

Page 41: Apache2

아파치 acces_log 파일의 내용 설명 중 , 상태코드에 대한 설명이 알맞지 않은 것은 ?

◦ ① Code 200 - 요청이 유효함 ◦ ② Code 403 - 요청된 엑세스가 허용되지 않음 ◦ ③ Code 404 - 요청된 문서가 존재하지 않음 ◦ ④ Code 401 - 클라이언트나 사용자의 엑세스가 허가됨

리눅스 마스터 1 급 기출문제

401 은 권한이 없을 시 발생하는 클라이언트 오류에 관한상태코드이다 . 정답 4번

Page 42: Apache2

아파치 설정 파일에서 웹문서의 기본 경로를 설정해주는 지시자로 알맞은 것은?

◦ ① ServerRoot "/usr/local/apache/htdocs"

◦ ② DocumentRoot "/usr/local/apache/htdocs"

◦ ③ HttpdRoot "/usr/local/apache/htdocs"

◦ ④ HttpdDocs "/usr/local/apache/htdocs"

리눅스 마스터 1 급 기출문제

DoucumentRoot 는 아파치가 웹페이지를 저장할 디렉토리 를 정의한다 . Alias 와 같은 지시자에 의해 설정된 것 이외에

아파치는 주어진 URL 에서 이 지시자에 의해 정의된 경로를 최상위 경로로 인식한다 . DocumentRoot

"/usr/local/apache/htdocs" 라고 설정하고"http://www.myhost.com/index.html" 와 같이 접속한다면 , 서버 내부적으로는/usr/local/apache/htdocs/index.html 을 의미하게 된다 . 정답 2번

Page 43: Apache2

아파치 웹 서버에 접속하려고 했더니 웹 페이지가 나오는 것이 아니라 파일들의 목록이 그대로 화면에 출력될 경우 환경설정을 변경내용으로 알맞은 것은 ?

◦ ① MultiViews 옵션추가 ◦ ② MultiViews 옵션삭제 ◦ ③ Indexes 옵션추가 ◦ ④ Indexes 옵션삭제

리눅스 마스터 1 급 기출문제

httpd.conf 의 해당디렉토리 설정에서 Options 에 Indexes를 추가하면 디렉토리와 파일이 탐색기 처럼 나타남 . 정답 4번

Page 44: Apache2

다음은 간략한 가상 호스팅에 대한 아파치 웹 서버 설정 파일의 내용이다 . 설정에 대한 설명으로 가장 알맞은 것은 ?

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>

리눅스 마스터 1 급 기출문제

① 사용자가 www.ihd.or.kr, my.ihd.or.kr, inux.ihd.or.kr 의 어느 주소로 위의 서버에 접근하더라도 모두 같은 페이지를 볼 수 있도록 설정하였다

② 위의 가상호스트 설정은 각 웹 페이지에 모두 같은 IP 주소로 접근 할 수 있기 때문에 IP 기 반 가상 호스트 설정임을 알 수 있다

③ 각각의 가상서버들에 웹을 통해 접근할 경우 각기 다른 포트번호를 통해서 접근 할 수 있도록 설정이 되어있다

④ 위의 가상호스트 설정은 각 웹 페이지에 모두 같은 IP 주소로 접근 할 수 있기 때문에 이름기반 가상호스트 설정임을 알 수 있다

1. DocumentRoot 를 각각 다르게 설정하였기 때문에 같은 페이지를 볼 수 없다 .

2. 이름기반 가상호스트 설정을 해야 각 웹 페이지에서 같은 IP 로 접근 할 수 있다 .

3. 포트는 80 만 사용하고 있다 .

1, 2, 3 번 모두 틀렸으므로 4번이 정답이다 .

Page 45: Apache2

아파치 웹 서버 설정파일인 httpd.conf 의

KeepAliveOn 이 되어있는 경우 , 지속적인 접속

동안 허용할 최대 요청횟수를 지정하는 지시자로 알맞은 것은 ?

◦ ① KeepAliveTimeout 15

◦ ② StartServer

◦ ③ Timeout 300

◦ ④ MaxKeepAliveRequests 100

리눅스 마스터 1 급 기출문제

정답 4번