강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Apache웹서버 구축관리 실무연구

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

Apache웹서버 구축관리 실무연구





 

주제

리눅스 기반의 Apache 웹서버 구축 관리실무연구

 

 

 



목차

1. Apache 웹서버 설치하기

2. APACHE 웹서버 실무관리연구

2-1. 아파치 설정파일(httpd.conf) 설정관리

2-2. 아파치(Apache) 실행상태 모니터링

2-3. 아파치 숨은 기법 #1 (특정 접속자에 대한 redirect)

2-4. 아파치 숨은기법#2(개인홈페이지 로딩시 "~"기호 없이 사용하는법)














                                                     작성자

                                 박   성   수

리눅스포털 수퍼유저코리아 대표이사)

papa@superuser.co.kr



1. Apache 웹서버 설치하기


이번 장에서는 리눅스서버에 PHP와 MYSQL을 설치하는 방법에 대해서 알아보도록 하겠습니다.  


*** 리눅스포털      www.superuser.co.kr
### 본자료는 수퍼유저코리아의 리눅스 교육용으로 제작된 간단한 APM설치 메뉴얼입니다. ###

### 제작 : 수퍼유저코리아 ###

### 용도 : 리눅스서버 교육용 APM설치 메뉴얼

### 제작자 : 박성수 (papa@superuser.co.kr)

 

 

### 다운로드 URL

ftp://ftp.superuser.co.kr/apache/apache_1.3.28.tar.gz

ftp://ftp.superuser.co.kr/mysql/mysql-4.0.20.tar.gz

ftp://ftp.superuser.co.kr/php/php-4.2.3.tar.gz

ftp://ftp.superuser.co.kr/qpopper/qpopper4.0.4.tar.gz

ftp://ftp.superuser.co.kr/proftpd/proftpd-1.2.9.tar.gz

 

 

강의실 실제 네트워크 환경

 

교육환경IP및 교육용 강사 PC 2대

IP : 192.168.0.201  (설치 테스트  서버) : 리눅스 설치

     192.168.0.202  (ftp서버, DNS서버) : 노트북

 

 

#### ncftp설치##############

ftp 192.168.0.202 

     ID : anonymous

     PASS : emaiid@domain.co.kr

 

     get ncftp

     quit

     chmod 755 ncftp

     mv ncftp /usr/bin/

 

 

#### MYSQL 설치##############

cd /usr/local

ncftp 192.168.0.202

cd pub

get mysql-4.0.14-tar.gz

quit

tar xvfz mysql-4.0.14.tar.gz

cd mysql-4.0.14

./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euc_kr 

make

make install

cd /usr/local/mysql/bin

./mysql_install_db

useradd mysql

chown -R mysql:mysql /usr/local/mysql/data

 

#### apache 기본설치 ##############

cd /usr/local

ncftp 192.168.0.202

cd pub

get apache_1.3.28.tar.gz

quit

tar xvfz apache_1.3.28

mv apache_1.3.28 apache

cd /usr/local/apache

./configure

make

make install

 

#### PHP설치##############

cd /usr/local/

ncftp 192.168.0.202

cd pub

get php-4.2.3.tar.gz

quit

tar xvfz php-4.2.3.tar.gz

cd php-4.2.3

./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --with-config-file- --enable-ftp

make

make install

cp php.ini-dist /usr/local/lib/php.ini

 

 

#### apache 정상설치##############

cd /usr/local/apache/

./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a

make

make install

 

vi /usr/local/apache/conf/httpd.conf

  

   . UserDir

   . ServerName

   . DocumentRoot

   . php관련 AddType

 

 

        AddType application/x-tar .tgz

        AddType application/x-httpd-php .php4 .php3 .php .htm .html .phtml .ph .inc

        AddType application/x-httpd-php-source .phps

 

#### 사용자 계정생성및 PHP테스트파일생성##############

useradd bible201

chmod 701 /home/bible201

mkdir /home/bible201/www

vi /home/bible201/www/test.php

 

  <?

     phpinfo();

  ?>

 

