반응형
반응형
반응형


웹 서버 혹은 웹 어플리케이션 서버에서 디렉토리 인덱싱 기능을 비활성 방법.

[tomcat]
<!--web.xml-->
 <init-param>
  <param-name>listings</param-name>
  <param-value>false</param-value>
 </init-param>

[apache]
<!--httpd.conf-->
<Directory "/usr/local/apache/htdocs">
#
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#

수전전    Options Indexes FollowSymLinks MultiViews
수정후    Options FollowSymLinks MultiViews

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
</Directory>

반응형

'Server > Apache' 카테고리의 다른 글

ssl 설정.  (2) 2015.08.16
[설치] DocumentRoot must be a directory  (0) 2015.06.16
에러 : libexpat.so.0: 열기 실패  (0) 2014.03.24
Apache MPM  (0) 2014.03.24
아파치 패치 방법  (0) 2009.02.11
반응형

Tomcat 사용 시 Access Log를 기록하는 방법은 다음과 같습니다.

 

$CATALINA_HOME/conf/server.xml 파일 내용 중 아래 부분의 주석을 제거하신 후 Tomcat을 재 시작하시면 됩니다.

 

        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="localhost_access_log." suffix=".txt"
                 pattern="common" resolveHosts="false"/>
        -->

 

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/apps/atlassian/logs" prefix="" suffix=".tomcat2_access.log"
pattern="%t %a %Ts %{userid}r %B %U%q"
fileDateFormat="yyyy-MM-dd"
resolveHosts="false"/>

 

참조: http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html

 

 

 

  • %a - Remote IP address
  • %A - Local IP address
  • %b - Bytes sent, excluding HTTP headers, or '-' if zero
  • %B - Bytes sent, excluding HTTP headers
  • %h - Remote host name (or IP address if resolveHosts is false)
  • %H - Request protocol
  • %l - Remote logical username from identd (always returns '-')
  • %m - Request method (GET, POST, etc.)
  • %p - Local port on which this request was received
  • %q - Query string (prepended with a '?' if it exists)
  • %r - First line of the request (method and request URI)
  • %s - HTTP status code of the response
  • %S - User session ID
  • %t - Date and time, in Common Log Format
  • %u - Remote user that was authenticated (if any), else '-'
  • %U - Requested URL path
  • %v - Local server name
  • %D - Time taken to process the request, in millis
  • %T - Time taken to process the request, in seconds
  • %I - current request thread name (can compare later with stacktraces)

반응형
반응형

정말 대략난감했다.

먼넘의 기술들은 변화만하면 기존의 설정들을 계속 바꿔줘야하는지..

이번도 마찬가지이다..

 

Tomcat 4.x 버전에서 잘되던 JSP 한글이 5.x 버전에서는 깨진다..

POST 방식에서는 문제가 없지만 GET 방식에서 깨지는 문제인데..

아파치에서 문서를 잘 살펴보니..역시나 변경되었다..ㅡ.ㅡ;;

 

1. Tomcat 4.x 버전

  1) POST 방식 : request.setCharacterEncoding("euc-kr");

  2) GET 방식 : request.setCharacterEncoding("euc-kr");

 

 

2. Tomcat 5.x 버전

  1) POST 방식 : 기존 4.x 버전과 같이 request.setCharacterEncoding("euc-kr");

  2) GET 방식 : 바뀌었다..그것도 server.xml 을 수정해줘야한다. 아래와 같이 추가해준다

    <Connector port="8080"
               maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="euc-kr"/>

 

    <Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="euc-kr"/>


반응형

'Server > Tomcat' 카테고리의 다른 글

Context [] startup failed due to previous errors 라며 멍 때리는 현상.  (0) 2014.03.21
access 로그 설정  (2) 2009.04.23
java.library.path 정보  (0) 2009.02.11
반응형

테스트환경 : Jdk1.5.0_11

                  Tomcat 6.0

 

이런 환경의 경우 아래와 같은 경우가 빈번히 발생하는 모양입니다.

저두 오늘 테스트해보니, 아래와 같은 멧세지를 만나고야 말았습니다.. ^^*

일단 오류는 아니라서 문제될것 같진 않지만.. ^^*

 

The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

 

여러가지 이유가 있는것 같지만,

 

제 경우는 이렇습니다.

APR(Apache Portable Runtime)이라는 Apache와 Tomcat간의 연동간에 지원을 하는 녀석인 듯 한데, 저는 연동할 생각이 없기에...

 

server.xml 에서

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 부분을 주석처리 했습니다.

 

그게 아니면 ( 아래 발췌 :  minochil님이 작성하신 글)

 

윈도우 : tcnative-1.dll

리눅스, UNIX : tcnative-1.so

http://tomcat.heanet.ie/native/1.1.6/binaries/

윈도우즈는 위에서 DLL을 다운 받아서 Path로 잡혀있는 디렉토리에 두는 것으로 끝!!
리눅스에서는 위 URL에서 소스 받아서 설치하시고

