공개 SW 솔루션설치 & 활용가이드 미들웨어 > WEB 서버 제대로배워보자 How to Use Open Source Software Open Source Software Installation & Application Guide
CONTENTS 1. 개요 2. 기능요약 3. 실행환경 4. 설치및실행 5. 기능소개 6. 활용예제 7. FAQ 8. 용어정리
- 3-1. 개요 소개 주요기능 1995 년웹서버중하나인 NCSA httpd 1.3 웹서버를기반으로탄생 (National Center for Supercomputing Applications: 미국국립수퍼컴퓨터활용센터 ) 아파치소프트웨어재단 (Apache Software Foundation) 에서개발하여배포하는공개 SW 웹서버소프트웨어 웹서버의정적컨텐츠를효율적으로제공 (CSS, HTML) 다양한보안기능 (SSL, Proxy, ACL, Directory 접근제한 ) 하나의서버에서여러도메인운영 ( 가상호스트기능 ) 대분류 미들웨어소분류 Web Server 라이선스형태 Apache License v2.0 사전설치솔루션 없음 버전 2.4.28 (2017 년 10 월기준 ) 특징보안취약점개발회사 / 커뮤니티공식홈페이지 안정성과성능으로확장성으로세계에서가장많이사용되는웹서버 공개 SW 로무료로사용가능하며다른상용웹서버와비슷한성능보유 지속적인패치파일제공으로최신의업그레이드가가능 다양한추가기능이있으며구축용이, 유연한모듈지원 취약점 ID : CVE-2017-9798 심각도 : 7.5 HIGH(V3) 취약점설명 : '.htaccess' 파일에 Limit 지시문이설정되어있고유효하지않은 HTTP 메서드로설정된시스템에서원격사용자는경로에대해특수하게조작된 HTTP OPTIONS 요청을보내메모리오류를트리거하고잠재적으로민감한정보획득 대응방안 : 2.4.27 이상으로업그레이드 참고경로 : https://security.gentoo.org/glsa/201710-32 Apache Software Foundation https://www.apache.org
- 4-2. 기능요약 Apache 주요기능 보안기능성능적인측면가상호스트기능운영적인측면부가적인기능 SSL, Proxy, ACL, Directory 접근제한 * Directory 접근제한 : 웹서버가제공하는페이지, 경로에대한접근제한설정 리소스분산처리, Cache(Expires), HTTP 표준설정 MPM(Multi-Processing Module), KeepAlive 하나의서버에여러도메인운영, 서버호스팅 ErrorDocument, 지시자를사용해특정에러발생시특정페이지로 Redirect 사용자에게편리하고친절한메시지표시 Access Log 가기록되어접속한클라이언트의 IP, 도메인등접속정보분석가능 유용한 Apache Module 등제공
- 5-3. 실행환경 하드웨어제약이거의없음 OS 플랫폼종류에따른지원 - Unix 계열 - 비Unix 플랫폼 : BeOS, OS/2, Windows 요구사항 - 디스크공간 : 최소 50MB 이상 ( 설치시아파치는약 10MB 디스크공간차지 ) - ANSI-C 컴파일러와컴파일시스템설치확인 - 정확한시간표시 ( Network Time Protocol 기반 ntpdate or xntpd 사용 )
- 6-4. 설치및실행 세부목차 4.1 설치및실행 (Windows) 4.2 설치및실행 (CentOS RPM) 4.3 설치및실행 (CentOS Source)
- 7-4. 설치및실행 4.1 설치및실행 (Windows)(1/4) 설치파일버전 - OS Version : Windows Server 2012 R2 - Visual Studio 2017 (VC_redist.x64) - Apache Version : httpd-2.4.28-win64-vc15.zip 2017년 10월기준공식사이트에서 2.2.34 소스버전파일만제공하기때문에아래사이트에미리컴파일되어있는파일사용 * https://www.apachelounge.com/download/ 1. 아파치설치전해당사이트에있는 Visual Studio 2017 파일다운 / 설치 2. OS Version, Bit 에맞는 Apache 파일다운, 압축해제
- 8-4. 설치및실행 4.1 설치및실행 (Windows)(2/4) 3. 압축해제후나오는 Apache24 폴더를 원하는곳에이동 ( 권장 : C:\ ) 4. Apache설치경로 \conf\httpd.conf 수정 4.1 ServerRoot 경로를설치한경로로변경 ServerRoot "c:/apache24 ServerRoot 설치경로 * 여기서는기본경로사용하며, 디렉터리기호인 \ 는가급적 / 로변경 (php 설치할경우마찬가지로적용 ) [C 드라이브압축해제 ] 4.2 포트변경 Listen 80 Listen 사용할포트 * 여기서는기본포트사용 [httpd.conf 수정 ]
4. 설치및실행 4.1 설치및실행 (Windows)(3/4) 4.3 문서저장위치변경 - DocumentRoot "c:/apache24/htdocs DocumentRoot 웹문서루트 - <Directory "c:/apache24/htdocs"> <Directory " 웹문서경로 "> 5. + R 누른후 control 입력 6. 시스템 > 고급시스템설정 > 고급탭의 환경변수 (N) 단추클릭 > 시스템변수 > Path 변수편집 > 맨끝에 설치경로추가 ( 설치경로는 ; 세미콜론으로구분 ) [httpd.conf 수정 ] [ 환경변수수정 ] - 9 -
- 10-4. 설치및실행 4.1 설치및실행 (Windows)(4/4) 7. + X 누른후명령프롬프트를관리자권한으로실행 8. httpd k install 입력 9. httpd k start 입력 10. 웹브라우저에서 http://localhost 입력후 It works! 확인 [ 아파치시작 ] [ 웹브라우저확인 ]
- 11-4. 설치및실행 4.2 설치및실행 (Linux - RPM)(1/3) OS Version : CentOS Linux release 7.4.1708 Apache Version : httpd-2.4.6-67.el7.centos.5.x86_64 CentOS 에서는기본적으로 yum 을사용하여 RPM 설치가능 Yum 이란? RPM 기반의시스템을위한자동업데이트및 패키지설치 / 제거도구 ( 의존성패키지를같이설치 ) 1. 서버에 httpd 패키지가설치되어있는지확인 # rpm qa grep httpd 2. 설치가능한 httpd 패키지버전확인 # yum info httpd [ 설치가능한 httpd 패키지버전확인 ] 3. 패키지설치및확인 # yum install httpd y # rpm qa grep httpd [ 패키지설치후확인 ]
- 12-4. 설치및실행 4.2 설치및실행 (Linux - RPM)(2/3) 4. 서비스시작 # systemctl start httpd 5. 서비스상태확인 # systemctl status httpd 6. 재부팅시자동시작 # systemctl enable httpd # systemctl status httpd * 위 httpd status Loaded 행에서 enabled 확인 * vendor preset : 패키지초기값 [ 서비스시작및확인 ] [ 서비스자동시작설정확인 ]
- 13-4. 설치및실행 4.2 설치및실행 (Linux - RPM)(3/3) 7. 사이트확인웹브라우저에서 http:// 서버IP 로테스트페이지접속확인 * 리눅스서버가 GUI (Graphic User Interface) 모드일경우서버에서웹브라우저로확인가능 [ 클라이언트에서사이트확인 ] [ 리눅스 GUI 모드에서사이트확인 ]
- 14-4. 설치및실행 4.3 설치및실행 (CentOS Source)(1/5) 2017년 10월기준 OS, 아파치최신버전으로설치 - OS : CentOS 7.4 64bit - 아파치파일 : httpd-2.4.28.tar.gz - 필요패키지 : apr-1.6.2.tar.gz, apr-util-1.6.0.tar.gz, pcre-8.41.tar.gz 다운로드경로 http://apache.mirror.cdnetworks.com/httpd/ http://apache.mirror.cdnetworks.com/apr/ https://ftp.pcre.org/pub/pcre/ 1. 서버 /usr/local/src 에파일다운로드 [ 아파치공식미러사이트 ]
- 15-4. 설치및실행 4.3 설치및실행 (CentOS Source)(2/5) 2. 사전설치 Requirement * 해당패키지가없을경우컴파일중에러발생 # yum y install gcc openssl-devel expat-devel ( 사전설치패키지는의존성으로설치해야하는패키지가많고복잡하므로여기서는 Yum 으로설치 ) 3. 다운로드한파일압축해제 # cd /usr/local/src # tar xvzf apr-1.6.2.tar.gz # tar xvzf apr-util-1.6.0.tar.gz # tar xvzf httpd-2.4.28.tar.gz # tar xvzf pcre-8.41.tar.gz # mv apr-1.6.2./httpd-2.4.28/srclib/apr # mv apr-util-1.6.0./httpd-2.4.28/srclib/apr-util [ 의존성패키지설치 (yum)] [ 패키지설치확인 ]
- 16-4. 설치및실행 4.3 설치및실행 (CentOS Source)(3/5) 4. pcre 설치 # cd /usr/local/src/pcre-8.41 #./configure # make # make install ( 컴파일결과에에러유무확인 ) 5. httpd 설치 # cd /usr/local/src/httpd-2.4.28/ #./configure --prefix=/usr/local/httpd-2.4.28 -- enable-mods-shared=most --enable-rewrite -- enable-ssl --enable-expires # make # make install [httpd configure 결과 ] * PCRE 란? Perl 호환정규표현식 Perl 5와같은구문, 의미를사용하여정규식패턴일치구현하는함수집합메일전송에이전트용으로만들었으나자체 API, POSIX 호환성같은강점으로오픈소스프로젝트에서두루두루사용
- 17-4. 설치및실행 4.3 설치및실행 (CentOS Source)(4/5) 6. 아파치시작및확인 # /usr/local/httpd-2.4.28/bin/httpd k start # ps ef grep httpd grep v grep 아파치실행프로세스확인 # netstat anp grep httpd 아파치서비스포트확인 # curl http://127.0.0.1 127.0.0.1 은서버자신을가르키는주소로서버 http 아파치연결시페이지출력확인 [ 아파치시작및확인 ]
- 18-4. 설치및실행 4.3 설치및실행 (CentOS Source)(5/5) 참고 : httpd start 시 httpd: could not reliably determine the server s fully qualified domain name~ 문구가출력되는데, 설정파일에서 ServerName 옵션값을설정하지않아서나오는구문으로정확한도메인명을입력요청하는구문이다. 오류구문이아니며이문서에서는해당구문을무시한다. 7. 웹브라우저에서사이트확인 [ 웹브라우저확인 ]
- 19-5. 기능소개 세부목차 5.1 httpd.conf 설정파일 5.2 httpd 다양한옵션및기능 5.3 가상호스트기능 5.4 가상호스트설정
- 20-5. 기능소개 5.1 httpd.conf 설정파일 (1/8) httpd.conf 파일은아파치의주설정파일이다. 다양한옵션과설정으로뛰어난보안과성능향상이장점 ServerRoot /usr/local/apache 아파치의 Root 디렉터리. 이후대부분의경로 (PATH) 들은이경로를 Root 로한상대경로로표시됨 Listen 80 아파치에서사용하는 default 포트 80 포트이외다른포트사용가능 ServerAdmin root@localhost 여기서지정하는 email 주소는웹문서로딩시에러가발생할경우에러페이지에보여질아파치웹서버 관리자의 email 주소 ServerName www.example.com 클라이언트에게보여주는호스트이름, 예로 www 를쓰지않는호스트에서 www 를쓰는것처럼보이게 할수있다. 현재사용하는도메인이없다면 IP 로사용할수있다.
- 21-5. 기능소개 5.1 httpd.conf 설정파일 (2/8) DocumentRoot /var/www/html 웹문서의루트가있는경로를지정함가상호스트설정에서이지시자를이용하여다른경로에있는웹문서를지정할수있다. <Directory /> Options FollowSymLInks AllowOverride None Order deny,allow Deny from all </Directory> <Directory> 지시자는디렉터리를제어하기위한구문. <Directory> ~ </Directory> 안에는디렉터리를제어하는모든지시어를사용할수있음 Options : 접근제어를설정, 해당옵션에는아래값이있다. - None : 모두차단 - All : 모두허용 - Indexes : DirectoryIndex 옵션에서설정한파일 index.html, index.php 파일이존재하지않을경우웹브라우저로디렉터리내파일목록리스트를표시 파일리스트노출시키므로보안상좋지않다.
- 22-5. 기능소개 5.1 httpd.conf 설정파일 (3/8) - FollowSymlinks : 심볼릭링크허용, 웹브라우저에서실제심볼릭링크파일경로까지확인가능하므로 보안상좋지않다. - ExecCGI : perl 등과같은 CGI 실행을허용, perl 외에도 CGI 실행이되지않을경우해당옵션을확인해야한다. AllowOverride : 접근방법결정, 설정하는값들은중복해서설정될수있으며가장최근설정값이적용됨 - None : AccessFileName 에지정된파일을액세스인증파일로인식하지않음, 보통 AccessFileName 값은.htaccess 이므로이를무시하여새로운접근인증방식을 Override 하지않음 - All : 이전의인증방식에대하여새로운접근인증방식을우선적용하도록 Override를허용한다. - AuthConfig : AccessFileName 지시자에명시한파일.htaccess 에대하여다양한클라이언트인증지시자의사용을허용, htpasswd 명령어로특정디렉터리접근을.htaccess 파일로제어 - FileInfo : AccessFileName 지시자에명시한파일에대하여문서유형을제어하는지시자허용 (ErrorDocument) - Indexes : AccessFileName 지시자에명시한파일에대해디렉터리 Indexing 제어지시자허용 (AddDescription, DirectoryIndex, FancyIndexing, IndexOptions) - Limit : AccessFileName 지시자에명시한파일에대해호스트접근제어지시자허용 (allow, deny, order) - Options : AccessFileName 지시자에명시한파일에대해 Options, XBitHack 같은특정디렉터리옵션을제어하는지시자허용
- 23-5. 기능소개 5.1 httpd.conf 설정파일 (4/8) ErrorLog logs/error_log 웹서버에러로그파일지정가상호스트설정에서별도에러로그파일을사용하지않을경우해당로그파일사용 LogLevel warn ErrorLog 파일기록내용을얼마나자세하게또는어떤수준까지기록할것인가를결정해당지시자 LogLevel은아래와같다. ( 아래로갈수록세부적으로출력 ) - none : 발생하는모든상황에대한메시지무시 - emerg : emergency, 최상위매우위험한상황에대한메시지, 전체공지가요구됨 - alert : 즉각적인조치를취해야하는상황의메시지 - crit : 급한상황은아니지만 critical한 ( 치명적인 ) 메시지로빠른조치필요 - error : 에러가발생한상황메시지 - warn : 주의를요구하는메시지, 경고상황 (warning) - notice : 알림, 보통수준보다중요한상황 - info : 단순한프로그램에대한정보 (information) 및메시지 - debug : 최하위, 디버깅관련메시지 - * : 발생하는모든상황에대한메시지 오류로그를너무자세하게표시할경우불필요한내용이방대해지며적절한수준설정필요
- 24-5. 기능소개 5.1 httpd.conf 설정파일 (5/8) Redirect permanent /foo http://www.example.com/bar 특정디렉터리경로로접근시다른웹사이트경로 (URL) 로 Redirect 위의예로보면 /foo 디렉터리접근시 http://www.example.com/bar Redirect ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ CGI 스크립트를특정경로 /usr/local/apache/cgi-bin 에서만제공 보안향상옵션으로사용자들이해당경로에존재하는 cgi 파일만사용할수있도록한다. DefaultType text/plain Mime.types 파일에정의되지않은파일형식에대한요청을받았을때알수없는문서타입에대해사용할기본적인 mime 타입, 위의내용도지정되어있다면아파치에서인식하지못하는 mime 타입에대한요청을받았을때일반텍스트문서로인식하여로딩한다. TypesConfig conf/mime.types Mime.types 파일을어디서찾을것인가를지정 Mimye.types 파일은서버에의해리턴될수있는파일명과 mime 형식을기술
- 25-5. 기능소개 5.1 httpd.conf 설정파일 (6/8) # prefork MPM 전통적인아파치요청처리방식 <IfModule mpm_prefork_module> StartServers 5 : 아파치데몬시작시자식프로세스개수 MinSpareServers 5 : 아파치의빠른응답속도를위한유휴서버최소개수, 해당값보다적으면추가생성 MaxSpareServers 10 : 유휴서버최대개수, 해당값보다많으면유휴서버삭제 MaxClients 150 : 초기시작시실행가능한최대아파치자식프로세스개수 MaxRequestsPerChild 0 : 자식프로세스들이처리할수있는클라이언트요청개수, </IfModule> 해당값만큼요청을받으면자식프로세스는죽음 0 설정시죽지않음 부하, 자원낭비면에서적절한사용필요 # worker MPM 방문자의요청을스레드방식으로처리 <IfModule mpm_worker_module> StartServers 2 : 아파치데몬시작시서퍼프로세스개수 MaxClients 150 : 동시연결가능한클라이언트의최대개수
- 26-5. 기능소개 5.1 httpd.conf 설정파일 (7/8) prefork 모듈의 MaxClients 옵션과는그의미가다름, 지정한값 ( 연결개수 ) 이상의클라이언트요청이생긴다면아파치는응답하지않고클라이언트요청을무시프로세스가시스템자원을무한정차지하는것방지 MinSpareThreads 25 : 새로운요청을지체없이처리하기위해대기하고있는최소스레드개수 MaxSpareThreads 75 : 새로운요청을지체없이처리하기위해대기하고있는최대스레드개수 ThreadsPerChild 25 : 자식프로세스가가질수있는스레드개수 MaxRequestsPerChild 0 : 자식프로세스가서비스할수있는최대요청개수 </IfModule> UserDir public_html 웹서버에서여러사용자의홈페이지를각각만들어사용시필요한개별사용자의홈페이지디렉터리이름예로 test 라는계정의홈페이지가 http://www.test.co.kr/~test 일때 test 계정의 public_html 디렉터리가홈디렉터리가되어이디렉터리에있는초기문서 index.html 을출력
- 27-5. 기능소개 5.1 httpd.conf 설정파일 (8/8) http://www.test.co.kr/~test 접속시연결및페이지출력상세과정 1) DNS 로 www.test.co.kr 해석후서버에요청 2) 서버 /etc/passwd 파일에서 test 계정홈디렉터리 /home/test 확인 3) UserDir 지시자에지정된디렉터리 public_html 확인 4) /home/test/public_html 디렉터리에서 DirectoryIndex 에나열된순서에따른파일로딩 5) 만약 /home/test/public_html 디렉터리에 DirectoryIndex에지시한파일이모두없고 Options 옵션에 Indexes 값이설정되어있다면디렉터리파일리스트를웹브라우저에출력 6) 만약 Options 항목에 Indexes 값이설정되어있지않다면 Not Found 라는에러페이지출력 가상호스트설정 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> 가상호스트설정부분은초기에주석처리되어있어주석해제후사용 CustomLog 옵션은해당가상호스트의로그파일경로지정
- 28-5. 기능소개 5.2 httpd 다양한옵션및기능 (1/4) 유용한 httpd 명령어옵션 -d serverroot ServerRoot 지시문의초기값을 serverroot 값으로설정, 기본은 /etc/httpd -f config 데몬시작시 config 파일의지시문사용, config 가 / 로시작하지않으면 ( 절대경로가아니면 ) ServerRoot 와관련된경로로간주, 기본값은 conf/httpd.conf -k start restart graceful stop graceful-stop httpd 데몬시작, 다시시작또는중지 -e level 서버시작시 LogLevel 설정, 이기능은시작시문제를찾기위해오류메시지의자세한표시를 일시적으로늘리는데유용 -S 설정한가상호스트내용출력
- 29-5. 기능소개 5.2 httpd 다양한옵션및기능 (2/4) -t 설정파일의문법점검 (httpd.conf) 문법에문제가없을경우 Syntax OK 구문출력 -E file 지정된파일에로그저장 [E 옵션으로로그파일지정 ] * 위그림에서프로세스확인하여옵션이적용된것을확인, 실제에러로그파일이설정경로대로생성
- 30-5. 기능소개 5.2 httpd 다양한옵션및기능 (3/4) -v -V -l -L 데몬버전을출력데몬의버전및빌드매개변수출력 ( 컴파일설치내용 ) 웹서버에설치되어있는아파치모듈확인웹서버설정지시자확인 [httpd v 옵션사용 ] [httpd l 옵션사용 ] [httpd L 옵션사용 ] [httpd V 옵션사용 ]
- 31-5. 기능소개 5.2 httpd 다양한옵션및기능 (4/4) -h 데몬이사용할수있는옵션도움말출력대부분의데몬, 명령어에서 --help 나 h 옵션으로도움말을볼수있으며, 실제로명령어별로데몬별로많은옵션들이존재하여유용하게옵션및용도를확인할수있다. -h 옵션보다자세한설명은 man 명령어로볼수있다. man 명령어, man 데몬경로 예 ) man cp, man /usr/sbin/httpd [httpd h 옵션사용 ]
- 32-5. 기능소개 5.3 가상호스트기능 (1/2) 가상호스트 (VirtualHost) 란? 가상호스트란하나의웹서버에서여러개의웹서비스를사용하게할수있는서비스 호스팅업체의경우하나의서버에많게는 100 개가넘는가상호스트를설정하여서비스하기도한다. 아파치에서적용할수있는가상호스트종류이름기반가상호스트 : 같은 IP에서도메인명이다른가상호스트운영 ( 가장보편적 ) IP 기반가상호스트 : 가상호스트별로 IP 각각부여포트기반가상호스트 : 동일한호스트에포트만다르게지정 * 기본가상호스트 : 특정호스트에해당사항이없을때기본적으로응답하는호스트 이름기반가상호스트와 IP 기반가상호스트비교이름기반 하나의 IP 로여러개의가상호스트사용클라이언트요청시전송하는헤더중 Host 헤더정보를사용하여가상호스트설정에따라서비스 IP 기반 서버에호스트별 IP 주소사용 IP를추가하기위해네트워크카드추가또는별도네트워크설정이필요
- 33-5. 기능소개 5.3 가상호스트기능 (2/2) 예제를통한비교 이름기반 Listen 80 NameVirtualHost *:80 <VirtualHost *:80> ServerName site1.example.com ServerAlias site1.co.kr ServerAlias site.kr DocumentRoot /var/www/site1 </VirtualHost> <VirtualHost *:80> ServerName site2.example.com DocumentRoot /var/www/site2 </VirtualHost> IP 기반 Listen 192.168.111.100:80 Listen 192.168.111.200:80 <VirtualHost 192.168.111.100:80> DocumentRoot /var/www/site1 ServerName site1.example.com </VirtualHost> <VirtualHost 192.168.111.200:80> DocumentRoot /var/www/site2 ServerName site2.example.com </VirtualHost> TIP 실제 IP 주소를아낄수있고, 네트워크설정이나네트워크카드추가가필요없는이름기반가상호스트설정을많이사용한다.
- 34-5. 기능소개 5.4 가상호스트설정 (1/5) 1. httpd.conf 파일수정메인설정파일은설치위치에따라달라질수있음 [ 목차 2.3 설치및실행 (Linux compile)] 부분에서아파치최신버전으로컴파일한내용으로진행아파치 2.4.x 버전이하버전에서의설정과다를수있음가상호스트설정파일은 httpd-vhosts.conf 사용 # vi /usr/local/httpd-2.4.28/conf/httpd.conf NameVirtualHost *:80 추가 (Apache 2.4.x 이상에선추가하지않아도됨 ) #Include conf/extra/httpd-vhosts.conf 주석제거 (# 기호제거 ) 아래주석제거후 Require all denied 를 Require all granted 로수정 #<Directory /> #AllowOverride none #Require all denied #</Directory>
- 35-5. 기능소개 5.4 가상호스트설정 (2/5) 2. httpd-vhosts.conf 파일수정왼쪽그림과같이수정각옵션에대한내용은 [ 목차 5.1 httpd.conf 설정파일 ] 부분참고 3. 홈페이지경로및테스트페이지생성 # mkdir /home/test # mkdir /home/test2 # vi /home/test/index.html This is webtest.com page 추가 # vi /home/test2/index.html This is webtest2.com page 추가 [httpd-vhosts.conf 파일내용 ] 4. 디렉터리접근권한부여 # chmod R 755 test # chmod R 755 test2
- 36-5. 기능소개 5.4 가상호스트설정 (3/5) 5. 아파치재시작 # /usr/local/httpd-2.4.28/bin/httpd -k restart # ps ef grep httpd 6. 접속할클라이언트호스트파일수정 ( 사용가능도메인이없을경우 ) 서버에서설정한도메인이사용가능도메인이아니므로접속할클라이언트의호스트파일수정 * 실제구매, 사용하는 FQDN 도메인입력시해당부분패스 윈도우 PC의경우권한문제로 hosts 파일을수정하지못하므로아래와같이접근 [ 명령프롬프트를관리자권한으로실행 > notepad C:\Windows\System32\drivers/etc/hosts 입력 > Hosts 파일에아래내용추가후저장 192.168.11.230 webtest.com 192.168.11.230 www.webtest.com 192.168.11.230 webtest2.com 192.168.11.230 www.webtest2.com
- 37-5. 기능소개 5.4 가상호스트설정 (4/5) 7. 웹브라우저에서서버도메인으로접속, 웹페이지확인 [ 윈도우 PC 에서 hosts 파일수정 ] [ 웹브라우저에서사이트확인 ]
- 38-5. 기능소개 5.4 가상호스트설정 (5/5) httpd 옵션 -S 로 VirtualHost 설정확인 # /usr/local/httpd-2.4.28/bin/httpd -S [httpd S 옵션사용 ]
- 39-6. 활용예제 세부목차 6.1 웹인증 (.htaccess) 6.2 웹인증사이트구축
- 40-6. 활용예제 6.1 웹인증 (.htaccess).htaccess 란?.htaccess 란웹서버소프트웨어아파치 (Apache) 에서정의하는환경설정파일웹루트디렉터리하위의디렉터리별로서로다른환경설정을구축하고자할때.htaccess 설정을달리하여각디렉터리에추가한다. 웹인증사용용도회원제로운영하는사이트, 특정그룹별로접속허용하는사이트일반인에겐공개페이지를사내직원에겐업무페이지를보여주는사이트운영자용페이지접속시 서버설정항목 httpd.conf 파일웹인증허용설정웹인증할디렉터리에서.htaccess 파일생성사용자들의 ID, Password 가저장된.htpasswd 파일생성웹브라우저에서웹인증테스트
- 41-6. 활용예제 6.2 웹인증사이트구축 (1/4) 구축환경 - OS 버전 : CentOS 7.4 64bit - Apache 버전 : httpd-2.4.28 구축목표 : 특정사용자만인증하여접속할수있는사이트구축 사전준비 : admin 이라는사용자의사이트구축 # useradd admin # grep admin /etc/passwd /etc/passwd 계정파일에서 admin 계정생성확인 [admin 계정생성및확인 ] # vi /usr/local/httpd-2.4.28/conf/httpd.conf 수정 : DocumentRoot "/usr/local/httpd-2.4.28/htdocs > DocumentRoot "/home/admin 추가 : 수정한 DocumentRoot 열아래아래내용추가
- 42-6. 활용예제 6.2 웹인증사이트구축 (2/4) <Directory "/home/admin"> Options Indexes FollowSymLinks AllowOverride AuthConfig Require all granted </Directory> Admin 계정기본페이지생성 # vi /home/admin/index.html 추가 : <font size=30><b>this is Admin Page</b></font> [httpd.conf 설정파일 admin 계정설정 ] /home/admin 디렉터리이하모든파일 / 디렉터리소유자, 소유그룹 admin 으로변경 # chown admin.admin /home/admin/ -R /home/admin 디렉터리에권한설정 ( 실행권한부여하여디렉터리에있는문서를읽기위함 ) # chmod 755 /home/admin/ # /usr/local/httpd-2.4.28/bin/httpd k restart
- 43-6. 활용예제 6.2 웹인증사이트구축 (3/4) 웹인증사이트구축 httpd.conf 설정파일모듈라인에 mod_auth_basic.so 확인 [httpd.conf 설정파일 mod_auth_basic.so 모듈확인 ] 1. httpd.conf 설정파일 <Directory ~> 지시자에서 AllowOverride 옵션값 AuthConfig 확인 사전준비에서설정 2. 웹인증할디렉터리내에서의.htaccess 파일생성 # vi /home/admin/.htaccess 아래내용추가 // 이글은설명을위한글로왼쪽내용만파일에추가 AuthName Admin-Auth // AuthName 인증창의이름, 보통홈페이지이름입력 AuthType Basic // 인증타입설정, 종류는 Basic 과 Digest가있다. AuthUserFile /home/admin/.htpasswd // 인증정보가저장된파일위치 <Limit GET POST> // GET 방식과 POST 방식접근만을허용 Require valid-user // 패스워드로인증된사용자만이접근허용 </Limit> [ 웹인증구축전사이트확인 ]
- 44-6. 활용예제 6.2 웹인증사이트구축 (4/4) 3. httpd 패키지에포함된 htpasswd 명령어를통한 admin 계정의인증정보파일생성 # /usr/local/httpd-2.4.28/bin/htpasswd -c /home/admin/.htpasswd admin [ 인증정보파일생성 ] [ 인증파일내용확인 ] 4. 암호인증사이트확인 사이트접속시웹인증창확인, 인증정보입력시정상접속확인 [ 암호인증사이트확인 ]
- 45-7. FAQ Q APM을많이구축한다는데 APM 이뭔가요? & A APM는 Apache + PHP + MySQL 의줄임말입니다. 이 3가지를연동하여운영하도록만든환경입니다. PHP는웹프로그래밍언어이며, HTML과다르게웹브라우저에서소스를해석하는것이아닌서버에서해석하여웹브라우저에전달합니다. MySQL 은 SQL 데이터베이스서버입니다. 사진, 동영상, 게시판등훨씬많은데이터들을저장 / 이용하기위해사용합니다. Q Apache 사용률이제일높다고하는데 어떤이유인가요? & A 많은웹서버소프트웨어가있지만 Apache를많이사용하는이유는다음과같습니다. 무료로사용할수있으며, 오래전부터개발되어안정적입니다. 이외에도확장성, 튜닝을통한성능향상등의이유가있으며오랜시간많은분들이사용하여다양한예시와참고자료가있는것도이유중하나입니다.
- 46-7. FAQ Q Apache와 Tomcat 어떤기능과차이점이있나요? & A Apache는정적인데이터를처리하며, Tomcat는동적인데이터를처리합니다. 물론 Tomcat은정적인데이터도처리할수있지만 Apache보다속도가느립니다. 때문에효율과목적에있어동적인데이터처리에사용합니다보통 Apache와 Tomcat을연동하여사용합니다. Q 정적인데이터, 동적인데이터가어떻게다르나요? & A 쉽게말씀드리면정적인데이터는결과값이고정되어있는데이터, 동적인데이터는요청 / 상황등조건에의해결과값이달라지는데이터입니다. 예로정적인데이터는이미지, 단순 HTML Page, 동적인데이터는날짜, 시간, 사용자의연령에따라결과값이다른 Page에서볼수있습니다.
- 47-8. 용어정리 용어 SSL JSP Server Side Web Container WAS 설명 전송계층보안 TLS 의과거명칭으로현재도많이사용한다. 클라이언트 / 서버응용프로그램이네트워크로통신을하는과정에서도청, 간섭, 위조를방지하기위해설계되었다. 암호화로인증, 통신기밀성을제공한다. Java Server Page 약자. Java 를사용한서버측코드가있는웹페이지확장자는.jsp 를사용한다. 네트워크의한방식인클라이언트-서버구조에서서버쪽에서행해지는처리, 데이터위조의가능성을줄일수있으며민감한데이터의경우 ( 인터넷뱅킹, 금융, 게임아이템 ) Server-Side로처리해야한다. 예로 JSP를통한 Java가있다. Servlet, JSP 파일, Server Side 언어코드가포함된파일들에대한요청처리를수행한다. Web Application Server 약자. 웹서버와웹컨테이너의결합으로단순웹서버와구별된다. 클라이언트의요청이있을때내부프로세스로작업후이것을다시클라이언트에게돌려주는역할을수행한국에서는일반적으로 WAS 영어권에서는 AS 로불린다. 예로 Tomcat 이있다.
Open Source Software Installation & Application Guide 이저작물은크리에이티브커먼즈 [ 저작자표시 비영리 동일조건변경허락 2. 0 대한민국라이선스 ] 에따라이용하실수있습니다.