홈페이지 한글 깨짐(다이아몬드 모양) 현상 해결

리눅스/APACHE|2015. 1. 16. 16:46
반응형

* 본 내용은 rpm 패키지 httpd-2.2.3 에서 확인 하였습니다.

 

홈페이지에서 한글이 네모 형태로 깨져보이는것은

/etc/sysconfig/i18n 하고 상관없이

httpd.conf 에서 캐릭터셋 설정 수정만 하면 됩니다.

AddDefaultCharset euc-kr
 

문자로는 'Add' 로 되어있지만 한개만 세팅해놓아야 사용이 가능합니다.

이렇게 하면 UTF-8 로 저장한 문서도 잘보이고 ANSI (euckr) 로 저장한 파일도 잘보입니다.

 

이렇게 해도 안되는 경우가 있는데, php 를 사용한다면 php.ini 옵션 설정으로 해결이 가능합니다.default_charset = "EUC-KR"

 

 

반응형

댓글()

JAVA 파일 (J2SE) 다운로드 바로 하기

리눅스/APACHE|2015. 1. 16. 16:45
반응형

http://java.sun.com/products/archive/j2se/5.0_06/index.html

 

위 URL 중 5.0_06 은 버전 1.5.0_06 을 말합니다.

버전을 바꿔서 접속 후 다운로드 하시면 됩니다.

반응형

댓글()

Apache MPM 방식 Prefork / Worker

리눅스/APACHE|2015. 1. 16. 16:45
반응형

원문 : http://www.camelrichard.org/apache-prefork-vs-worker
참고 : http://dakrink.tistory.com/45


Prefork는 일반적으로 Single CPU 또는 Dual CPU에서 성능이 좋고 Worker는 일반적으로 멀티 CPU 시스템에서 성능이 좋다.

 

Prefork
<IfModule mpm_prefork_module>
      StartServers                   5
      MinSpareServers            5
      MaxSpareServers          10
      MaxClients                  150
      MaxRequestsPerChild     0
 </IfModule>


Worker
<IfModule mpm_worker_module>
       StartServers                 2
       MaxClients               150
       MinSpareThreads       25
       MaxSpareThreads      75
       ThreadsPerChild         25
       MaxRequestsPerChild   0
</IfModule>

 


Apache MPM 이란? 
MPM (Multi-Processing Module) : 다중 처리 모듈
☞ apache 가 받아들인 요청을 처리하기 위해 "자식 process" 에게 분배하는 방식이다.

 

종류 : 여러가지 종류가 있으나 대표적인 prefork 방식과 Worker 방식만 소개 하겠습니다.

 

Prefork 
실행중인 프로세스 복제하여 실행 ( 메모리 영역까지 같이 복제) 
프로세스가 소비하는 메모리가 많음. 
응답프로세스를 미리 띄워놓고 클라이언트 요청시 자식 프로세스가 반응하게 되는 방식.

 

prefork MPM ( --with-mpm=profork) 컴파일
Prefork 방식은 일반적으로 single CPU 또는 Dual CPU에서 성능이 좋고


Worker 
worker MPM ( --with-mpm=worker) 컴파일
Worker 방식은 일반적으로 멀티 CPU 시스템에서 성능이 좋다.
요청을 thread 단위로 처리 ( 최대 64개의 thread 처리 가능 ) 
지정된 만큼의 프로세스와 각 스레드를 준비하여 클라이언트의 요청을 받아들이는 설정


Prefork 방식과 Worker 방식의 차이점 
(1)  Worker가 Prefork에 비해 적은 메모리 사용한다. 
(2)  Worker : 통신량이 많은 서버에 적절한 형태를 가진다.
(3)  Prefork : 안전하지 않은 제 3자가 만든 모듈을 사용할 수 있다. 
(4)  Prefork : 디버깅이 빈약한 플랫폼에서 쉽게 디버깅 할 수 있다.
(5)  ‘Worker‘ 와 ‘Prefork‘ 의 속도는 비슷하다.
(6)  apache MaxClient : Prefork 방식일 경우 최대 256 까지 변경 가능하다.

 

 

prefork 의 구동 방식은 child 프로세스를 똑같이 복사하면서 access를 처리하여, 이로인해 메모리도 똑같이 복사하게 되며 당연히 메모리를 많이 소비합니다.

 

