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