설치시 직접 컴파일 해야한다.
*apache 개요
HTTP :
Hyper text transfer protocol
Web
application layer protocol
Client/server
model
- Client : browser는 웹용 client app, 질의를 전달하고 요구한 web page를 보여주는 기능을 담당
- Server : Web server로 client의 질의에 응답하고 여러 web object를 client에 전송한다.
HTTP 1.0 : RFC
1945
HTTP 1.1 : RFC
2068
*Apache
- 공식 홈페이지: www.apache.org
- 1995년 NCSA httpd 1.3 을 기반으로 탄생
- GNU GPL 라이센스를 통해 무료 배포
- 가장 높은 웹 서버 소프트웨어 시장 점유율
- 현재 2.2.X 버전이 발표
- 빠른 버그패치와 공개로 보안성이 뛰어남
- 거의 모든 플랫폼을 지원
- A patch server 에서 유래
*Apache 설치
설치
과정
① httpd-2.2.32.tar.gz 버전을 /usr/local/ 에
다운 받는다.
② # cd
/usr/local/
③ # tar
xvfz httpd-2.2.32.tar.gz
④ # cd
./httpd-2.2.32
⑤ #
./configure --prefix=/app/apache --enable-so
⑥ # make
⑦ # make
install
*Apache 구성
주요
구성 파일
- 실행 데몬 : /app/apache/bin/httpd
- 관리 스크립트 : /app/apache/bin/apachectl
- 설정 파일 : /app/apache/conf/httpd.conf
- 초기 서비스 파일 : /app/apache/htdocs/index.html
- 초기 보안설정 할 수 있음
- 컴파일 옵션에 따라 달라질 수 있다.
- 추가 설정
/app/apache/conf/httpd.conf에
‘ServerName localhost’를 추가한다.
Apache 서버 구동
#
/app/apache/bin/apachectl start (stop | restart)
접속해보면 아파치 work 나옴
그리고 처음에 네입서버 안해주면 에러남
떴는지 안떴는지는 ps라는 명령어를 통해 확인한다.
*httpd.conf
httpd.conf 파일의 구문 점검
#
/app/apache/bin/httpd -t
- httpd.conf 파일의 문법상의 오류를 찾아준다.
- “Syntax OK” : 오류 없음
3개의 섹션으로 구성
- 전역 환경 설정 부분
- 기본 서버 구성
- 가상 호스트 부분
*httpd.conf : 전역 환경 설정
ServerRoot
“/app/apache”
- 웹서버의 설정파일, 로그파일 등이 저장되는 최상위 디렉토리
# 이거 잘못 건들면 서버 안올라온다
Timeout
120
- 서버와 클라이언트의 연결시에 아무런 메시지가 없을 때에 오류로 처리 되는 초단위 시간
# 아무것도 안하면 120초 뒤에 접속끊어버림
MaxClients
150
- 접속 가능한 최대 client 수
# 150이면 보통 300명 정도 볼 수 있다.
# 주소옆에 동그라미가 돌고 있으면 그때만 사용하고 있는것이다
# 눈으로 보고 있으면 접속이 끊어진 상태이다.
Startservers
20
- 초기 서버 프로세스의 수
# stand by 서버로 메모리에 뛰어두는것
MinSpareServers/MaxSpareServers
- 대기 상태의 프로세스 수
# 의미 없음
ServerName [명칭]
- DNS나 hosts 파일에 등록된 이름을 지정한다.
# 처음에는 localhost로 설정해둔다.
# 나중에 쓸때만 다시 설정한다
ServerAdmin
root@localhost
- 관리자의 메일주소.
*httpd.conf : 기본 서버 구성
ServerTokens
Major|Minor|Min|Prod|OS|Full
- 클라이언트에 보내는 응답에 포함될 서버의 정보에 대한 설정
- Full은 권하지 않음
# 클라이언트에 대한 정보를 서버에게 보냄, 하지만 지금 안씀
DocumentRoot
“/app/apache/htdocs”
- 웹서버의 홈 디렉토리
# 클라이언트 접속시 어디에 있는 웹페이지를 보여줄건지 설정
# 그냥 바꾸면 403 에러난다.
# OS에서도 웹서버에서도 권한을 줘야 가능하다. 권한의 and연산
DirectoryIndex
index.html index.java index.php
- 메인페이지 파일명
# 순서대로 찾는다. 없으면 404 에러 난다.
ErrorLog
logs/error_log
- 웹서버에 문제가 발생시에 에러를 기록하는 로그파일.
# /app/apache/ 폴더에서 찾는다
CustomLog
logs/access_log combind
- 외부에서 접근한 기록에 대한 로그파일
UserDir
public_html
- 개인 홈디렉토리 지정
*httpd.conf :
Directory 설정 1/4
- 웹서버는 디렉토리 단위로 설정
ex)
Options
Indexes FollowSymLinks
AllowOverride
None
Order
allow,deny
Allow from
all
# 디렉토리 hstdos 안에 넣어줘야한다
# indexs 라는 옵션이 잇어야 가능하다.
# Followsymlinks를 따라 가라는것이다. 링크파일을 허용해준다.
# 아파치의 자체 로그인은 이제 사용하지 않음
# order allow, deny allow 먼저 적용하고 하여 모든 컴퓨터로 접속할 수 있고 deny 로 불허로 할경우가 많다.
# allow from all 모든 컴퓨터 접속가능
*httpd.conf :
Directory 설정 2/4
option
항목
- ALL : 가능한 모든 옵션을 다 사용한다.
- None : 아무런 옵션도 없다.
- Indexes : 메인 페이지가 없는 경우 파일 목록을 보여준다.
- FollowSymLinks : 디렉토리의 심볼릭 링크를 이용한다.
- ExecCGI : CGI를 실행한다.
- …
AllowOverride 항목
- 디렉토리에 대한 apache 레벨에서의 접근 제한
- 사용자 인증 파일인 .htaccess 파일 사용여부
- 현재 인증은 apache 레벨에서 구현하지 않는다.
# 사용하지 않아서 안씀. 옛날옛적에 아파치에 로그인할떄 씀
*httpd.conf :
Directory 설정 3/4
Order
항목(2.2)
- 접근 권한 적용 순서
ex
Order deny,
allow
Deny from
all
Allow from
192.168.123.
-
192.168.123. 으로 시작하는 IP를
제외하고 모든 접속을 막는다.
# deny를 먼저쓰면 deny먼저 지정 현재 deny는 all 이므로 기본적으로 전체 거부
# allow만 따로 허용
Require
설정
Require
all [denied | granted] : 기본 설정
Require
[not] ip ip_주소 : IP별
설정
Require all
granted
Require not
ip 192.168.123.0/24
-
192.168.123.0 네트워크를 제외하고 모두 접속
허용
# Order와 Require은 둘다 쓰면 안된다.
*httpd.conf :
Directory 설정 4/4
각
사용자의 개인 홈디렉토리에 대한 설정예
Options
Indexes FollowSymLinks
AllowOverride
None
Order
allow,deny
Allow from
all
Options
Indexes FollowSymLinks
AllowOverride
None
Require all
granted
*httpd.conf :
Document Root
HTTPD
서버 관리와 Web page 관리는
서로 다른 책무이므로 반드시 분리 구성한다.
- Web page 관리자가 시스템 디렉토리에 접근해서는 안된다.
- Web page 관리자 계정 web 계정을 생성하고 홈디렉토리 내에서 관리가 이뤄지도록 한다.
- 관리자 정보
- 계정 : web
# 웹을 관리하는 계정한테 주는것이다.
# 직무에 관련되 있기에 여러 사람일수도 있고 한명일수도 있고 사람이 바뀔 수도 있다.
- 홈디렉토리 : /home/web
- Document Root : /home/web/httpd/html
# OS 안에서도 폴더에 퍼미션을 넣어줘야한다.
설정한
이후 apache를 재시작하고 접속한다.
- 퍼미션이 부족하면 403 에러가 발생한다.
*Web – httpd.conf(가상 호스트)
IP
기반 호스트
# 실습은 하지만 많이 쓰이지않음 - ip가없다.
# 각 ip마다 열리는 페이지를 다르게 설정할 수 있다.
# 웹서버 한대를 가지고 두개의 ip를 쓴다.
DocumentRoot
홈디렉토리
ServerName
IP또는 도메인명
irtual Host> 항목에는 모든 전역 설정 파라미터가 기술 가능하다.
- 예
DocumentRoot
/home/web/httpd/31
ServerName
192.168.10.31
DocumentRoot
/home/web/httpd/32
ServerName
192.168.10.32
*Web – httpd.conf(가상 호스트)
*Web – httpd.conf(가상 호스트)
conf/extra/httpd-vhosts.conf
파일 설정
NameVirtualHost
*:80 ← * 대신 IP 지정이
가능하다.
ServerAdmin
[메일 주소]
DocumentRoot
"[Web 홈 디렉토리]"
ServerName
[접속 도메인명]
ServerAlias
[별명]
ErrorLog
"logs/[에러 로그 파일명]"
CustomLog
"logs/[접속 로그 파일명]" common
httpd.conf
에서 include 설정이
필요하다.
도메인
이름 기반 호스트
NameVirtualHost
*:80
DocumentRoot
/home/web/httpd/db1
ServerName www.db1.com
ServerAlias
db1.com
ErrorLog
logs/db01_error_log
CustomLog
logs/db01_log common
DocumentRoot
/home/web/httpd/db2
ServerName www.db2.com
ServerAlias
db2.com
ErrorLog
logs/db02_error_log
CustomLog
logs/db02_log common
주의
사항
- 호스팅 디렉토리에 대한 접근 설정이 유효해야한다.
- conf/extra/httpd-vhosts.conf를 참고한다.
- apache 설정보다 name server설정이 우선이다.
- 호스팅 중인 호스트명이 name 서버에서 확인돼야 한다.
- 시스템의 호스트명과 /etc/hosts에 기록된 이름이나 IP를 동일하게 설정한다.
댓글 없음:
댓글 쓰기