이러한 단점을 극복하고자 나온게 httpd-2x.x 부터는 mpm 중에서 worker 가 추가되어 나왔으며, 모든 access 를 하나의 쓰레드로 처리하여, 결론적으로 메모리 소비에는 어느 정도 효과가 있으나, 하나의 쓰레드가 문제가 생기면 해당 쓰레드에 access 중인 모든 프로세스에 문제가 발생됩니다.

 

결론적으로 복제된 프로세스만 영향을 받는 prefork 에 비해서 굉장히 불안해 집니다.

 

대안으로 하나의 쓰레드가 처리하는 access 프로세스를 64개로 기본적으로 제한하고, 또는 수정할 수 있게되어 있으나, 이 부분도 더 개선이 되어야겠습니다.

 

[출처] SYSTEM Engineer 깽애니네 (리눅스, 윈도우, 보안, DDOS, 네트워크, 프로그래밍) - http://mojily.pe.kr/bbs/board.php?bo_table=B19&wr_id=91

 

반응형

댓글()

다수 웹서버에서 PHP 세션 공유

리눅스/APACHE|2015. 1. 16. 16:45
반응형

L4, LVS, DNS RR 등으로 여러대의 웹서버를 운영하다보면
늘 고민하게 되는게 세션 공유일 것 같다.

물론 L4의 Metric 중에 Hash를 이용하면 어느정도 해결 될 수 있는 문제이지만,
가끔 클라이언트가 다른 서버로 세션이 할당되는 경우를 볼 수 있다.

나 또한 이 문제로 많은 고민을 했고, 여러 많은 HOW를 보았지만 썩 마음에 드는것이 없었다.
아마 세션 공유를 위해서 사용되는 방법은 아래의 3가지가 가장 보편적이지 않을까 싶다.

1. NFS, Samba
특정 서버의 디렉토리를 다수의 웹서버에서 Network를 통해 공유하는 것이다.
그럼 한곳의 디렉토리에 모든 세션 파일이 존재할 것이고 문제는 해결이 된다.
그렇지만 NFS나 Samba는 Write 효율성이 상당히 떨어지는 데몬이다.
세션은 그 특성상 read/write가 매우 빈번히 일어나기 때문에 효율성 면에서는 좋지 않다.
(개인적으로 이 방법을 사용하다가 피본적이 있다-_-;;)

2. DBMS
세션 데이터를 DBMS와 연동하여 DB에 저장하는 방식이다.
보편적으로 주로 사용되는 방법이지만, 접속자가 매우 많은 환경에서는
DB서버에 부하가 늘어날 수 밖에 없는 구조이다.
또한 DBMS에서 생기는 lock도 무시못할 변수로 떠오를 수 있다.

3. Daemon
말 그대로 데몬을 이용하여 세션을 공유하는 방식이다.
세션서버를 따로 구축하기에 제일 적절한 방법이 아닐까 싶다.

늘 그렇지만.. 난 언제나 서론이 참 길다.
오늘은 sharedance 라는 데몬을 소개하고자 한다.
지인의 소개로 알게된 데몬인데..
약 2년정도를 15대의 웹서버에 적용해서 사용하고 계신다는데.. 별 문제는 없으시다고 한다.
그래서 현재 우리 회사에서도 적용중인 데몬이다.

1. 세션 서버 구성
이 데몬은 세션 서버로 사용될 서버에만 설치해주면 된다. 웹서버에는 설치할 필요가 없다.
sharedance의 최신버전은 http://sharedance.pureftpd.org/ 여기서 구할 수 있으며,
RPM으로 구하고 싶다면 http://rpm.pbone.net/ 에서 sharedance로 검색하면 된다.

1-1. RPM 설치

설치 끝났다. 참 쉽다. -_-

1-2. config 설정
sharedance의 환경설정 파일은 /etc/sysconfig/sharedance 에서 해주면 된다.
설정할 내용이 많은 것도 아니고, 달랑 2개면 된다.

SHAREDANCE_DIR="/var/lib/sharedance"
SHAREDANCE_OPTIONS="--expiration=1800 --timeout=1800"

SHAREDANCE_DIR 은 세션 파일이 저장될 디렉토리를 의미한다.
SHAREDANCE_OPTIONS 는 데몬을 시작할때 사용할 옵션을 지정해주는 것이다.
어떤 옵션들이 있는지 보고 싶다면 sharedanced --help 라고 치면 나온다.

1-3. sharedance 시작

