IT이야기/리눅스

우분투16.04에서 apache 설정하기

somick 2020. 7. 30. 00:58

항상 RedHat계열 OS만 사용해오다가 처음으로 우분투를 본격적으로 사용중이다.

http를 설치하려고 하니 설정파일의 구성이나 디렉토리 구조가 꽤 많이 틀리길래 잊어버리지 않게 메모용으로 남긴다.

apt-get을 이용한 설치는 다른 웹사이트에서도 많이 소개되어 있으니 여기서는 커스터마이징 한 곳만 쓰도록 한다.

디렉토리 구조

처음에 apt-get으로 apache를 설치한 후 /etc로 이동한 후 httpd를 확인하려고 하니 보이지가 않는다. 초반부터 redhat계열과는 틀리다. /etc/apache2에 설치되어 있으니 디렉토리 안을 확인해 보자.

디렉토리 구조도 redhat계열과 많이 틀리다. redhat계열은 xxx.d 같은 디렉토리안에 추가할 설정파일들을 .conf확장자로 넣어 놓으면 죄다 읽어들이는 방식인데 ubuntu는 available디렉토리와 enabled디렉토리를 이용하여 심볼릭 링크로 설정 모듈을 활성화 시킨다. avalilable안에 일단 필요하다 싶은것이나 추가되는 모듈관련 설정파일들을 죄다 집어 넣어 놓고 실제로 필요한 모듈설정파일들만 enabled에 심볼릭 링크를 만들어 놓으면 된다.

/etc/apache2/apache.conf

기본적으로 바꾸지 않아도 된다. 하지만 개인적으로 명시해도 좋으리라 생각되는 부분을 설정하였다.

ServerRoot "/etc/apache2"
ServerName www.mysite.net
 
<Directory /var/www/html>
      AllowOverride All
      Order allow,deny
      Allow from all
      Options Indexes FollowSymLinks MultiViews
</Directory>

특히 /var/www/html에 대한 디렉토리 권한 설정은 워드프레스에서 캐쉬를 이용하기 위해 고유주소를 변경할 경우 꼭 필요한 부분이니 혹시나 캐쉬를 이용하려면 위와 같은 디렉토리 권한 설정을 한다.

/etc/apache2/conf-available/phpmyadmin.conf

apt-get으로 phpmyadmin을 설치하였다. mysql을 이용하는 이상 없어서는 안될 툴이라 생각된다. mysql에 대한 튜닝정보까지 알려주니 고마운 존재이다. 크게 두가지 영역으로 나뉘어져 있는데 /usr/share/phpmyadmin과 /usr/share/phpmyadmin/setup에 대한 곳이다. librarie에 관한 항목도 있기는 하지만 all deny로 되어 있으니 패스.

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
 
    <IfModule mod_authz_core.c>
        <RequireAny>
            Require ip 127.0.0.1
            Require ip 192.168.0
        </RequireAny>
    </IfModule>
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <RequireAny>
            Require ip 127.0.0.1
            Require ip 192.168.0
        </RequireAny>

설정의 밑부분은 생략하였다. 서브넷 마스크를 어떻게 써야하는지 몰라 잠시 헤매었는데 위와 같이 쓰면 인식되었다. 기본 24비트인듯. 25비트나 19비트 같은 경우엔 어떻게 해야할려나…

/etc/apache2/conf-available/security.conf

여러 옵션이 있지만 일단 두항목만 설정하였다. 특히 ServerSignature를 Off로 해두지 않으면 웹서버의 정보가 외부에 표시되니 가급적 설정하는 편이 좋을 듯 하다.

<Directory />
   AllowOverride None
   Require all denied
</Directory>
 
ServerSignature Off

코멘트아웃되어 있으니 코멘트인 시켜주자.

/etc/apache2/mods-enabled

위에서도 설명했지만 xxx-available디렉토리에 있는 파일들은 xxx-enabled에 심볼릭 링크를 걸어주어야만 로드된다.  그렇다면 새로운 모듈을 추가했다면 ? 당연히 링크를 확인하여 없다면 추가해 주어야 한다. 나같은 경우엔 SSL을 쓰기 위한 ssl.conf와 ssl.load, 그리고 rewrite를 추가로 링크를 걸어주었다.

/etc/apache2/sites-enabled

먼저 /etc/apache2/sites-available디렉토리에 vhosts파일을 작성하고 필요한 vhosts만 이곳에 링크를 걸었다. 만약 vhosts에 정의되지 않은 ServerName이 web server로 유입되었을 경우 제일 먼저 로드된 vhosts로 전송되지 주의할 것.

설정이 끝났다면 환경설정 파일의 문법을 체크하고 서비스를 시작하자.

apachectl configtest
service apache2 start

로그 파일의 저장디렉토리를 특별히 변경하지 않았으니 /var/log/apache2에 저장될 것이다. error_log를 확인하여 에러가 있으면 수정하여 다시 apache를 시작하도록 한다.