Apache 2.4.x 버전 설치과정 중 configure 시 아래와 같은 메시지가 발생하면

configure: error: pcre-config for libpcre not found.
PCRE is required and available from http://pcre.org/

yum -y install pcre-devel


[apche 1.3.x | 2.0.x 2.2 x.2.4.x ] 아파치 버전별 차이점
 
1. 아파치 1.3.x의 경우
 
아파치 1.3.x 버전에서 MaxClient 는 기본적으로 256 까지만 설정할 수 있습니다.
이 파라미터 값을 증가시키려면 아파치의 소스를 수정 후 다시 컴파일해야 합니다.
 
아파치 소스 디렉토리에 있는 src/include/httpd.h 파일에서 HARD_SERVER_LIMIT 256 로 설정된 값을
512 나 1024로 변경하여 저장한 후, 아파치를 재 컴파일해주면 됩니다..
 
2. 아파치 2.2.x 의 경우
 
아파치 2.2 버전은 1.3 과 매우 다릅니다.
따라서 httpd.h 파일에는 MaxClient 와 관련된 옵션이 없습니다.
저도 이 옵션 찾느라 엄청나게 헤매고 결국은 영문 홈피를 번역해 가며 해답을 찾았습니다.
 
아파치 1.3 버전에서는 src/include/httpd.h 파일 하나만 수정한 후 configure 해주면 되었지만
아파치 2.2 버전에서는 2개의 파일에서 설정을 바꾸어 주어야 합니다.
 
MaxClient 값을 256에서 2048까지 높이려고 할 경우를 예로 설명드리겠습니다.
 
먼저, 소스 디렉토리에서 server/mpm/prefork/prefork.c 파일을 vi 에디터 등으로 열고
#define DEFAULT_SERVER_LIMIT 256 으로 되어 있는 부분을
#define DEFAULT_SERVER_LIMIT 2048 으로 수정한 후, 저장합니다..
 
여기서, 2048 / 256 을 하시면 8 이라는 배수가 나옵니다. 이 배수를 잘 기억해 둡니다.
 
다음에는 소스 디렉토리에서 server/mpm/worker/worker.c 파일을 vi 에디터 등으로 열면
#define DEFAULT_SERVER_LIMIT 16  으로 되어 있는 부분이 있습니다.
 
여기에서 16 * 8 (아까 prefork.c 파일에서 기본값인 256에다 곱해서 2048이 된 배수인 8) 을 곱합니다. 256 이 되는군요.

#define DEFAULT_SERVER_LIMIT 256  으로 수정한 후 저장합니다.
 
그 다음에는 ./configure --prefix=/usr/local/apache2.2 --enable-rewrite 명령으로 아파치를 재 컴파일한 후,
/usr/local/apache2.2/conf/extra/httpd-mem.conf 파일을 에디터로 열어 MaxClient 부분의 숫자값을 2048 로 변경하여
저장한 후, 아파치를 재시작하면 됩니다.
 
 
3. 아파치 2.4.x 의 경우
 
소스로 컴파일 하는 경우  방법이 아예 다르네요~
 
 
 
[mpm 접속시 최대 접속자수 설정]
아파치 웹서버의 경우 MPM(Multi Processing Module)방식에는 prefork와 worker로 나뉜다.
- prefork는 독립적인 메모리를 사용하여 안정적이지만 많은 메모리를 사용하게 된다.
- worker는 고성능의 멀티코어 프로세서 기반에서 유용하고, 더 적은 메모리를 사용하기에 통신량이 많은 경우 더 유리하다.
* 젠드가드는 prefork에서만 설치된다. 뭔지 모르면 그냥 이걸로 한다.
컴파일전 환경설정에서 —with-mpm 옵션으로 설정할 수 있고, 설치방식에 따라 최대 접속자수를 지정해야 하고, 설정하지 않을경우 기본값으로 설치가 된다.

- prefork 설정시
# vi server/mpm/prefork/prefork.c (73번 라인:버젼 따라 위치는 다를수 있음)
DEFAULT_SERVER_LIMIT의 상수값을 변경해준다. 난 1024로 수정했다
 