profile이나 톰캣 실행 스크립트에

LD_LIBRARY_PATH 환경변수 만들고 설치 디렉토리를 지정해주면 됩니다.

export LD_LIBRARY_PATH="/usr/local/apr/lib"

 

====================================================================

참고내용 : http://tomcat.apache.org/tomcat-6.0-doc/apr.html

 

Tomcat의 설치 시 아래와 같은 방법으로 설치하면 자동으로 tcnative-1.dll 을 다운받아 설치하내요.. ^^*

반응형
반응형
[ 패치파일 만들어 적용하기 ]


작성자 : 정택진 (nveteran@netian.com)
작성일 : 2002. 6. 23.


1. 패치파일 만들기 (diff 이용)

- diff 의 쓰임 : 두 대상간의 차이점만을 모아 파일로 저장한다.

- 확장자 : .diff or .patch

- 만들기 전에는 make clean, make distclean, make mrproper 등을 수행하여,

컴파일된 파일을 모두 삭제한 뒤 만듭니다.

- 아래 설명들은 pwd 를 항상 생각하면서 도움이 됩니다.



* 실제 소스 코드를 통한 테스트를 합시다.

- 대상 : wu-ftpd-2.6.2.tar.gz

# cd /usr/src/

# tar xzvf wu-ftpd-2.6.2.tar.gz : 압축 해제

# mv wu-ftpd-2.6.2 wu-ftpd-2.6.2-orig : 원본 백업

# tar xzvf wu-ftpd-2.6.2.tar.gz : 압축 해제 2



* 수정을 해 봐야죠?

# cd /usr/src/wu-ftpd-2.6.2

# vi src/ftpd.c

--------- 수정 전 ----------

int main(int argc, char **argv, char **envp)
{
#if defined(UNIXWARE) || defined(AIX)
size_t addrlen;
#else
int addrlen;
#endif

...... ( 중략 ) ........

}


--------- 수정 후 ----------

#if defined(UNIXWARE) || defined(AIX)
size_t addrlen;
int myaddr; <================ 한 줄 추가.
#else




# vi src/sco.c

--------- 수정 전 ----------

char *
getcwd(pt, size)
char *pt;
int size;
{
register struct dirent *dp;
...... ( 중략 ) ........
}


--------- 수정 후 ----------

char * getcwd(char *pt, int size) <======== 한 줄로 압축.
{
register struct dirent *dp;
...... ( 중략 ) ........
}



--------- 패치 파일 만들기 ----------

# cd /usr/src/
# ls
wu-ftpd-2.6.2
wu-ftpd-2.6.2-orig


# diff -urN wu-ftpd-2.6.2-orig wu-ftp-2.6.2 > wu-ftp-2.6.2-test.diff
diff [옵션] <원본 파일> <수정본>

-u : --unidirectional-new-file
통일된 출력 형식을 사용.
(디렉토리 비교시, 두 디렉토리중
두번째 디렉토리에만 파일이 존재한다면,
첫번째 디렉토리에는 파일이 없어도 있는 것처럼 처리한다)
-r : --recursive, 재귀적. 하위 디렉토리를 모두 검색한다.
-N : --new-file
(비교하는 디렉토리에 파일이 하나의 디렉토리에만
모두 있는 것처럼 처리하지만 사실 다른 한 디렉토리에는
파일이 없다. 새로 만든다.)


# vi wu-ftpd-2.6.2-test.diff
diff -urN wu-ftpd-2.6.2-orig/src/ftpd.c wu-ftpd-2.6.2/src/ftpd.c
--- wu-ftpd-2.6.2-orig/src/ftpd.c Fri Nov 30 01:56:11 2001
+++ wu-ftpd-2.6.2/src/ftpd.c Sun Jun 23 20:04:57 2002
@@ -567,7 +567,8 @@
int main(int argc, char **argv, char **envp)
{
#if defined(UNIXWARE) || defined(AIX)
- size_t addrlen; // 이 한 줄을 빼고,
+ size_t addrlen // 아래 2 줄을 넣어라.
+ int myaddr; //
#else
int addrlen;
#endif
diff -urN wu-ftpd-2.6.2-orig/support/sco.c wu-ftpd-2.6.2/support/sco.c
--- wu-ftpd-2.6.2-orig/support/sco.c Sun Jul 2 03:36:29 2000
+++ wu-ftpd-2.6.2/support/sco.c Sun Jun 23 20:14:47 2002
@@ -429,10 +429,7 @@
(dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \
dp->d_name[1] == '.' && dp->d_name[2] == '\0'))