chown -R bible201:bible201 /home/bible201/*

 

 

#### MYSQL, apache실행 및 APM설치확인##############

/usr/local/mysql/bin/mysqld_safe &

/usr/local/apache/bin/apachectl start

 

http://192.168.0.201/~bible201/test.php

 

 

############################  0. 홈페이지디렉토리  ##############

/etc/rc.d/init.d/iptables stop

 

useradd bible200
mkdir /home/bible200/www

mkdir /home/bible200/www_log

chmod 755 /home/bible200

chown -R bible200:bible200 /home/bible200/*

vi /home/bible200/www/index.html

        bible200.fa.or.kr

vi /home/bible200/www/test.php

        <?

        phpinfo();

        ?>

http://172.27.4.200

http://172.27.4.200/test.php

 

 

###############    1. APACHE   ################

 

cd /usr/local/

tar xvfpz apache_1.3.28.tar.gz

mv apache_1.3.28 apache

cd /usr/local/apache

./configure

make

make install

 

PHP설치한 후에 다시 돌아온다.

 

cd /usr/local/

tar xvfpz apache_1.3.28.tar.gz

mv apache_1.3.28 apache

cd /usr/local/apache

 

./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a

 

make

make install

 

cd /usr/local/apache/conf/

 

vi /usr/local/apache/conf/httpd.conf

 

여기서 바꿔줄 내용들....

 

        ServerAdmin webmaster@bible200.fa.or.kr

        DocumentRoot /home/bible200/www

        ServerName 172.27.4.200

        <IfModule mod_userdir.c>

            UserDir www

        </IfModule>       

        <VirtualHost 172.27.4.200>

            ServerAdmin webmaster@bible200.fa.or.kr

            DocumentRoot /home/bible200/www

            ServerName 172.27.4.200

            ErrorLog /home/bible200/www_log/error_log

            CustomLog /home/bible200/www_log/access_log common

        </VirtualHost>

        <IfModule mod_dir.c>

            DirectoryIndex index.html index.htm index.php index.php3 index.cgi

        </IfModule>

 

        AddType application/x-tar .tgz

        AddType application/x-httpd-php .php4 .php3 .php .htm .html .phtml .ph .inc

        AddType application/x-httpd-php-source .phps

 

 

#############################    2. PHP    ####################

cd /usr/local

tar xvfpz php-4.2.3.tar.gz

cd /usr/local/php-4.2.3

 

./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --with-config-file-

--enable-ftp --enable-socket --enable-track-vars=yes

 

make

make install

cp php.ini-dist /usr/local/lib/php.ini

 

[root@bible200 php-4.2.3]# ls -l /usr/local/lib/

total 32

drwxr-xr-x   18 root     root         4096 Mar 10 13:35 php

-rw-r--r--    1 root     root        28372 Mar 10 13:35 php.ini

[root@bible200 php-4.2.3]#

 

 

############################    3. MYSQL     ###################

 

cd /usr/local

tar xvfpz mysql-4.0.14.tar.gz

 

cd /usr/local/mysql-4.0.14

./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euc_kr

make

make install

 

 

cd /usr/local/mysql/bin

./mysql_install_db

useradd mysql

chown -R mysql:mysql /usr/local/mysql/data

/usr/local/mysql/bin/mysqld_safe &

/usr/local/mysql/bin/mysqladmin -u root password 12345

 

ps -ef | grep mysqld

 

/usr/local/mysql/bin/mysql -u root -p mysql

 

mysql>

 

 

############################  4. Proftpd    #####################

 

/usr/local

tar xvfpz proftpd-1.2.8.tar.gz

cd proftpd-1.2.8

 

./configure --prefix=/usr/local/proftpd --enable-timeout-no-transfer --enable-timeout-idle --enable-autoshadow --enable-sendfile

 

make

make install

 

vi /usr/local/proftpd/etc/proftpd.conf

cd /usr/local/proftpd/sbin

./proftpd

ps -ef | grep proftpd

 

 

########################## 5. QPOPPER   #########################

 

cd /usr/local

tar xvfpz qpopper4.0.4.tar.gz

cd qpopper4.0.4

./configure --enable-specialauth --enable-bulletins=/var/spool/bulls --enable-servermode

make

 

cp popper/popper /usr/local/lib/popper

vi /etc/services

cd /etc/xinetd.d

 

vi /etc/xinetd.d/pop3

 

/etc/rc.d/init.d/xinetd restart

 

 

telnet localhost pop3

telnet localhost 110

telnet 172.27.4.101 110

 

user bible101

pass 88888888

list

retr 1

quit

 

 

########################## 6. 아파치기능 및 관리   #########################

 

<Location /server-status>

    SetHandler server-status

    Order allow,deny

    Allow from all

</Location>

 

http://172.27.4.200/server-status

 

http://172.27.4.200/server-status?refresh=10

 

 

 

아파치 ID, 패스워드 인증설정 절차

----------------------------------------------------------------------------------------

절차1. /usr/local/apache/conf/httpd.conf파일을 다음과 같이 수정한다.

 

<Directory /home/*/www>

    AllowOverride FileInfo AuthConfig Limit

    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

    <Limit GET POST OPTIONS PROPFIND>

        Order allow,deny

        Allow from all

    </Limit>

    <LimitExcept GET POST OPTIONS PROPFIND>

        Order deny,allow

        Deny from all

    </LimitExcept>