- worker 설정시
# vi server/mpm/worker/worker.c (84번 라인:버젼 따라 위치는 다를수 있음)
DEFAULT_SERVER_LIMIT의 상수값을 64정도로 수정해준다

     
[출처] http://www.jnetwork.co.kr/bbs/board.php?bo_table=useguide&wr_id=244&page=2


Apache가 설치되어 있을 때, 해당 Apache가 설치된 컴파일 옵션을 아래 경로의 파일을 cat이나 vi로 열어봄으로써 확인 가능하다.

[아파치설치경로]/build/config.nice

예를 들어 아파치 설치 경로가 /usr/local/apache 라면, cat명령어를 이용하여 아래와 같이 간단히 확인할 수 있다.

# cat /usr/local/apache/build/config.nice

 

페이지 리디렉트와 검색엔진 최적화
301 redirect는 영구적으로 옮겼을때
302 redirect는 일시적으로 옮겼을때 사용
검색엔진 최적화에는 301 redirect 추천


[301 permanent redirect]


사이트를 새로운 도메인으로 옮겼다던가 페이지의 주소가 바뀌었을때 사용자들을 자동으로 바뀐 주소로 옮겨가게 만드는데는 두가지 방법이 있습니다.
301 permanent redirect와 302 temporary redirect 입니다.
301과 302는 사용자가 브라우저를 통해 웹서버에 요청했을때 돌려받는 웹서버의 상태코드입니다.
301은 요청한 정보가 새로운 주소로 영구적으로 옮겨갔다는것을 말해주며 302는 일시적으로 옮겨갔다는것을 말해줍니다.
표면상으로는 둘다 자동으로 사용자를 옮겨가게 만드니 사람의 육안으로는 구별할수 없으나 검색엔진 크롤러는 그 차이를 알수 있고, 이 두가지가 검색엔진 최적화에 미치는 영향은 꽤 큽니다.



이것은 말그대로 요청한 정보(사이트나 페이지)가 영구적으로 옮겼다는것을 말해줍니다.

 

예를 들어 aaa.com을 소유했던 사람이 bbb.com으로 사이트 주소를 옮겼을때 301 redirect를 해준다면 크롤러가 aaa.com에 접속했을때 aaa.com에서 인덱스한 내용의 주소가 bbb.com으로 바뀌었다는것을 감지하고 인덱스된 aaa.com의 주소를 자동으로 bbb.com으로 변경시켜 줍니다.

이럴경우 ‘aaa’라는 키워드로 aaa.com이 검색결과에 나오던것이 bbb.com으로 나오게 되는 것입니다.

이렇게 되면 사이트 관리자는 손쉽게 검색엔진에 변경된 사항을 적용할수 있게되고 검색엔진을 통해 유입되는 트래픽을 잃지 않게 됩니다.

그외에 www.aaa.com을 ‘www’가 빠진 aaa.com으로 지정하고 싶다던지 www.aaa.com/product.html?a=samsung&b=galaxy&c=tab 같은 url을 www.aaa.com/samsung/galaxy/tab 같이 읽기 쉬운 형식으로 바꾸고 싶을때 유용하게 쓰입니다.


[302 temporary redirect]


302 redirect는 현재 페이지나 사이트를 일시적으로만 옮겼다는것을 말해줍니다.

 

대부분 javascript를 이용한 redirect, 메타태그(< meta http-equiv="refresh" content="0;url=http://새로운주소.com" />)를 이용한 redirect 또는 각각의 프로그래밍 언어를 사용한 단순 redirect가 이에 포함됩니다.

aaa.com 소유자가 bbb.com으로 사이트를 옮겼는데 잘모르고 302 redirect를 해주게 되는경우 사용자는 자동으로 옮겨가게 되지만, 크롤러는 사이트가 옮겨갔다는것을 감지하더라도 일시적으로만 옮겨간것으로 간주하기 때문에 검색결과에 아무런 변화를 주지 않게 됩니다.