[root@localhost]# /etc/init.d/sharedance start

이제 sharedance 사용 준비가 모두 완료 되었다.


2. Client 설정 (웹서버)
웹서버는 크게 설정하거나 설치할 내용이 없다.
단순히 php.ini에서 sharedance의 handler 파일만 호출해주도록 설정하면 된다.

2-1. handler 파일 준비
이 파일을 직접 만들 필요는 없고, sharedance 에서 제공하는 파일을 그대로 가져다 쓰면 된다.
세션서버에서 sharedance를 RPM으로 설치했다면,
/usr/share/doc/sharedance-0.6/php/ 에 핸들러 파일이 존재할 것이다.

[root@localhost]# ls /usr/share/doc/sharedance-0.6/php
session_handler.php  sharedance.php  test_session.php  test_sharedance.php

필요한 파일은 session_handler.php와 sharedance.php 파일이다.
이 2개의 파일을 웹서버로 전송한다.

2-2. handler 파일 복사 및 설정
세션서버에서 전송받은 핸들러 파일을 적당한곳에 잘 복사해두면 된다.
필자는 편의상 서버 운영에 필요한 파일을 한곳에 몰아서 관리하고 있기 때문에
/etc/sadmin/httpd/sharedance 에 복사를 했다.

핸들러 파일이 세션서버를 이용할 수 있도록, 핸들러 파일을 약간 수정해야 된다.
그렇지만 그리 어려운 내용은 아니기 때문에 쉽게 수정할 수 있다.

[root@localhost]# vi /etc/sadmin/httpd/sharedance/session_handler.php
define('SESSION_HANDLER_HOST', '192.168.0.100');

이 부분은 세션서버를 지정해주는 부분이다.
만약 세션서버가 같은 서버에서 돌고 있다면 localhost로 지정하면 될 것이고,
다른 서버에서 돌고 있다면 그 서버의 ip 혹은 host를 적어주면 된다.

[root@localhost]# vi /etc/sadmin/httpd/sharedance/sharedance.php
define('SHAREDANCE_DEFAULT_PORT', 1042);
define('SHAREDANCE_DEFAULT_TIMEOUT', 10);

이 부분은 세션서버의 listening port와 timeout 시간을 설정해주는 부분이다.
만약 세션서버에서 데몬의 포트가 다르게 설정되어 있다면 이곳에서 수정을 해주면 된다.

2-3. php.ini 설정
이제 모든 준비가 끝났으므로 웹서버의 PHP에서 session을 이용할때
sharedance의 핸들러를 통해 세션서버와 통신하도록 설정해주기만 하면 된다.

[root@localhost]# vi /etc/php.ini
...
auto_prepend_file = /etc/sadmin/httpd/sharedance/session_handler.php
...
session.save_handler = user

php.ini 수정이 모두 끝났으면 웹서버를 재시작하여 변경된 php.ini의 내용을 reload 시킨다.

3. sharedance 확인
모든 설정과 준비가 끝났다.
세션서버에 세션파일이 잘 생성 되는지 확인을 해보자.

[root@localhost]# ls /var/lib/sharedance
01c6hof0u872jp3grka4ifo3u4  4u44789jq4vtjt7l2fp3t1ime6  e7d6nq244j27l8bllif792pp25
...
...

위와 같이 세션파일이 생성이 된다면, 정상적으로 웹서버와 세션서버가 통신하고 있는 것이다.

 

[출처] Tini's real life story (http://blog.tini4u.net/99)

반응형

댓글()

ip_conntrack: table full, dropping packet.

리눅스/OS 일반|2015. 1. 16. 16:45
반응형

-------------------------- messages log --------------------------

Jun  6 12:54:37 ns1 kernel: ip_conntrack: table full, dropping packet.
Jun  6 12:54:43 ns1 kernel: printk: 95 messages suppressed.
Jun  6 12:54:43 ns1 kernel: ip_conntrack: table full, dropping packet.
Jun  6 12:54:47 ns1 kernel: printk: 133 messages suppressed.
Jun  6 12:54:47 ns1 kernel: ip_conntrack: table full, dropping packet.
Jun  6 12:54:54 ns1 kernel: printk: 140 messages suppressed.
Jun  6 12:54:54 ns1 kernel: ip_conntrack: table full, dropping packet.
Jun  6 12:55:07 ns1 kernel: printk: 103 messages suppressed.
Jun  6 12:55:07 ns1 kernel: ip_conntrack: table full, dropping packet.
-----------------------------------------------------------------