-char * // 아래 4줄을 빼고,
- getcwd(pt, size) //
- char *pt; //
- int size; //
+char *getcwd(char *pt, int size) // 이 한 줄을 넣어라.
{
register struct dirent *dp;
register DIR *dir;

-----------------------------------------------------------------
다른 설명은 필요 없으리라 봅니다.

--- 로 표시된 것은 원본
+++ 로 표시된 것은 수정본

- 로 표시된 줄은 빼고,
+ 로 표시된 줄로 대치한다.


****************************************************************

diff 파일은 ASCII 형태의 파일이므로, 압축을 하면
상당히 그 양을 줄일 수 있습니다.
일반적으로 tar.gz 혹은 gz 을 사용하니 그대로 사용합니다.

# gzip wu-ftpd-2.6.2-test.diff
# ls
wu-ftpd-2.6.2-test.diff.gz



2. 패치파일 적용하기.

이제 패치 파일을 적용시켜 봅시다.

지금부터는 패치를 만드는 과정은 생각하지 않습니다.

즉 새롭게 소스를 다운 받은 상태라고 생각하고 진행하세요.

그렇다면 그 상황을 만들어 봅시다.

# cd /usr/src

# mv wu-ftpd-2.6.2 wu-ftpd-2.6.2-old

# mv wu-ftpd-2.6.2-orig wu-ftpd-2.6.2
혹은
# rm -rf wu-ftpd-2.6.2-orig ; tar xzvf wu-ftpd-2.6.2.tar.gz

이제 상황이 설정되었죠?

그럼 이제 패치할 파일의 정보를 확인해 봅시다.

# zcat wu-ftpd-2.6.2-test.diff.gz | head -3
--------------------------------------------------------------------
diff -urN wu-ftpd-2.6.2-orig/src/ftpd.c wu-ftpd-2.6.2/src/ftpd.c <=== 주목
--- wu-ftpd-2.6.2-orig/src/ftpd.c Fri Nov 30 01:56:11 2001
+++ wu-ftpd-2.6.2/src/ftpd.c Sun Jun 23 20:04:57 2002
--------------------------------------------------------------------

첫줄을 보시면 patch 를 만들었을 때 정보를 확인할 수 있죠.
즉 어떻게 패치를 적용해야 할 지도 알수도 있는 셈이죠.
diff [옵션] <원본> <수정본>
눈여겨 봐야 할 곳은 <원본>과 <수정본> 디렉토리의 차이점이죠.
적용시킬 때는 <수정본>을 주목합니다.


확인이 끝났으면 원본이 있는 곳으로 갑니다.

# cd wu-ftpd-2.6.2

patch 를 실행시킬 때는 diff 파일의 내용과, 현재 커서가 있는 디렉토리와의
관계를 잘 따져야 합니다.

지금 있는 곳의 디렉토리가 wu-ftpd-2.6.2/ 입니다.
여기서 ls src/ftpd.c 명령을 내린다면 그 파일이 있겠죠?

위의 파일에서 첫번째 줄을 다시 보면, <수정본> 이 wu-ftpd-2.6.2/src/ftpd.c 라고
되어 있습니다. 즉 현재 작업위치가 wu-ftpd-2.6.2/ 디렉토리이니, 이 부분은 건너 띌 수 있는 겁니다.

그래서 여기서 패치 명령을 내린다면,

# zcat ../wu-ftpd-2.6.2-test.diff.gz | patch -p1

-p1 에서 '1' 의 의미는 <수정본>에 관한 정보 " wu-ftpd-2.6.2/src/ftpd.c " 에서
'/' 하나(디렉토리 하나)를 건너띄고 비교해서 패치를 적용시키라는 의미가 됩니다.

이제 감을 잡았나요? patch -p1 의 의미를...


하지만, wu-ftpd-2.6.2 디렉토리로 들어가지 않았았고, 패치 파일이 위와 같은 경우라면
-p0 을 사용하면 된다.

즉 <수정본> 정보에서 wu-ftpd-2.6.2/ 이고, 적용시킬 소스가 있는 디렉토리가 wu-ftpd-2.6.2/ 로
동일하기 때문이다.


-p1 을 먼저 예로 든 이유는 디렉토리명이 틀릴 경우가 많기 때문이다.


(참고) - patch 를 적용시키는데 있어서 여러 방법.
# zcat *****.diff.gz | patch -p1
# gzip -dc *****.diff.gz | patch -p1

# patch -p1 < *****.diff
# cat *****.diff | patch -p1

위의 두 경우는 압축되어 있는 것을 풀어서, 화면상에 표준출력되는
내용을 파이프를 통해 patch 프로세스에 diff 정보를 전달하는 경우이고,

아래 두 경우는 압축되지 않은 것을 redirection 과 파이프를 통해
patch 프로세스에 diff 정보를 전달하여 적용하는 방법입니다.

반응형

'Server > Apache' 카테고리의 다른 글

ssl 설정.  (2) 2015.08.16
[설치] DocumentRoot must be a directory  (0) 2015.06.16
에러 : libexpat.so.0: 열기 실패  (0) 2014.03.24
Apache MPM  (0) 2014.03.24
디렉토리 인덱싱 비활성화.  (1) 2011.12.14

+ Recent posts