Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Apache] apt-get으로 설치한 apache에서 module 설정하기 Computer & Program

Ubuntu에서 apt-get으로 Apache HTTP Server를 설치했더니, 이 녀석 당췌 어디로 설치되는지를 알 수가 없다. 한참 삽질해서 apache에서 추가로 사용하는 module을 로딩하는 방법을 터득했다. 분명히 나중에 또 찾을테니 기록용으로..

whereis로 apache2를 찾아보니 /usr/lib/apache2, /usr/include/apache2, /usr/share/apache2 등 여러 곳으로 나눠져서 설치가 된듯 싶다.

$ whereis apache2
apache2: /usr/sbin/apache2 /etc/apache2 /usr/lib/apache2 /usr/include/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz


이 중 apache module은 '/usr/lib/apache2/modules'에 설치된다. 설치할 module의 .so 파일을 이 경로에 다운로드한다. 여기서는 'R_module'을 예로 들 것이고, 파일명은 'mod_R.so' 이다.

$ ls /usr/lib/apache2/modules/mod_R.so
/usr/lib/apache2/modules/mod_R.so


실제 module 파일은 '/usr/lib/apache2/modules'에 있지만, 이 module에 대한 apache 설정은 '/etc/apache2'에 만들어진다. 이곳에 'mods-available'과 'mods-enabled'라는 경로에서 module을 관리한다. 폴더 이름만 봐도 어떤 기능을 하는 폴더일지 감이 온다. 'mods-available'은 apache에서 사용 가능한 module 설정을 만들어두는 곳이고, 'mods-enabled'는 apache 서버가 시작될 때 실제로 로딩할 module 설정을 넣어두는 경로이다.

$ cd /etc/apache2
$ ls
apache2.conf  envvars     magic           mods-enabled  sites-available
conf.d        httpd.conf  mods-available  ports.conf    sites-enabled


그리고 이 경로의 파일을 자세히 살펴보면 ln 명령으로 링크가 걸린 것을 알 수 있다. 'mods-available' 경로에 원본 파일을 만들어 두고, 'mods-enabled'에서는 로딩할 module만 링크로 걸어둔다.
'/etc/apache2/mods-available'에 'R.load' 파일을 생성한다. 'R.load' 파일 내용으로는 위에서 다운받아둔 module의 .so 경로를 지정한다. 그리고 module에 별도의 설정이 필요하다면(꼭 필요한게 아닌 option) .conf 파일을 생성해서 설정하면 된다. 여기서는 'R.conf' 파일에 그 내용을 넣어뒀다. (Apache를 apt-get으로 설치했다면 root 권한이 있어야 파일을 생성할 수 있을 것이다. 'sudo vi 파일명'으로 생성하면 되고, 아래에는 파일 내용만 출력했다. 아래 내용대로 파일을 만들어 주자.)

$ cd /etc/apache2/mods-available
$ cat R.load
LoadModule R_module /usr/lib/apache2/modules/mod_R.so
$ cat R.conf
<IfModule R_module>
# Prints out a nice report about R running within Apache
<Location /RApacheInfo>
    #SetHandler r-handler
    SetHandler r-info
</Location>
<Location /rapachetest>
    SetHandler r-handler
    RFileHandler /var/www/R/test.R
</Location>
</IfModule>


그리고 apahce가 올라오면서 module을 로딩할 수 있게 이 파일을 ln명령으로 'mods-enabled'에 링크를 걸면 된다.

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/R.conf R.conf
$ sudo ln -s ../mods-available/R.load R.load
$ ls -al R*
lrwxrwxrwx 1 root root 24 Jan 21 16:40 R.conf -> ../mods-available/R.conf
lrwxrwxrwx 1 root root 24 Jan 21 12:15 R.load -> ../mods-available/R.load


이제 apache를 다시 시작하면 module이 로딩될 것이다.

$ sudo /etc/init.d/apache2 restart


예전 같았으면 '/etc/apache2/apache.conf' 또는 '/etc/apache2/httpd.conf'에서 설정해줄 module관련 설정을 이렇게 폴더로 빼두니 enable/disable 시킬 때 conf 파일을 열지 않고 링크만 추가/제거해서 쉽게 설정이 가능해 졌다.


- rApache module을 설치하다 module 설정이 필요해서 삽질해보다 정리
- 현재 apt-get으로 받을 수 있는 최신버전인 Apache 2.2.22-1ubuntu1.2 에서 정상 동작

덧글

  • 환상법사 2013/02/01 11:34 # 삭제 답글

    우분투에는 이런 작업을 편하게 하라고 a2enmod 와 a2dismod 라는 명령을 제공합니다.
    a2ensite 및 a2dissite도 있는데 이건 sites-enabled 제어용.
  • 환상법사 2013/02/01 11:47 # 삭제 답글

    저는 apt-get보다 편리한 aptitude 를 사용합니다. apt-get은 패키지 검색 기능이 없는듯?
    그리고 /etc/init.d 를 대체하는 편리한 명령인 service도 지원합니다.
    # service apache2 restart
    이런 식으로 써요. /etc/init.d가 더 좋은 사람은 그거 쓰고 타이핑 귀찮으면 service 쓰는 식입니다.
    그리고 우분투에서 /etc/apache2/apache.conf 는 진짜 글로벌 설정이 아니면 넣지 않는 게 좋아요. 패키지 업데이트할 때 덮어써버리는 수가 있습니다. mods-available에 그냥 커스텀 모듈(걍 아무 파일) 만들고 a2enmod로 링크 걸어두는 게 낫습니다. 이 경우에는 패키지 업데이트해도 덮어써지지 않음. 단 해당 모듈의 실행 순서를 제어하기가 어렵습니다.
  • Sigel 2013/02/01 15:35 #

    apt-get은 진짜 못 찾아줘서 Synaptic Package Manager인가를 썼는데 좀 더 잘 찾아주는거 같드라고요.
    service를 쓰면 되는데 자료 찾아본거 마다 /etc/init.d를 쓰데요. 그래서 문서 따라 정리하다보니 =ㅅ=
    OS차원에서 설정은 /etc 아래로 넣도록 하라고 어디 문서에서 본거 같은데 우분투는 좀 조심해야겠군용

    a2어쩌구는 포스트에서 많이 봤는데 쓰는 법을 잘 몰라서 무식하게 ln을 ㅋㅋ
댓글 입력 영역

Google AdSense (text/image)