2020. 5. 6.

[Linux] apache 서버 정리


설치시 직접 컴파일 해야한다.

*apache 개요

Fem 
PC running est 
Explorer 
espohse 
Server 
running 
Apache Web 
server 
Mac running 
Navigator

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 쓴다.

접속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(가상 호스트)

www.db 1 .com 
www.db2.com 
192.168. 10.31 
www.db 1 .com 
www.db2.com 
: 192.168.10.31 
: 192.168.10.31

*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를 동일하게 설정한다.



댓글 없음:

댓글 쓰기