본문 바로가기
System/Server

Apache 웹 서버 구축 실습(Linux)

by 슬픈 야옹이 2023. 2. 21.

지난 DNS 서버 구축 실습 포스트에서는 너무 많은 내용을 담으려다 되려 글이 길어지고 내용도 충실히 담지 못했다.

 

이번 포스트부터는 쉽게 보고 따라할 수 있도록 과정만 간략히 정리하고,

이론이나 설정 상세 등의 내용은 별도의 포스트에 따로 정리하려 한다.

 

이 블로그를 운영하는 가장 큰 목적은 내가 공부한 내용을 내가 나중에 볼 수 있도록 정리하는 것이기 때문이다.

 

이 포스트에서는 다음과 같은 구성으로 웹 서버를 구축한다.

웹 서버
도메인 이름: www.st07.sec
IP주소 : 192.168.10.176/24

로컬 네임 서버
IP주소 : 192.168.10.175/24

 

 

Apache 웹 서버를 구축하는 과정은 크게 프로그램 설치 및 컴파일 과정과 설정 및 실행 과정으로 나뉜다.

특별히 정해진 매뉴얼은 아니고 개인적으로 기억하기 편해서 나누었다.

 

본 포스트는 httpd 2.2.x 버전으로 진행한다.

x로 표기한 자리는 달라도 큰 문제 없지만 직접 표기한 앞 두자리는 달라지면 설치 방법이 달라질 수 있다.

 

 

1. 프로그램 설치 및 컴파일

2. 웹 서버 설정 및 실행

 

 

 

 

1. 프로그램 설치 및 컴파일

1-1. 관련 패키지를 설치한다.

# yum install -y gcc gcc-c++ cmake apr apr-util zlib-devel wget net-tools expat-devel perl

 

 

1-2. httpd 소스 파일을 /usr/local 경로에 다운받는다.

소스 파일은 Apache 공식 사이트에서 구할 수 있다. stable 버전을 권장한다.

# wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz

 

 

 

1-3. 소스파일 압축을 푼다.

# tar xvfz httpd-2.2.34.tar.gz

 

 

1-4. Apache 프로그램을 컴파일하고 설치한다.

# cd httpd-2.2.34
# ./configure --prefix=/app/apache --enable-rewrite --enable-so
# make
# make install

prefix : Apache를 설치할 디렉터리 경로 지정

make : 소스코드 컴파일

make install : 프로그램 설치

 

과정을 계속 출력하면서 설치가 진행된다.

중간에 문제가 생기면 실행을 멈추고 에러 메시지를 출력하므로 그때 확인한다.

 

별다른 메시지 없이 과정만 쭉 출력되다가 끝나면 정상적으로 설치된 것이다.

 

 

 

 

 

2. 웹 서버 설정 및 실행

2-1. 웹 서비스를 관리할 web 그룹과 webmaster 사용자를 생성한다.

웹 페이지를 만드는 사람(웹 디자이너 등)이 웹 페이지를 서버에 업로드할 때 이 계정을 사용하도록 한다.

webmaster 계정은 웹 서비스와 관련된 파일 및 디렉터리 외에는 접근할 수 없도록 하는 것이 목적이다.

# groupadd -g 1080 web
# useradd -g web webmaster

web 그룹의 gid는 1024 이상의 임의의 값으로 설정하였다.

 

 

 

 

2-2. 웹서버 홈 디렉터리(DocumentRoot) 생성

웹 서버의 홈 디렉터리를 생성한다. 홈 디렉터리에는 웹 서비스와 관련된 파일(웹 페이지 등)이 업로드된다.

# mkdir -p /home/httpd/html

홈 디렉터리 경로는 임의로 정하거나 사전에 약속한 경로로 설정한다.

단, 해당 경로를 통해서 시스템의 다른 곳에 불법적으로 접근할 수  없도록 안전하게 관리 가능한 경로로 설정한다.

 

 

 

2-3. httpd.conf 파일 수정

conf 파일을 수정한다. 파일은 설치한 디렉터리 하위의 conf 디렉터리에 있다.

/app/apache/conf/httpd.conf

# vi /app/apache/conf/httpd.conf

 

파일 내용을 다음과 같이 수정한다.

...
ServerName [localhost or IP주소]
DocumentRoot “/home/httpd/html”
<Directory “/app/apache/htdocs”>  … </Directory> 주석처리

--------아래 내용 추가------
<Directory "/home/httpd/html/">
        Options Indexes FollowSymLinks
         AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

...

conf 파일 수정
conf 파일 수정




2-4. httpd.conf 파일 구문 점검
/app/apache/bin/httpd  ‐t

 

 

 

2-5. DocumentRoot 경로 디렉터리에 대해 web 그룹과 webmaster에게 권한부여

# chown -R webmaster.web /home/httpd

DocumanetRoot에 webmaster 권한 부여

 



2-6. webmaster 홈 디렉터리와 Apache 서버의 DocumentRoot 마운트

웹 서비스 관리자의 홈 디렉터리에서 DocumentRoot 디렉터리로 바로 접근할 수 있도록 디렉터리를 마운트한다.

이는 ftp로 파일을 업로드할 때 적용되는 보안 기능과 관련된 내용으로, 여기서는 자세히 다루지 않는다.

# mkdir /home/webmaster/httpd
# chown webmaster.web /home/webmaster/httpd
# mount --bind /home/httpd/ /home/webmaster/httpd/

 

 


2-7. 서버 구동

# /app/apache/bin/apachectl start

 

 


2-8. 웹 페이지를 업로드하고 서비스 테스트

별다른 설정을 하지 않은 상태이므로 index.html 파일을 업로드해 테스트한다.

# su webmaster (root로 접속한 상태라면 실행)
# cd ~
# cd httpd/html/
# echo welcome to st07.sec! > index.html

 

다른 클라이언트에서 [www.st07.sec]에 대한 호스팅 정보를 가지고 있는 네임 서버를

로컬 네임 서버로 설정한 뒤 접속을 시도한다.

웹 서버 접속 테스트

 



2-9. rc.local 파일에 자동실행 설정

# vi /etc/rc.d/rc.local

--------아래 내용 추가--------
/app/apache/bin/apachectl start