본문 바로가기

Major Field/GNU Environment

Ubuntu Linux 에서 Apache 설정

반응형


Apache 설정법에 들어가기 전에 우분투 환경에서 APM(Apache, PHP, MySQL)이 설치되어 있다고 가정한다. 아직 설치전이라면 다음 포스팅을 보고 설치를 마무리한 뒤 다시 이 글을 보도록 하자.

 http://s2junn.tistory.com/55



일반적으로 Apache 는 httpd.conf(/etc/httpd/conf/httpd.conf) 파일에서 설정을 했었는데 이번에 우분투에 설치한 버전의 Apache 에서는 기존의 방법과는 달라졌다. 어떻게 달라졌는지 살펴보자.


1. /etc/apache2 에 Apache 설정 관련 파일들이 존재한다.



2. 구조와 내용을 대충 살펴보면 아래와 같다.

 apache2.conf    Apache 기본설정 파일
 conf.d  charset
 localized-error-pages
 other-vhosts-access-log
 security
 문자셋, 보안 등에 관련된
 기본설정 파일들이 있다.
 envvars    Apache의 실행 유저와
 그룹을 정해놓았다.
 httpd.conf    
 magic    
 mods-available  .conf and .load files  Apache 모듈들이 존재
 mods-enabled  link files  위에 있는 모듈 중 실행할
 모듈의 링크를 넣는다.
 ports.conf    포트설정 파일
 sites-available  default
 default-ssl
 가상 호스팅 설정:
 여러 사이트의 설정을
 넣어둘 수 있다.
 sites-enabled  link default  위에 있는 사이트 중 작동될
 사이트의 링크를 넣는다.

예전의 httpd.conf 의 역할을 apache2.conf 에서 하게 되었다. 기본적인 설정이 들어있으며 다른 모든 설정파일들을 include 하고 있다. *-available 에는 여러 파일 또는 설정 등이 들어있지만 실제로 동작하거나 적용되지는 않는다. *-enabled 에서 소프트 링크를 만들어주면 실제로 동작하거나 적용되는 방식이다. 위의 내용들을 알고 있으면 예전 방식(httpd.conf에서 모두 설정하던 방식)보다 편리하게 관리할 수 있을 것 같다.


3. http://localhost/ 로 접속을 하게 되면 다음과 같은 화면이 나온다.


Apache 를 설치하게 되면 기본적으로 /var/www 를 루트 디렉터리로 잡고 localhost 로 접속시에 그 안에 있는 index.* 파일을 보여주게 된다. 개인 홈페이지를 운영한다거나 혼자서만 사용하는 개인서버인 경우에는 /var/www 에 파일들을 올려놓고 홈페이지를 운영해도 크게 지장이 없다. 하지만 개인이 여러 홈페이지를 운영하거나 혹은 서버에 가입한 사용자들에게 홈페이지 계정을 나누어 주고 싶다면 사용자 디렉터리를 설정해야 한다.


4. /etc/apache2/mods-enabled/ 로 이동하여 다음의 명령을 실행한 후 Apache 를 재시작한다.

 cd /etc/apache2/mods-enabled
 sudo ln -s ../mods-available/userdir.conf
 sudo ln -s ../mods-available/userdir.load
 sudo /etc/init.d/apache2 restart


이제 http://localhost/~계정이름 으로 사용자의 홈페이지에 접근할 수 있게 되었다.


5. 제대로 동작하는지 테스트를 해보자. 사용자 계정의 홈 디렉터리로 이동하여 public_html 디렉터리를 만들고 vi 를 이용하여 index.html 파일을 생성한다.

 cd ~
 mkdir public_html
 cd public_html
 vi index.html



6. 확인을 위해 작성하는 파일이니 내용은 간단하게 적고 저장하도록 하자.



7. 웹 브라우저를 이용하여 http://localhost/~계정이름 으로 접근해보자. 작성한 내용이 잘 보인다면 성공적으로 적용된 것이다.



8. 기본적인 설정들을 살펴보자.

/etc/apache2/apache2.conf

#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.  
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "foo.log"
# with ServerRoot set to "/etc/apache2" will be interpreted by the
# server as "/etc/apache2/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"
ServerName "localhost"
-----------------------------------------------------------------------------
서버 루트 디렉터리 지정
아파치 웹 서버가 설치된 경로를 지정하는 곳이다. 경로 변경이 없다면 그대로 두자.
#으로 시작한다면 #만 제거하도록 하자. 그 아래 서버명을 추가해준다. 서버명(가상 호스팅일 경우 첫 번째 도메인 혹은 IP)을 입력하지 않을 경우 서비스 시작 및 재지작 과정에서 다음과 같은 경고가 출력된다.

  apache2: Could not reliably determine the server's fully qualified domain name, 
  using 127.0.1.1 for ServerName



파일은 큰데 별 내용은 없다. 마지막 부분에 여러 파일들을 Include 하는 부분을 눈여겨 보도록 하자.


9. 포트 설정 파일을 살펴보자.

/etc/apache2/ports.conf

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80


<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>


포트 지정은 클라이언트와 서버간의 연결 통로를 만들어 주는 것으로 정수값으로 표현한다. 웹 서버는 기본적으로 80포트를 사용하지만 변경해서 사용하는 것도 가능하다.


10. 기본 사이트 설정 파일을 살펴보자.

/etc/apache2/sites-available/default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    # 서버 관리자 전자우편 주소로 웹 서버 운영시 문제가 발생할 경우
    # 지정된 전자 우편으로 메일이 발송된다.
    # 하지만 메일서버가 구축되어 있지 않다면, 이 항목은 무시된다.

    ServerName "localhost"
    ServerAlias "localhost"

    DocumentRoot /var/www
    # 홈 디렉터리 설정
    # 클라이언트에서 http://localhost/(또는 http://host.domain.com/)으로 
    # 접속했을 때 보여지는 페이지(또는 폴더)를 말한다.
    # 필요하다면 다른 디렉터리를 지정한다.
    # 아파치 웹 서버가 하나의 웹 호스팅을 구성한다면
    # 이 곳에 웹 문서들을 저장하면 되지만 여러 개의 운영이 필요하거나
    # 여러 명이 각각 운영하게 되는 경우에는 사용자 디렉터리와
    # 가상 호스팅을 사용한다.
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>



11. 인코딩을 설정하는 파일을 살펴보자.

/etc/apache2/conf.d/charset

# Read the documentation before enabling AddDefaultCharset.
# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.

AddDefaultCharset UTF-8
# 기본 언어의 문자를 지정하는 항목으로 환경에 따라 다른 값을 적어줄 수도 있다.
# AddDefaultCharset EUC_KR



12. Apache 의 여러 모듈 설정 파일들을 살펴보자.

/etc/apache2/mods-available/dir.conf

<IfModule mod_dir.c>

        DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

# 디렉터리 인덱스 지정
# 클라이언트가 브라우저 주소창에 파일명을 제외한 URL을 입력했을 때,
# 웹 서버가 클라이언트에 보여질 문서를 지정하는 항목이다.
# 이 항목은 여러 개의 값을 가질 수 있으며, 첫 번째 지정문서가 없으면,
# 두 번째 지정문서를 보여주게 된다.

public 파일 설정

/etc/apache2/mods-available/userdir.conf

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

사용자 디렉터리 설정

언어셋 관련 설정

파일타입 설정


13. 주요 설정 파일들은 이 정도이고, 개인적으로 궁금한 부분은 하나씩 찾아보기 바란다.
설정을 변경한 뒤에는 아래의 명령으로 Apache 서버를 다시 시작해야 한다.

sudo /etc/init.d/apache2 restart 






반응형