그래서 특정 키워드로 검색을 했을때 aaa.com이 나오던것이 bbb.com으로 업데이트되지 않게 됩니다.

간혹 이것을 악용하여 특정 키워드로 최적화된 페이지를 방문한 사용자를 자동으로 페이지와 전혀 상관없는 광고성 페이지로 옮겨가게 만드는 경우도 있습니다.

구글은 이를 doorway page로 여겨 페널티를 부과하기때문에 302 redirect를 사용할때에는 잘 생각해보시고 사용하시기 바랍니다.

대부분의 경우 302 보다 301 redirect를 사용하시는것을 추천합니다.


301 redirect 사용방법
301 redirect 사용방법에는 여러가지가 있습니다.
사용하는 프로그래밍 언어에 따라 약간씩 틀리고 .htaccess 파일 수정을 통해 mod_rewrite을 사용할수 있습니다.


0. apache 에 직접 등록시

<virtualhost> 와 </virtualhost> 사이에 아래의 룰을 추가

Redirect 301 / http://연결될도메인.com



1. PHP redirect

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );
?>

2. JSP(Java) redirect

< %
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%>

3. ASP.NET redirect

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.new-url.com");
}
</script>
4. ASP redirect
< %@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.new-url.com/"
%>

5. Ruby on Rails redirect

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end

6. CGI Perl redirect

$q = new CGI;
print $q->redirect("http://www.new-url.com/");

7. .htaccess mod_rewrite

RewriteEngine on
RewriteRule (.*) http://www.new-url.com/$1 [R=301,L]

.htaccess의 mod_rewrite 같은 경우 사용법이 훨씬 다양하며 자세한 내용은 http://httpd.apache.org/docs/current/mod/mod_rewrite.html를 참조하시기 바랍니다.



계정하나에 두개의 도메인을 각각의 서브폴더에 연결시키는 방법은

제가 알기로, (틀릴수도있음)
1. 루트의 메인페이지에 메타정보세팅을 하여 접속즉시 자동(순간이동?)으로 특정 폴더로 이동 시키는 방법
2. 루트의 메인페이지에 php코드를 삽입하여, if~, else등으로 url에 따라서 특정 폴더로 이동시켜주는 방법
이 있는데요,

위 두가지 방법은 검색해보시면, 많이 나오는데,
.htaccess 파일을 세팅해서 할 수 있는 방법은, 잘 없기에, 간단한 예를 소개해 올립니다..

예) 이해를 쉽게하기위해, 제로보드xe와 텍스트큐브(테터툴즈블로그)를 동시에 설치하고,
각각의 도메인으로 접속하는것을 예로 했습니다..

aaaa.com --------------> /zbxe/ 폴더로 접근 (제로보드xe가 뜨겠죠)
bbbb.co.kr --------------> /tc/ 폴더로 접근 ( 텍스트큐브가 뜨겠죠)

계정의 루트( / )에 .htaccess 파일을 아래의 노란부분과 같이 만들어서 올려주시면 됩니다.
도메인별, 폴더별로 빨강글씨부분이 달라지는 부분입니다.

주의 1) 제로보드xe, 텍스트큐브등을 설치하면 .htaccess 파일이 생기는데, 그 파일들과 혼동하지마세요,
그 파일들은 설치후 각각 zbxe, tc 폴더내에 있는 것이고, 지금 만들어서 올리는건 루트( / )에 있어야 할 파일
입니다.)

주의 2) .htaccess 의 제어는 호스팅계정마다 지원할 수도, 안할 수도 있습니다.. 저는 까페스물넷계정인데, 잘 적용하여
쓰고있고, 말많은 파랑호스팅에서도 되는거 확인했습니다..


RewriteEngine On

RewriteCond $1 !^(zbxe)/
RewriteCond %{HTTP_HOST} ^aaaa\.com [NC]
RewriteRule ^(.*)$ /zbxe/$1 [L]

