웹마짱구's 블로그

아파치 관련 FAQ

Linux/Apache : 2007/04/02 17:04


원문 : http://blog.naver.com/classic2u/50002362686 

Q :: 현재 설정된 MPM 을 알 수 있는 방법은 무엇입니까?

apachectl -l 을 이용하면 현재의 MPM을 알 수 있습니다.

예1) worker MPM을 사용하는 경우

# apachectl -l

Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c

예2) prefork MPM을 사용하는 경우

# apachectl -l

Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c



Q :: 아파치라는 이름은 어디서 온 것입니까?

아파치는 아메리카 대륙의 원주민인 아파치 인디안의 이름에서 따 온 것입니다.

또한 Apache는 "A PAtCHy server"으로 부터 온 것이라고도 얘기합니다. 이는 현재 존재하는 파일에 patch 파일을 붙인다는 의미를 가집니다.



Q :: 아파치에 대한 정보를 얻을 수 있는 곳은 어디입니까?

주로 아파치 홈페이지를 통해 정보를 얻을 수 있습니다. 별도로 온라인 간행물인 Apache Week를 통해 정보를 얻을 수 있습니다.


Q :: 아파치는 어디서 받을 수 있습니까?

아파치 소스코드를 다운로드 받는지에 대한 설명은 아파치 메인 웹 페이지를 참고하시기 바랍니다.


Q :: 웹사이트에서 이미지들을 무단 도용하는것을 방지할 방법이 무엇입니까?

해당서버의 이미지를 다른 웹사이트에서 바로 서비스하는 것을 금지하고자 하는 경우를 설명합니다.

SetEnvIf와 Deny, Allow 지시자를 이용하여 설정할 수 있습니다.

SetEnvIf REFERER "www\.mydomain\.com" linked_from_here SetEnvIf REFERER "^$" linked_from_here<Directory /www/images> Order deny,allow Deny from all Allow from env=linked_from_here</Directory>


Q :: 요청한 파일에 대해 아파치가 두번의 인증과정을 요청합니다.

실제 서버의 호스트명과 환경설정 파일의 ServerName 절에 설정된 호스트명이 다른 것이 원인이며, UseCanonicalName 지시자의 설정 값에 의해 발생되는 문제입니다.

이문제를 해결하시려면 아래의 방법중 한가지를 수행합니다.

1. 디렉토리를 요청할 경우 항상 마지막에 "/"를 붙여줍니다.

2. 해당 서버의 호스트명을 URL에 사용된 것과 동일하게 수정합니다.

3. UseCanonicalName off 로 설정합니다.



Q :: 특정 문서에 대해 로컬 접근만 허용하거나 사용자 인증을 수행하도록 설정하는 방법은 무엇입니까?

Satisfy 지시자를 사용합니다. 특히 Satisfy Any 지시자를 이용하여 단 하나의 접근제한만 요구하도록 설정합니다.

예를 들면, 다음을 .htaccess 파일이나 환경설정 파일에 설정합니다.

Deny from all
Allow from .domain.com
AuthType Basic
AuthUserFile /usr/local/apache/conf/htpasswd.users
AuthName "special directory"
Require valid-user
Satisfy any

 



Q :: 특정 문서 접근에 대해 사용자명과 패스워드를 요구하도록 하는 방법은 무엇입니까?

여러가지 방법이 존재합니다. 흔히 사용하는 방법으로는 mod_auth, mod_auth_db, mod_auth_dbm 등의 모듈을 사용하는 것입니다.

접근제한을 설정하는 방법의 예는 Apache Week의 Using User AuthenticationDBM User Authentication 등을 참고하시거나 아파치 문서의 authentication tutorial을 참고하시기 바랍니다.



Q :: .htaccess 파일이 무시됩니다.

해당 디렉토리에 대한 AllowOverride 지시자가 잘못 설정되어 발생하는 문제입니다.

만일 AllowOverride가 None으로 설정되어 있다면, .htaccess 파일은 검색조차 되지 않습니다.

AllowOverride 지시자를 적절하게 설정하시면 위와 같은 문제를 해결할 수 있습니다.



Q :: 레드햇 리눅스를 사용하는데, htm 확장자를 가진 파일을 요청하면 HTML 소스가 나타납니다.

.htm 파일이 레드햇 리눅스의 MIME 타입에 설정되어 있지 않아서 발생되는 문제입니다.

/etc/mime.types 파일을 열어 html을 포함하고 있는 라인을 찾아 .htm 을 추가합니다. HTTPD 서버를 재가동합니다.

