3.27 (화) - Linux Server 이론 - Apache web 서버
Apache Web Server
◎ HTTP : Hyper Text Transfer Protocol
→ Web application layer protocol
◎ Client - Server model
HTTP 1.0 : connection 마다 1개의 오브젝트 전송
HTTP 1.1 여개의 오브젝트를 전송할 수 있음
HTTP 1.1 에서는 1.0도 사용가능
◎ Apache
- 설명...pdf 파일 참조
◎ 설치 과정
1) httpd-2.2.32.tar.gz 버전을 /usr/local/ 에 다운받는다.
→ /usr/local/ 에 설치하는 프로그램은 시스템 안에서 사용하는 것이 아닌 공유하여 사용할
프로그램이다.
gget http://ftp.apache-kr.org/httpd/httpd-2.2.32.tar.gz
2) #cd /usr/local/
3) # tar xvfz httpd-2.2.32.tar.gz
→ 항상 디렉토리 단위로 압축 / 압축풀기 해야 함.
4) # cd ./httpd-2.2.32
5) #./configure --prefix=/app/apache --enable-so
6) # make
7) # make install
→ configure , make, make install 순서로 컴파일, 요즘 쓰이는 cmake 방법은 여기서는 사용하지 않음.
→ configure에서 컴파일 방식을 미리 지정
→ 요즘에는 configure 에서 쓰는 옵션이 많이 줄었다
(예전에는 모든 기능을 다 추가했어야 했다 1.버전에서)
→ 2.버전에서는 자동 모듈이 적용되어 있음.
dll (dynamic linking library 공용 링크 파일) 어떤 프로그램이 쓰는지 알 수 없으므로, uninstall 하더라도 삭제 되지 않음.
단점 : 지저분함 , 장점 : 공통적인 모듈이 하나만 설치되면 여러 곳에서 사용할 수 있음.
→ --prifix : 프로그램이 설치되는 디렉토리
→ --enable-so 명령어
* compile 을 통한 설치, yum 패키지로 지원하지 않음 (보안 상)
◎ 주요 구성 파일
• 실행 데몬 : /app/apache/bin/httpd
• 관리 스크립트 : /app/apache/bin/apachectl
• 설정 파일 : /app/apache/conf/httpd.conf
- 처음은 4개였음, 1개로 줄임, 파일이 너무 커서 불편, .... ? (이후 설명)
• 초기 서비스 파일 : /app/apache/htdocs/index.html
- 처음에 웹 연습할 때 삭제하라했던 그 파일
• 컴파일 옵션에 따라 달라질 수 있음
• 추가 설정
- /etc/hosts 파일에 IP와 서버의 도메인 명을 입력해준다.
◎ Apache 서버 구동
# /app/apache/bin/apachectl start (stop | restart)
◎ httpd.conf 파일의 구문 점검
# /app/apache/bin/httpd -t
• httpd.conf 파일의 문법상의 오류를 찾아준다.
• “Syntax OK” : 오류 없음
◎ 3개의 섹션으로 구분
• 전역 환경 설정 부분
• 기본 서버 구성
• 가상 호스트 부분
◎ Web – httpd.conf(전역 환경 설정)
• ServerRoot “/app/apache”
- 웹서버의 설정파일, 로그파일 등이 저장되는 최상위 디렉토리
• Timeout 120
- 서버와 클라이언트의 연결시에 아무런 메시지가 없을 때에 오류로 처리되는 초단위 시간
• MaxClients 150
- 접속 가능한 최대 client 수
→ 이 설정이 150 대의 client 만을 수용한다는 것은 아님.
( 웹은 데이터를 읽어들이면 세션을 유지할 필요가 없기 때문 )
• Startservers 20
- 초기 서버 프로세스의 수
• MinSpareServers/MaxSpareServers
- 대기 상태의 프로세스 수
• ServerName [명칭]
- DNS나 hosts 파일에 등록된 이름을 지정한다.
◎ Web – httpd.conf(기본 서버 구성)
• ServerAdmin root@localhost
- 관리자의 메일주소.
• DocumentRoot “/app/apache/htdocs”
- 웹서버의 홈 디렉토리
→ web master가 app 디렉토리에 접근할 수 없게 해야 함
→ 웹 마스터가 접근 가능한 디렉토리 경로로 수정.
→ 홈페이지를 올리고 내리는 건 웹 마스터의 역할
→ '웹마스터'라는 이름으로 통일한 계정을 생성하자.
• DirectoryIndex index.html index.java index.php
- 메인페이지 파일명
• ErrorLog logs/error_log
- 웹서버에 문제가 발생시에 에러를 기록하는 로그파일.
→ 상대경로 - ServerRoot가 기준 디렉토리
• CustomLog logs/access_log combind
- 외부에서 접근한 기록에 대한 로그파일
→ 그냥은 읽지못함 / 읽는 프로그램은 아파치 홈페이지에 존재
• UserDir public_html
- 개인 홈디렉토리 지정
• <Directory “/app/apache/htdocs”> … </Directory>
- 웹서버는 디렉토리 단위로 설정
→ 모든 디렉토리는 기본적으로 접근하지 못하게 설정되어 있음.
ex) 디렉토리별 접근 권한 따로 설정해주어야 함.
<Directory "/app/apache/htdocs">
Options Indexes FollowSymLinks (바깥에서도 접근 가능하도록 SymLinks 설정)
AllowOverride None (인증 시스템을 사용할 수 있게 해줌 - 현재는 사용치 않음)
Order allow,deny (순서 : allow 먼저하고, deny 적용)
Allow from all (모두 접근 가능)
</Directory>
• option 항목
- ALL : 가능한 모든 옵션을 다 사용한다.
- None : 아무런 옵션도 없다.
- Indexes : 메인 페이지가 없는 경우 파일 목록을 보여준다.
- FollowSymLinks : 디렉토리의 심볼릭 링크를 이용한다.
- ExecCGI : CGI를 실행한다.
- …
• AllowOverride 항목
- 디렉토리에 대한 apache 레벨에서의 접근 제한
- 사용자 인증 파일인 .htaccess 파일 사용여부
- 현재 인증은 apache 레벨에서 구현하지 않는다.
• Order 항목
- 접근 권한 적용 순서
ex)
Order deny, allow
Deny from all
Allow from 192.168.123.
- 192.168.123. 으로 시작하는 IP를 제외하고 모든 접속을 막는다.
-- 내일은 Web Master(WM) 계정을 생성하고 WM이 다루는 웹 파일을 시스템과 분리하는 실습 예정 --
댓글
댓글 쓰기