RewriteCond $1 !^(tc)/
RewriteCond %{HTTP_HOST} ^bbbb\.co\.kr [NC]
RewriteRule ^(.*)$ /tc/$1 [L]

 

위와 같이 만들어 올려주시면 되고요,
자세한 설명은 없습니다.(^^) 제가 초보라서..

 

위는 메인 도메인 2개가 다를 경우 각각 정해진 위치에 링크하는 방법이고

각각의 메인 도메인에 서브 도메인이 추가 존재할 경우 아래 예시 처럼 하면 됩니다.

 

RewriteEngine On

RewriteCond $1 !^(dir01\/dir01-1)/
RewriteCond %{HTTP_HOST} ^go\.aaaa\.com [NC]
RewriteRule ^(.*)$ /dir01\/dir01-1/$1 [L]

RewriteCond $1 !^(dir02\/dir02-2)/
RewriteCond %{HTTP_HOST} ^to\.bbbb\.co\.kr [NC]
RewriteRule ^(.*)$ /dir02\/dir02-2/$1 [L]

 

참고하실 사이트는

http://www.htaccesseditor.com/kr  원하는 기능을 .htaccess 파일로 자동으로 생성해주는 기능사이트(그런데, 별기능없음)

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html  아파치 URL Rewriting Guide (한글)

등이 있겠네요.. 도움되시는 분 있다면 좋겠습니다..

PS.. 참, 저렇게 하면, 첫페이지의 상단 url이 짧게 줄어드는 효과가 있습니다..
http://aaaa.com/zbxe 가 아닌, http://aaaa.com 으로 되겠죠.. 아래의 필요없는 세줄을 지우고 쓰시면 되겠네요


www를 붙여서 사용하려면 www\.aaaa\.co\.kr 처럼


 

/usr/local/apache/bin/apachectl 파일을 열어 아래 처럼 수정해라.

[before]

    start)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: httpd (pid $PID) already running"
            continue
        fi
        if $HTTPD ; then
            echo "$0 $ARG: httpd started"
        else
            echo "$0 $ARG: httpd could not be started"
            ERROR=3
        fi
        ;;


[after]
   
    start)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: httpd (pid $PID) already running"
            continue
        fi
        if $HTTPD -DSSL; then
            echo "$0 $ARG: httpd started"
        else
            echo "$0 $ARG: httpd could not be started"
            ERROR=3
        fi
        ;;

이후 /usr/local/apache/bin/apachectl start 로 실행했을 때 ssl 포트가 동시에 open 되는지 netstat -nlp 로 확인 해 볼것.


<Directory  "/home/sysadm/public_html">
  Order  allow,deny
  allow from all
  deny from 223.33.184.104
</Directory>


* (1) 223.33.184.104 에서 접속이 들어오면 차단하고 그 외에는 모두 허용한다.



* (2) Deny from all 을 생략할 경우 아래와 같이 Order 순서를 allow,deny 순으로 하여 allow만 처리되도록 한다.


<Directory "/www/sysadm/public_html">
    Order allow,deny
    Allow from 223.33.184.104
</Directory>


* (3) Deny from all 이 들어갈 경우 아래와 같이 Order 순서를 deny,allow 순으로 하고 Deny from을 먼저 정의한다.


<Directory "/www/sysadm/public_html">
    Order deny,allow
    Deny from all
    Allow from 223.33.184.104
</Directory>


* (2)와 (3) 모두 223.33.184.104 만 접속을 허용하고 나머지는 모두 차단한다.


[참고] Allow from 과 Deny from 은 아래와 같이 특정 IP 뿐만 아니라 C클래스 또는 B클래스 대역까지도 차단이 가능하다.


ex) Allow from 10.10.10.0/16   -> 10.10.10.0 대역 b클래스 허용 하기

ex) Deny from 10.10.10.0/16   -> 10.10.10.0 대역 b클래스 차단 하기


ex) Allow from 10.10.10.0/24   -> 10.10.10.0 대역 c클래스 허용 하기

ex) Deny from 10.10.10.0/24   -> 10.10.10.0 대역 c클래스 차단 하기