</Directory>

 

AccessFileName .htaccess

 

절차2. /home/bible200/www 디렉토리에서 아래와 같이 .htaccess파일을 생성(만든)한다.

 

[root@bible200 www]# cat .htaccess

AuthName "bible200 Admin Auth"

AuthType Basic

AuthUserFile /home/bible200/www/.htpasswd

AuthGroupFile /dev/null

<Limit GET POST>

require valid-user

</Limit>

[root@bible200 www]#

 

 

절차3. /home/bible200/www 디렉토리에서 아래와 같은 명령어를 사용하여

         로그인ID와 패스워드를 저장하고 있는 .htpasswd파일을 생성한다.

 

htpasswd -c .htpasswd webmaster

 

chmod 664 .htpasswd

 

htpasswd .htpasswd master

 

 

절차4. 웹브라우즈에서 다음과 같이 인증창이 뜨는가를 확인한다.

 

http://172.27.4.200

----------------------------------------------------------------------------------------



2. APACHE 웹서버 실무관리연구


2-1. 아파치 설정파일(httpd.conf) 설정관리

지금까지 아파치를 컴파일하여 설치하는 방법과 RPM으로 설치하는 방법 그리고 rpm으로 설치했을 경우에 설치되는 파일들에 대해서 알아보았습니다. 이번에는 아파치의 가장 핵심적인 아파치 설정파일(httpd.conf)에 대해서 알아보도록 하겠습니다. 그리고 아파치 설정파일의 예는 RPM으로 설치한 아파치가 아닌 컴파일설치시에 생성되는 httpd.conf파일을 기준으로 설명합니다. 물론 이 두가지의 경우 크게 다르지는 않지만 굳이 컴파일버전의 설명임을 말씀드리는 이유는 아파치 홈디렉토리와httpd.conf파일의 위치가 다르기 때문입니다. 하지만 RPM으로 설치한 아파치를 운용하시는 서버관리자들도 동일하게 보시면 됩니다.

httpd.conf 파일은 크게 세부분으로 나누어져 있습니다.

Section 1: Global Environment : 아파치 전체적인 영향이 미치는 설정

Section 2: 'Main' server configuration :주 서버에 대한 설정

Section 3: Virtual Hosts : 가상호스트에 대한 설정

자, 그럼 이제부터 이 아파치웹서버의 모든 환경을 설정하는 아파치환경파일 httpd.conf파일의 설정방법에 대해서 상세히 알아보도록 하겠습니다.


### Section 1: Global Environment

전제환경설정 파트로 Section 1에서 설정하는 것들은 아파치 웹서버에 전반적인 영향을 미칩니다.

ServerType standalone