ip_conntrack: table full, dropping packet. 는 ip_conntaack 모튤의 테이블이 꽉 차버려서 나머지 패킷을 drop 시킬때에 발생.

 
ip_conntrack 에서 테이블을 구성하는 두가지의 값
  - CONNTRACK_MAX
  - HASHSIZE
 
CONNTRACK_MAX는 커널 메모리 상에서 netfilter가 동시에 처리하는 세션의 수.
HASHSIZE는 CONTRACK 엔트리의 리스트를 저장할 해쉬 테이블의 사이즈.
-----------------------------------------------------------------

messages에 위와 같은 로그가 있다.

watch -d cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count 로 확인 했을때

26129

 

최대 값은 아래와 같았다.

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
65536

 

서비스 지연시에는 65536 세션을 초과했을듯 싶다.

그렇다면 ip_conntrack_max 값을 증가시켜 주면되는데.

echo 65536 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max   이런 방식으로 변경가능.

echo 0 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max   요건 무제한..그러나 자칫 하다가는 서버가 죽을수도 있겠죠? ^^

반대로 너무 적게 잡아 놓으니 원격 접속은 물론 웹페이지등 모든 웹서비스가 안되더군요. ^^

 

 

[출처] hanyjuny님의 블로그 | 쭈우닝 (http://blog.naver.com/hanyjuny?Redirect=Log&logNo=40109148791)

반응형

댓글()

웹서버 스트레스 테스트

리눅스/APACHE|2015. 1. 16. 16:44
반응형

웹서버 스트레스 테스트

 

방법 1.
    

    - ab 사용법 
         -n requests 요청을 수행할 개수 
         -c concurrency 요청을 만들 개수로 동시 사용자 개념  
         -v verbosity 얼마나 자세한 정보를 화면에 출력해 줄 것인지 결정 
         -w HTML 문서형식으로 테이블로 만들어 결과를 화면에 출력 
         -k HTTP 프로토콜의 지속연결 (KeepAlive) 기능을 사용 
 
        ./ab -n 100 -c 10 http://www.xxxxx.com:80/ 
        10 명의 유저가 동시에 http://www.xxxxx.com/index.html 을 요청 
        각각의 시뮬레이트 유저는 요청을 10 번씩 하게 됩니다. 
 
        ab -n 1500 -c 50 http://www.xxxxx.com:80/ 
        요청을 30 x 50 (50 명의 사용자가, 각각 30 번의 요청)

 

방법 2.


     가끔 네트웍 카드를 테스트 해야 할 경우가 있는데, 이 때 최대로 트래픽을 주는 방법입니다. 
     우선 순수하게 네트웍 트래픽만을 이용하여 부하를 줘야 하기 때문에 disk나 기타 다른 IO장 
     치의 영향을 최소화 해야 합니다. 이를 위하여 /dev/zero와 /dev/null 가상 장치를 이용 합니다. 
 
     우선 테스트 할 기계를 A라고 하고 그 상대로 B라는 기계를 준비 합니다. 물론 B는 A보다 적어도 
     많은 밴드위스를 지원하는 네트웍 카드가 장착 되어 있어야 하겠죠.

 

    1. A와 B 모두 rsh이 가능 하도록 .rhost등을 설정 합니다. 
 
    2. B로 root로긴 하여 다음 명령을 실행 합니다. 
 
          # dd if=/dev/zero | rsh A dd of=/dev/null &

         최대의 부하를 주기 위해 위 명령을 두 세번 반복 합니다.

 

    3. A로 로긴 하여 netstat -i 명령으로 트래픽을 확인 하실 수 있습니다. 
 
         # netstat -i 1 
         input le0 output input (Total) output 
         packets errs packets errs colls packets errs packets errs colls 
         825933 0 606554 0 0 853023 0 633644 0 0 
         730 0 366 0 0 730 0 366 0 0 
         848 0 427 0 0 848 0 427 0 0 
         815 0 413 0 0 815 0 413 0 0 
         849 0 425 0 0 849 0 425 0 0 
         868 0 436 0 0 868 0 436 0 0 
         862 0 432 0 0 862 0 432 0 0 
 
     위의 결과 10Mbps 인터페이스인 le0 의 in + out 패킷은 초당 평균 약 1300개 정도이고 
     이것은 1300 * 1500Bytes (MTU) = 1.95MBytes/s 가 되겠네요. 이를 다시 bps로 바꾸면 
     15.6Mbps 가 되고 full duplex이므로 괜찮은 throughput 이라고 할 수 있습니다. 
 
     4. 확인이 끝났으면 B에 실행 되고 있던 백그라운드 작업을 kill 명령으로 종료 시킵니다. 


방법3 (프로그램 툴사용) siege

 

    시즈의 특징 
 
     '시즈’라는 이름은 이 툴의 모든 것을 말한다. 서버를 에워싸 서버가 어떤 이유로 문제를 
     일으켰는지를 보여주는 것이다. 유닉스 기반의 명령행 기반 툴인 시즈는 GNU GPL 오픈소스 
     라이선스를 따르기 때문에 사용, 수정, 배포가 모두 무료다. 
 
     시즈는 단일 URL의 부하 테스트는 물론 많은 URL을 메모리로 불러들여 사용자가 설정한 
     시뮬레이션 유저만큼의 부하를 동시에 테스트할 수 있다. 또한 기록된 총히트수와 전송된 
     바이트수, 반응시간, 병행성(Concurrency), 리턴 상태 등을 보여주며, HTTP 1.0/1.1 프로토콜, 
     GET/POST 디렉티브, 쿠키, 트랜잭션 로깅, 기본적인 인증 등을 지원한다
 
     builder.com 사이트에서 다운로드

     tar zxvf siege-latest.tar.gz
     ./configure
     make
     make install

 

    - 실행하기 
 
     시즈는 웹서버를 테스트하는 다양한 옵션을 제공한다. 가장 간편한 실행 방법은 단일 URL 
     테스트다. 이것은 특정 페이지가 대량 트래픽에 어떻게 반응하는지를 잘 보여준다. 이때 
     중요한 옵션 두 가지가 동시 접속자수(-c 옵션, 디폴트는 10)와, 반복 쿼리수 혹은 시간으로 
     표현되는 테스트 기간(-t)이다. 예를 들어 25명이 동시에 1분간 접속하는 환경이라면 다음과 
     같이 실행하면 된다. 
 
     $ siege -c25 -t1M [테스트될 주소](www.naver.com)

 

 

[출처] 잡동사니 | 풍운아 (http://blog.paran.com/bandi2030/21544231)

반응형

댓글()

mod_rewrite 를 이용한 주소 단축

리눅스/APACHE|2015. 1. 16. 16:44
반응형

DocumentRoot 디렉토리에 .htaccess 파일을 생성하여 아래내용을 삽입합니다.
- 또는 apache 의 httpd.conf 에 추가해도 됩니다. (모든 사이트 적용)

- virtualhost 안에 설정도 가능합니다. (개별적 사이트 적용)

 

예1) http://sysdocu.tistory.com/11 입력시 http://sysdocu.tistory.com/aa/bb/11 의 페이지가 보이게 설정

 

        RewriteEngine on
        RewriteRule ^([a-zA-Z0-9_-]+)$ /aa/bb/$1 [L]

 

예2) http://sysdocu.tistory.com/11 입력시 http://sysdocu.tistory.com/list.php?action=search&search_type=id&search+word=11 의 페이지가 보이게 설정
 

        RewriteEngine on
        RewriteRule ^([a-zA-Z0-9_-]+)$ /list.php?action=search&search_type=id&search_word=$1 [L]

 