kill -HUP `cat /var/run/httpd.pid`


Q :: 로그파일에 브라우저 정보나 referrer 정보를 남기는 방법은 무엇입니까?

아파치는 위와 같은 방법을 위해 여러가지 방법을 제공합니다. 추천할만한 방법으로는 mod_log_config 모듈을 컴파일 하여 환경설정 파일에 CustomLog 지시자를 사용하는 방법입니다.

예를 들면,

CustomLog logs/access_log "%h %l %u %t \"%r\" %s %b \"%{Referer}i\"  \"%{User-Agent}i\""

와 같이 설정하여 referrer과 브라우저 정보를 출력하도록 설정할 수 있습니다.

좀 더 자세한 정보를 원하시면 "Apache Week"의

 "Gathering Visitor Information: Customizing Your Logfiles". 를 참고하시기 바랍니다.



Q :: "Premature end of script headers"와 같은 오류 메시지가 발생합니다.

보통 CGI 스크립트에 문제가 있으면 브라우저에게 Internal Server Error를 보내고 오류로그에 이 문구를 기록합니다. 이런 문제를 디버깅할때 CGI 투토리얼이 도움이 될 수 있습니다.



Q :: "AcceptEx Failed"와 같은 오류메시지가 발생합니다.

win32에서 AcceptEx 시스템호출에 대한 오류문을 나오면, Win32DisableAcceptEx 지시어를 참고하시기 바랍니다.



Q :: "Invalid argument: core_output_filter: writing data to the network" 와 같은 오류메시지가 발생합니다.

플래폼이 sendfile 시스템호출을 지원한다면, 아파치는 응답의 속도를 빠르게하기위해 이 시스템호출을 사용합니다. 불행하게도 어떤 시스템에서 아파치는 컴파일할때 sendfile이 정상적으로 작동하지 않는데도 정상적으로 작동한다고 오판하게 됩니다. 이 문제는 네트웍 파일시스템이나 비표준 파일시스템을 사용할때 자주 발생합니다.

이 문제의 증상은 오류 로그(error log)에 위의 문구를 기록하거나 크기가 0이 아닌 파일에 대해 크기가 0인 응답을 하는 경우입니다. 동적으로 내용을 생성할때는 sendfile을 사용하지 않기때문에 일반적으로 정적인 파일을 요청할때만 문제가 발생합니다.

문제를 해결하려면 서버가 sendfile을 사용하지 않도록 EnableSendfile 지시어를 사용합니다. 또, 이와 유사한 문제에 대해 EnableMMAP을 참고하십시오.



Q :: 디렉토리 목록 출력을 금지시키는 방법이 무엇입니까?

DirectoryIndex 지시자에 설정된 파일을 포함하지 않는 디렉토리로 접근하는 경우에 발생하는 문제입니다.

목록 출력을 허용하기 위해서는 해당 디렉토리에 대해 아래와 같이 설정합니다.

<Directory /path/to/directory>
   Options +Indexes
</Directory>

목록 출력을 금지하기 위해서는 + 대신 -를 사용합니다.

<Directory /path/to/directory>
   Options -Indexes
</Directory>

 


Q :: 사용자 정의 error 페이지를 사용하는 방법에 대해 알고 싶습니다.

web.xml 파일에 아래와 같이 설정합니다.

        <error-page>
            <error-code>404</error-code>
            <location>/error/404.html</location>
        </error-page>



Q :: 톰캣 가동시 시스템 property를 설정하는 방법에 대해 알고 싶습니다.

startup.bat이나 catalina.bat를 호출하기 전에 JAVA_OPTS를 설정합니다.

예를 들면,

Example (windows): SET JAVA_OPTS='-DpropName=propValue'

Example (UNIX): export JAVA_OPTS='-DpropName=propValue'

와 같습니다.



Q :: 톰캣 버전을 얻어오는 방법에 대해 알고 싶습니다.

javax.servlet.ServletContext.getServletInfo();

를 이용합니다. 5.0.28의 경우 version.sh(혹은 version.bat) 프로그램을 이용할 수 있습니다.



Q :: 어떤 버전의 톰캣을 사용해야 합니까?

사용하고자 하는 서블릿 API 버전에 따라 달라집니다.

  • Tomcat 3 supports the 2.2 API
  • Tomcat 4 supports the 2.3 API
  • Tomcat 5 supports the 2.4 API

위의 내용을 참고하여 적절한 버전을 사용하시기 바랍니다.



Q :: 특정 IP나 HOST의 접근 제한하는 방법에 대해 알고 싶습니다.