서버의 운용방법으로는 standalone과 inetd방식이 있습니다. 방식은 하나의 아파치웹데몬(httpd)이 클라이언트의 요구사항들에 직접 응답하는 방식으로 빠른 응답속도를 요구할 경우에 사용합니다. 거의 대부분(약 99%) standalone방식을 사용합니다. inetd 방식은 인터넷수퍼데몬인 inetd데몬이클라이언트의 접속요구가 있을 때마다 아파치웹데몬(httpd)를 구동하는 방식입니다. 일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용하십시오.

ServerRoot "/usr/local/apache"


아파치서버의 홈디렉토리를 지정하며 절대경로로 지정합니다. 아파치 설치시에 나오는 아파치의 홈디렉토리를 지정하지 않아도 디폴트(default)로 /usr/local/apache로 지정하여 설치하게 됩니다. 이후로 나오는 대부분의 패스들은 이 경로에 대한 상대경로로 지정이 됩니다. 예를 들어 환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치입니다.

PidFile logs/httpd.pid

PidFile 설정은 ServerType을 Standalone으로 설정했을 때만 유효한 것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를 기록하는 파일을 지정합니다.당연히 아파치서버가 재시작되거나 과부하로 인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 됩니다.즉 다시말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의 프로세스번호(PID)값이 기록된다고 하면 맞습니다. ServerRoot를 기준으로 한 상대경로로 지정됩니다. 절대경로로 지정하려면 "/"로 시작하는 절대경로를 적어주면 됩니다.

Timeout 300


클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와 서버간에 아무런 메세지가 발생하지 않았을 때 오류로 처리될 시간을 초단위로 설정합니다. 초기값은 1200이며 보통은 300초로 지정을 합니다. 네트웍의 속도가 낮을수록 수치값은 높게 설정하는 것이 좋습니다.

KeepAlive On


웹서버에 접속한 채로 특별한 요청없이 지속적인 연결을 허용할 것인지를 설정합니다. 허용하지 않으려면 off로 설정합니다.

MaxKeepAliveRequests 100


클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의 요청개수를 지정합니다. 0을 지정하면 제한없음을 의미하며, 방문자수가 많은 사이트일 경우에는 가능한 높은 값을 설정하는 것이 좋습니다.

KeepAliveTimeout 15


아파치 웹서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의 요청이 없었을 때 접속을 끊게 됩니다.

MinSpareServers 5
  MaxSpareServers 10


아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재 서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의 상황에 따라 달라지게 됩니다. 유휴서버가 MinSpareServers의 개수(5) 보다 적게되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게 되면 죽이게 됩니다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라 생각하면 됩니다. 흔히 이 설정을 다음과 같이 오인 하는 경우가 있습니다. 즉 "MinSpareServers에 설정된 개수 이하의 아파치 프로세스는 생성되지않는다. 그리고 MaxSpareServers에 설정된 개수 이상의 아파치 프로세스는 생성되지않는다." 라고 잘못 생각하고 계신 분들이 있습니다. 이 설정의 정확한 의미를 다시한번 말씀드리면 아파치웹서버에 부하가 적어서 MinSpareServers 개수(여기서는 5개)보다 적었을 경우에는 최소한 이 개수(5개)만큼은 유지하려고 아파치는 노력합니다. 그리고 방문자수가 많아져서 아파치웹서버의 프로세스가 많아질 경우에 MaxSpareServers에서 설정된 아파치웹서버의 프로세스 이상 생성되었을 경우에 이 개수(10개)이하로 줄이려고 아파치는 노력하게된다는 의미입니다. 즉, 절대적인 수치가 아니라는 점을 이해하시기 바랍니다.

StartServers 5


아파치 웹데몬이 구동될 때 자식프로세스를몇 개로 시작 할 것인가를 지정합니다. 시작할 때 동시에 띄우게 될 자식프로세스의 개수입니다. 그러나 웹데몬이 구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 위에서 설정한 MinSpareServers와  MaxSpareServers 의 설정에 의해 대부분 합리적인 개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은 아닙니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  95 명