- 위 두개 예의 룰은 같은 형식입니다.

- 위 룰을 적용시키면 /11 뿐만 아니라 /abc 등 아무 문자가 와도 입력한 문자를 따라갑니다.

- 주소창에 입력하였던 주소는 변하지 않습니다.

- httpd.conf 에 반드시 AllowOverride 항목이 All 로 되어있어야 합니다.

  None 상태일 경우 별도 파일인 .htaccess 에서 작동이 되지 않습니다.

반응형

댓글()

아파치 user, group 을 root 권한으로 설정

리눅스/APACHE|2015. 1. 16. 16:43
반응형

일반적으로 아파치는 User, Group 을 nobody 권한으로 이용하나,

관리자 root 계정으로 가동할 경우 에러메세지를 보이며 실행이 되지 않습니다.

본래 아파치가 그렇게 정의되어있으며, 이를 무시하고 root 권한으로 가동하고자 할 경우 재컴파일이 필요합니다.

 

우선 설정복구가 쉽도록 아파치 설정파일을 백업해놓고

소스폴더로 이동하여 재컴파일 합니다.

 

1. 백업 및 삭제

여러 백업방법이 있으나 간단한 cp 명령을 이용하여 백업합니다.

[root@sysdocu ~]# cd /usr/local

[root@sysdocu local]# cp -arp apache apache.bak.100610

 