RemoteHostValve나 RemoteAddrValve를 이용하여 설정합니다. 이를 설정할 경우 spoofing에 이용될 수 있으니 주의해야 합니다.

자세한 내용은 아래 문서를 참고하시기 바랍니다.

Valve Reference Link



Q :: manager와 admin 어플리케이션의 기본 사용자 정보를 알고 싶습니다.

admin과 manager 어플리케이션은 기본 로그인을 제공하지 않습니다.

기본설치를 한 경우라면, $CATALINA_HOME/conf/tomcat-users.xml 파일을 편집하시면 됩니다.

아래의 문서를 참고하시기 바랍니다.

 Configuring Manager Application Access



Q :: HTTPS를 이용하는 방법에 대해 알고싶습니다.

아래 문서를 참고하시기 바랍니다.

Use security-constraint in web.xml.



Q :: 8005 포트가 로컬 시스템의 다른 사용자에 의해 이용가능 합니다.

아래 두개의 문서를 참고하시기 바랍니다.


 



Q :: OpenSSL을 이용하여 자체적인 CA를 설정하는 방법에 대해 알고 싶습니다.

아래의 문서를 참고하시기 바랍니다.

Using OpenSSL to set up your own CA.



Q :: 톰캣을 포함하여 서블릿 컨테이너의 BMT 자료가 있습니까?

다음의 문서를 참고하시기 바랍니다.

Web Performance, Inc.'s comparison



Q :: 톰캣이 아파치보다 정적인 HTML 처리가 빠른가요?

어떤 설정치로 튜닝되어 있는가에 따라 결과는 달라집니다.

자체적인 벤치마크를 수행할 것을 권장합니다. 다음의 문서를 참고하시기 바랍니다.



Q :: OutOfMemoryError를 발생시키는 원인에 대해 알고 싶습니다.

여러가지 원인이 있을 수 있습니다. 몇가지 예를 들면,

  • 실제로 메모리가 부족한 경우입니다. (heap 메모리 크기를 증가시켜 줍니다.)
  • 어플리케이션의 코드가 Hang을 유발시켜 가비지 컬렉터가 작업을 수행하지 못하는 경우입니다.
  • 파일 디스크립터를 초과하는 경우입니다. *nix 시스템을 사용하는 경우라면 OutOfMemoryError는 파일 디스크립터의 크기를 초과하기 때문에 발생합니다. ulimit를 이용하여 해결합니다.
  • 너무많은 쓰레드를 실행한 경우입니다. 특정 OS의 경우 하나의 프로세스당 실행가능한 쓰레드의 수를 제한합니다. 해당 OS에서 제공하는 문서를 참고하여 해결합니다.
  • 많은 JSP와 서블릿을 사용하고 있다면, permanent generation 값을 변경합니다. 기본값으로 64MB가 사용되는데 이를 -XX:MaxPermSize=256m를 이용하여 해결합니다.

 



Q :: 메모리 설정을 조정하고 싶습니다.

java -x 를 통해 어떤 파라미터가 설정되었는지 확인합니다. 환경변수 JAVA_OPTS를 이용하여 필요한 설정을 할 수 있습니다.

catalina.bat 혹은 catalina.sh 파일을 열어 JAVA_OPTS를 설정합니다.



Q :: System.out 혹은 System.err이 출력되는 곳은?

기본적으로 catalina.out을 통해 이루어집니다.

swallowOutput property를 이용하여 다른 로그파일로 변경할 수 있습니다.



Q :: 어플리케이션의 로그를 남기는 방법은 무엇입니까?

System.out 또는 System.err을 사용하는 경우 Log4J와 같은 툴킷을 사용하거나 JDK1.4의 java.util.logging 패키지를 사용하여 로그를 남기는 것을 권장합니다.

또한 톰캣에서 제공하는 로그와 별도로 사용자 로그를 남기는 것을 권장합니다.Log4J를 사용하는 경우 Log4J jar 파일을 해당 어플리케이션의 WEB-INF/lib 디렉토리에 이동시키고 WEB-INF/classes 디렉토리에 Log4J 설정파일을 이동시킵니다. 이를 통해 각각의 어플리케이션 마다 다른 로그설정을 적용할 수 있습니다.

top

Linux/Apache : 2007/04/02 17:04 Trackback. : Comment. : view 1360

Trackback Address :: http://jjangu.pe.kr/blog/trackback/394

Write a comment.




: 1 : ... 191 : 192 : 193 : 194 : 195 : 196 : 197 : 198 : 199 : ... 543 :