백업하였으면 설치되어있던 아파치를 삭제합니다.

[root@sysdocu local]# rm -rf /usr/local/apache

 

 

2. 컴파일

아파치 소스폴더로 이동하여 재컴파일 합니다.

 

[root@sysdocu local]# cd /usr/local/src/httpd-2.2.11

[root@sysdocu httpd-2.2.11]export EXTRA_CFLAGS="-DBIG_SECURITY_HOLE"
[root@sysdocu httpd-2.2.11]# ./configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared=all --enable-modules=shared --enable-ssl --enable-rewrite

[root@sysdocu httpd-2.2.11]# make

[root@sysdocu httpd-2.2.11]# make install

 

이제 httpd.conf 에서 User, Group 항목을 root 로 변환 후 아파치 재시작이 가능합니다.

 

반응형

댓글()

아파치 mod_expires 설정 및 활용

리눅스/APACHE|2015. 1. 16. 16:43
반응형

▶mod_expires.c 설치
/usr/local/apache/bin/apxs -aic /usr/local/src/httpd-2.2.14/modules/metadata/mod_expires.c

 

▶httpd.conf 에 내용추가
LoadModule expires_module libexec/mod_expires.so
<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
        ExpiresByType text/css "access plus 1 month"
        ExpiresByType image/jpeg "access plus 1 month"
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType image/png "access plus 1 month"

        <Directory "/usr/local/apache/htdocs">
                ExpiresActive Off
        </Directory>
</IfModule>

 


▶추가
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/css "access plus 1 month"

ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/cgm "access plus 1 month"
ExpiresByType image/tiff "access plus 1 month"

ExpiresByType video/mpeg "access plus 1 month"
ExpiresByType video/quicktime "access plus 1 month"
ExpiresByType video/x-msvideo "access plus 1 month"

ExpiresByType audio/basic "access plus 1 month"
ExpiresByType audio/midi "access plus 1 month"
ExpiresByType audio/mpeg "access plus 1 month"
ExpiresByType audio/x-aiff "access plus 1 month"
ExpiresByType audio/x-mpegurl "access plus 1 month"
ExpiresByType audio/x-pn-realaudio "access plus 1 month"
ExpiresByType audio/x-wav  "access plus 1 month"

ExpiresByType application/x-shockwave-flash  "access plus 1 month"

▶아파치 재시작
/usr/local/apache/bin/apachectl restart

※주의
DSO 방식으로 설치된 아파치만 적용가능

 

 

설정
<VirtualHost *>
ServerName img.xxxxxx.co.kr
DocumentRoot /home/test/www
#########이미지(gif/jpeg) 캐싱 한달로 설정############# 
<Directory "/home/auction/www/img">
ExpiresActive On
ExpiresByType image/jpeg "acces plus 1 month"
ExpiresByType image/gif "acces plus 1 month"
</Directory>
################################################
</VirtualHost>

 

 

작동 확인
lynx  -head http://img.xxxxxx.com/img/204630001160317126.jpg  --> 결과에서 'Cache-Control:' 헤더 부분 확인

Date: Tue, 12 Dec 2006 07:40:21 GMT
Server: Apache
Last-Modified: Sun, 08 Oct 2006 14:18:46 GMT
ETag: "76962b-23516-621f3d80"
Accept-Ranges: bytes
Content-Length: 144662
Cache-Control: max-age=2592000
Expires: Thu, 11 Jan 2007 07:40:21 GMT
Connection: close
Content-Type: image/jpeg

max-age=86400이면 하루이다.

 

[출처] WEB | superman4u (http://blog.naver.com/superman4u?Redirect=Log&logNo=40101316345)
2592000은 30일 

반응형

댓글()

이미지 링크 방지 설정하기

리눅스/APACHE|2015. 1. 16. 16:43
반응형

www.hihome.com 의 계정을 가진 회원들이 계정에 올려진 이미지를 외부에서 링크시키면 
이미지가 제대로 보이지 않는다는 얘기를 듣고서 아파치 설정으로 가능할 것 같아서 
세팅을 해보았습니다.

 

원래 아파치 httpd.conf 세팅

<VirtualHost www.abc.com
   DocumentRoot /home/httpd/htdocs 
   ServerName www.abc.com 
   ErrorLog logs/error_www.abc.com 
   CustomLog logs/access_www.abc.com common 
</VirtualHost>

 

수정된 아파치 httpd.conf 세팅 
<VirtualHost www.abc.com
   DocumentRoot /home/httpd/htdocs 
   ServerName www.abc.com 
   ErrorLog logs/error_www.abc.com 
   CustomLog logs/access_www.abc.com common 
## 수정부분 시작 
   SetEnvIF Referer "http://abc.com" pass

   SetEnvIF Referer "http://www.abc.com" pass 
   <FilesMatch ".(avi|mge?g|exe|jpe?g|mp3|gif|png|zip|asx|asf|wmv|wma|bmp)$">
   Order deny,allow 
   deny from all 
   allow from env=pass 
   ErrorDocument 403 "이미지 링크하지 마세요!" 
   </FilesMatch> 
## 수정부분 끝 
</VirtualHost>

 

간단히 설명하자면 Referer 중 http://www.abc.com 이라는 값에 
pass 라는 환경변수를 설정하였다가 gif, jpg, jpeg, png 이미지를 억세스할때 
pass 환경변수가 있으면 억세스가 되고 없으면 접속거부를 하도록 하는 겁니다. 


반응형

댓글()

Tomcat 관리자 tomcat administration, tomcat manager 설정하기

리눅스/APACHE|2015. 1. 16. 16:42
반응형

Tomcat 서버 설치 및 환경 세팅

  • http://jakarta.apache.org/tomcat/index.html에서 원하는 Tomcat의 버전을 다운받는다.
  • 다운받은 Tomcat을 원하는 디렉토리에 압축을 푼다.
  • CATALINA_HOME을 시스템 환경변수에 설정한다.(굳이 시스템 환경변수에 추가하지 않아도 된다.)
  • CATALINA_HOME/bin의 startup.bat(Windows의 경우), startup.sh(Unix, Linux의 경우)을 실행한다.
  • Tomcat이 정상적으로 시작한다는 메세지를 확인한 후 http://localhost:8080으로 접근하면 고양이 한마리가 나타나면 Tomcat 서버가 정상적으로 시작된 것이다.
  • Tomcat을 설치하고 세팅하는 과정은 생각보다 간단하다.
  • Admin, Manager 애플리케이션 설정하기

    • Tomcat 설치를 완료한 다음 서버를 시작하면 Tomcat 서버에서 제공하는 Admin, Manager 애플리케이션을 사용할 수 있다.
    • http://localhost:8080/admin, http://localhost:8080/manager/html로 접근해본다. Admin과 Manager 애플리케이션이 시작된 것을 확인할 수 있다.
    • Admin과 Manager 기능은 Tomcat 서버를 관리하는 관리자가 필요한 애플리케이션이기 때문에 로그인을 필요로 한다. 로그인을 위하여 필요한 계정 정보를 설정하는 과정은 다음과 같다.

      • CATALINA_HOME/conf/tomcat-users.xml 파일을 연다.
      • Admin 애플리케이션에 접근하기 위해서는 admin role과 admin role을 가지는 계정, Manager 애플리케이션에 접근하기 위해서는 manager role과 manager role을 가지는 계정이 하니씩 필요하다. 물론 같은 계정이 admin과 manager role을 모두 가질 수도 있다. 다음은 admin과 manager role과 계정을 추가한 예이다.
      •     
        
        <?xml version='1.0' encoding='utf-8'?>
        <tomcat-users>
          <role rolename="tomcat"/>
          <role rolename="role1"/>
          <role rolename="manager"/>
          <role rolename="admin"/>
          <user username="tomcat" password="tomcat" roles="tomcat"/>
          <user username="role1" password="tomcat" roles="role1"/>
          <user username="both" password="tomcat" roles="tomcat,role1"/>
          <user username="admin" password="admin" roles="admin,manager"/>
        </tomcat-users>  
        

        위 예의 <role/>태그는 manager와 admin role을 설정하고 있다. 위 예제 소스를 보면 admin과 manager role을 가지는 admin 계정을 추가하고 있다. 비밀번호 또한 admin이다.


반응형

댓글()