Windows용 아파치 설정하기 // 쓰레드 설정

Windows용 아파치는 다중쓰레드 방식을 사용하기때문에,
유닉스와 달리 요청마다 다른 프로세스를 사용하지 않는다.

대신 아파치 프로세스는 항상, 부모 프로세스와 요청을 처리하는 자식 프로세스, 2개이다.
자식 프로세스에 있는 여러 쓰레드들이 요청들을 처리한다. 

그래서 작업 관리자 -> 프로세스에 보시면

httpd.exe 가 두개 실행 되어 있습니다.

=====

WinNT MPM에서의 쓰레드 조절과 관련된 옵션 설정은

MaxRequestsPerChild / ThreadsPerChild

를 사용합니다.

httpd.conf 에서 설정 할 수 있으며

MaxRequestsPerChild: 유닉스와 같이, 자식 프로세스가 요청을 얼마만큼 처리하고 죽을지를 조정한다. 그러나 유닉스와 달리 프로세스가 한번에 한 요청만을 처리하지않고 한번에 모든 요청을 서비스하기때문에, 설정한다면 매우 큰 값을 설정하길 권한다. 권장하는 기본값 MaxRequestsPerChild 0을 사용하면 자식 프로세스는 죽지않고 영원히 요청을 서비스한다.

ThreadsPerChild: 이 지시어는 새로 추가되었다. 이 지시어는 서버가 사용할 쓰레드 개수를 지정한다. 이 값이 서버가 한번에 처리할 수 있는 최대 연결개수이기때문에, 사이트에 접속량이 많다면 충분히 큰 값을 설정해야 한다. 권장하는 기본값은 ThreadsPerChild 50이다.

이렇게 설정 합니다.

APMSETUP은 

ThreadsPerChild 250
MaxRequestsPerChild  0

으로 설정 되어 있습니다.

만약 사용자가 많다면
ThreadsPerChild 값을 증가 시켜 주시면 됩니다.

올바로 설정 되었다면

logs/error.log

파일에

[XXXXXXXXXXXXXXXXXXXXXXXX] [notice] Child XXXX: Starting 250 worker threads.
[XXXXXXXXXXXXXXXXXXXXXXXX] [notice] Child XXXX: Starting 300 worker threads.

형식으로 로그가 남게 됩니다.
Posted by Sumin Family
<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        100
    DOSSiteCount        100
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    DOSLogDir   "/var/log/apache2/mod_evasive.log"

</IfModule>

위의 내용이 설정값. 즉, 1초에 100 번 동일 신호 등이 오면 로그 남기고 아웃 10초간 블럭

sudo apt-get install libapache2-mod-evasive


우리서버 설정 내용

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        3
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>


설정

<IfModule mod_evasive.c>
        DOSHashTableSize          3097
        DOSPageCount              3
        DOSSiteCount                50
        DOSPageInterval            1
        DOSSiteInterval              1
        DOSBlockingPeriod        30

        DOSEmailNotify             test@test.com
        DOSLogDir                    "/usr/local/apache2/logs/mod_evasive.log"
        DOSSystemCommand   "iptables -I INPUT -s %s -j DROP"
    DOSWhitelist                     127.0.0.1
</IfModule>



모듈설정

모듈설정에 대한 자료는 http://guni.loveyust.net/136 에서 참조하였습니다. 다만, DOSSystemCommand 를 IPTABLES로 차단하도록 명령어를 변경했습니다. 참조하세요.

- DOSHashTableSize
각 자식 해쉬테이블 마다 탑레벨 노드의 수를 지정한다.
수치가 높으면 높을수록 더 많은 퍼포먼스가 나타나지만 테이블스페이스에 메모리를 남기게 된다, 
접속량이 많으면 이 수치를 높혀도 된다.

- DOSPageCount
이것은 같은 페이지 또는 URI, 인터벌당 요청수에 대한 카운트 수이다.
지정된 값이 초과되면 클라이언트에 대한 IP 정보가 블러킹리스트에 추가된다.

- DOSSiteCount
지정된 시간동안 같은 페이지를 지정된 수 보다 초과될경우 IP 정보가 블러킹리스트에 추가된다.

- DOSPageInterval
페이지 카운트 시발점, 디폴트는 1초이다.

- DOSSiteInterval
사이트 카운트 시발점, 디폴트는 역시 1초이다.

- DOSBlockingPeriod
클라이언트가 블랙리스트에 추가되어 블러킹되는 총 시간. 이때 클라이언트는 403(Forbidden) 에러를 출력하게 된다.

- DOSEmailNotify
이 값이 지정되면, IP가 블러킹될때마다 지정된 이메일로 발동된다.
주의 : 메일러는 mod_dosevasive.c 에 정확하게 지정되야 한다. 디폴트는 "/bin/mail -t %s" 이다.

- DOSLogDir
로그 파일 경로

- DOSSystemCommand
이 값이 지정되면, 시스템은 아이피가 블러킹될때마다 명령행을 실행한다.

- DOSWhitelist
차단에서 제외될 호스트
DOSWhitelist    127.0.0.1


http://www.coldfusionfunnylog.com/blog/post.cfm/mod-evasive-protect-your-apache-from-ddos-attacks

에서 퍼옴

Posted by Sumin Family
===============================  설정 사례 ======================================
httpd.conf

<IfModule mod_expires.c>

<Directory "/home/tbo/game/de1/image">
        ExpiresActive On
ExpiresDefault "access plus 1 month"
        ExpiresByType /home/tbo/game/de1/image/png "access plus 1 month" 
        ExpiresByType /home/tbo/game/de1/image/gif "access plus 1 month"
        ExpiresByType /home/tbo/game/de1/image/jpg "access plus 1 month"

</Directory>

<Directory "/home/tbo/game/en1/image">

        ExpiresActive On
ExpiresDefault "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/png "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/gif "access plus 1 month"
        ExpiresByType /home/tbo/game/en1/image/jpg "access plus 1 month"

</Directory>

#       ExpiresDefault "access plus 1 month"
#       ExpiresDefault /home/tbo/game/en1/image/ "access plus 1 month"


</IfModule>

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

우분투 활성화 

sudo a2enmod expires

===========================================================================================
apache에서는 mod_expires 모듈을 통해 Expires HTTP header 를 설정할 수 있다.
이를 통하여 클라이언트(웹페이지 방문자)에 캐싱되는 문서나 이미지들이 많아서 트래픽을
감소시킬 수 있다. 이미지 전용 서버나 이미지 디렉토리에 설정을 해두면 효과적이다.

이미지 서버에 지정한 다음 예를 보자.

 
<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"

   # 제외할 디렉토리
        <Directory "/usr/local/apache/htdocs/temp">
        ExpiresActive Off
        </Directory>
</IfModule>

 


- ExpiresActive On 지시자로 Expires 설정을 enable 한다.
- ExpiresDefault "access plus 1 month" 지시자는 액세스한지 얼마나 지나서 expire할 것인지를 지정한다.
  즉, 지정한 기간만큼 클라이언트에 캐싱이 된다. 위에는 1달이다.

이외에 클라이언트에서 액세스한지 1달, 4주, 30일, 1년 등과 같은 expire 주기와
서버의 파일의 수정 시간으로 expire 주기를 설정할 수 있다.

 
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
ExpiresDefault "access plus 1 years"
ExpiresDefault "modification plus 30 days"
 


- 설정 마지막부분에 Directory 지시자와 ExpiresActive Off 설정을 통해
  특정 디렉토리만 expire 설정에서 제외할 수 있다.
  반대로 특정 디렉토리만 On으로도 설정할 수 있다. (일반 웹서버에 /images 와 같이 디렉토리가 있는 경우)

 
ExpiresByType image/jpeg "acces plus 4 weeks"
ExpiresByType image/gif  "acces plus 4 weeks"
 


- 위처럼 파일의 유형(image/jpeg, image/gif은 이미지 파일)으로도 가능하다.

아주 간단하지 않는가?

참고로 [다음(daum)] 의 이미지 서버는 28일(4주)로 [야후!코리아] 는 5년으로 설정되어 있다.


총정리

<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType application/javascript "access plus 1 month" 
ExpiresByType text/css "access plus 1 month" 

ExpiresByType image/bmp "access plus 1 month" 
ExpiresByType image/cgm "access plus 1 month" 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpeg "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" 
</IfModule>

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

자세한자료 


Posted by Sumin Family

<VirtualHost *:80>
 ServerName godstoria.com
 ServerAlias godstoria.com
 Redirect / http://www.godstoria.com/
</VirtualHost>

godstoria.com 으로 접속하면,  www.godsotira.com 으로 보냄.

도메인 상관없이 전체로 보내려면 

alias 를 * 로 하면 됨.


우선순위 적용 되므로,  상위에 리다이렉트를 걸면 하위 단에 는 적용안됨. 
물론 상단에 도메인 옵션을 걸어두었으면 해당 도메인만 적용됨.



Posted by Sumin Family
 * 이 포스트는 APMSETUP6를 기준으로 작성되었습니다.
 Apache 웹서버의 로그파일이 너무 많이 쌓여서 용량을 낭비한다고 생각하시는 분은 활용하시면 됩니다. 로그파일을 지우는 배치파일의 내용을 이 포스트에 작성하였습니다.

#1. 로그 파일 삭제 배치파일
 아파치의 로그파일은 아파치 웹서버가 중지된 상태에서만 삭제할 수 있습니다.
 아래의 예문은 error.log파일만 삭제하는 경우의 예입니다.
del/s E:\temp\apache\error.log
 예를 들어 log파일이 C:\APMSETUP\SERVER\APACHE\LOG폴더에 저장이 되고 삭제하고자 하는 로그파일(error.log, access.log)까지 모두 삭제하고자 하는 경우에는 배치파일의 내용이 아래와 같이 변경됩니다.
del/s c:\apmsetup\server\apache\log\*.log
 배치파일을 만드는 방법은 이미 블로그를 통하여 수차례 언급하였지만 코드박스 안의 내용을 메모장으로 옮긴 후 배치파일(filename.bat)와 같은 이름으로 저장하신 후 사용하시면 됩니다.

#2. 메모리 반환에 로그 파일 삭제 추가
 메모리 반환이 잘 되지 않으시는 분은 주기적으로 아파치를 재시작해주는 배치파일을 적용하여 사용하고 계실 것이라고 생각됩니다. 아파치 재시작 배치파일은 제 블로그에 작성되어 있습니다. 자세한 사항은 링크(http://jnstory.net/1129)를 참고하여 주시기 바랍니다.
 만약 아파치를 재시작하면서 로그파일도 함께 삭제되도록 배치파일을 만들고 싶으신 분은 아래의 내용으로 배치파일을 새로 만들어주시면 됩니다.
@ECHO OFF
NET STOP APM_APACHE2
del/s E:\temp\apache\*.log
NET START APM_APACHE2
 위의 파일은 아파치가 종료된 후 모든 로그파일(*.log)을 삭제하도록 한 다음 다시 아파치가 실행되도록 지정한 배치파일입니다. 역시나 #1에서 설명했던 것과 같이 배치 파일에 적용된 로그파일의 경로를 수정해주어야 한다는 사실을 잊지마시기 바랍니다. 배치파일을 만드는 방법은 위에 설명하였습니다.
Posted by Sumin Family
이 포스트에 첨부된 대역폭 제한모듈은 RWAPM에서 추출된 Windows Apache용 대역폭 제한모듈이며, 자세한 사용방법은 이 포스트를 참고하시기 바랍니다.

1. 모듈 다운로드
 필자가 첨부한 모듈을 Apache 폴더안의 Modules폴더안에 저장합니다.

2. httpd.conf 수정하기
 httpd.conf파일에 아래의 단락을 추가해주시면 셋팅작업은 모두 완료됩니다.
#대역폭 제한
LoadModule bw_module modules/mod_bw.so
<IfModule bw_module>
BandWidthModule On
ForceBandWidthModule On
LargeFileLimit * 10240  500000
</IfModule>
 위의 설정은 10240KB이상의 파일에 대해서 500KB의 대역폭으로 제한하는 명령이다.

만약 20MB의 파일에 대해서 1024KB(1MBps)의 대역폭으로 제한하려고 한다면 아래와 같이 바꾸어주면 된다.
#대역폭 제한
LoadModule bw_module modules/mod_bw.so
<IfModule bw_module>
BandWidthModule On
ForceBandWidthModule On
LargeFileLimit * 20480  1024000
</IfModule>
 나도 이 모듈을 사용한지 얼마되지 않아서 자세한 답변은 할 수 없지만, 이 부분은 확실하다.
LargeFileLimit(큰파일제한) *(모든파일) 20480(크기) 1024000(제한속도)
Posted by Sumin Family
PHP.INI 내용과 각 옵션의 기능(PHP4 기준) 


1. engine - PHP가 아파치 모듈로 설치 되었을 경우 특정 디렉토리에서만 스크립트가 동작하게 합니다. 
이것은 아파치 httpd.conf 파일에 아래 항목을 추가합니다. 


php_admin_flag engine on(PHP3의 경우 php3_engine on) 


2. short_open_tag - php tag 사용여부를 정합니다. XML과 같이 사용할 경우 이 부분은 on으로 
해야 합니다. 

3. asp_tags - ASP 태그의 사용 여부를 설정합니다. 

4. y2k_compliance - y2k 문제에 해당하는 브라우저를 위한 설정입니다. 

5. safe_mode - php를 안전 모드로 동작 하게끔 하는 설정입니다. 

safe_mode_exec_dir 지시자의 해당 디렉토리에 존재하는 실행 파일이 아닌 경우 실행 되지 않습니다. 
(root에 있는 파일만 참조하게 합니다.) 

6. safe_mode_exec_dir - 실행 프로그램이 있는 디렉토리 명을 적어 줍니다. 

"5번"참고 

7. max_execution_time - 스크립트 실행 시간을 초단위로 설정합니다. 

8. memory_limit - 스크립트 실행 때 메모리 사용을 설정합니다. 

9. error_reporting - 에러 출력을 설정합니다. 

에러의 종류 

1 - 일반적인 에러 출력(Normal function errors) 
2 - 일반적인 에러 출력(Normal warnings) 
4 - 문법적인 에러 출력(Parser errors) 
8 - 버그의 가능성이 있으며 무시할 수 있는 에러 출력(Notices) 

10. display_errors - 에러 상황을 html 양식으로 보여줍니다. 

11. log_errors - 여러 가지 에러를 로고 파일에 저장합니다. 

12. track_errors - $php_errormsg에 마지막의 에러나 경고 메시지를 저장합니다. 

13. warn_plus_overloading - 스크립트에서 문자열 결합사용 때 " . " 연산자를 사용하지만 만약 
" + "를 사용했을 경우 경고 메시지 출력 여부를 설정합니다. 

14. track_vars - GET, POST, COOKIE 등으로 전달된 변수 값을 각각의 $HTTP_GET_VARS , $HTTP_POST_VARS , 
$HTTP_COOKIE_VARS의 배열 변수로 자동 저장 여부를 설정합니다. 

15. magic_quotes_gpc - GET , POST , COOKIE 등으로 전달된 데이터에 ‘ " / 등의 문자가 존재할 경우 
자동으로 ()역슬래쉬를 붙일지 여부를 설정합니다. 이것은 각 문자를 스크립트와 구별 
해서 인식시키기 위해 필요한 부분입니다. 

16. magic_quotes_runtime - 외부 스크립트나 여타 소스로부터 돌아오는 데이터에 대해 ()역슬래쉬를 붙일지 
여부를 설정합니다. 

17. auto_prepend_file - INCLUDE와 비슷한 부분이고, 스크립트의 처음 부분에 포함될 파일명을 적어 줍니다. 

18. auto_append_file - "17번"과 같으며 마지막 부분에 포함될 파일명을 적어 줍니다. 

19. include_path - INCLUDE, REQUIRE 문의 파일 경로를 설정합니다. 

20. doc_root - 서버의 루트 디렉토리를 설정합니다. 안전 모드로 동작할 경우 해당 디렉토리를 벗어나 다른 
쪽으로 접근을 할 수 없습니다. 

21. user_dir - 서버의 계정을 가진 일반 유저에 PHP 스크립트의 사용을 허가할 수 있습니다. 

22. upload_tmp_dir - 파일이 업로드 될 디렉토리를 설정합니다. 기본적으로 /tmp 디렉토리로 업로드 됩니다. 

23. upload_max_filesize - 업로드 할 수 있는 최대 파일 크기를 설정합니다. 

24. SMTP - mail( ) 함수의 사용을 위해 현 서버의 DNS , IP를 적어줍니다. 

25. sendmail_from - 보내는 메일 주소를 설정할 수 있습니다. 

26. sendmail_path - sendmail 서버가 있는 위치를 적어 줍니다. 

27. debugger.host - 디버거로 사용하는 호스트 명을 적어 줍니다. 

28. debugger.port - 디버거로 사용하는 포트 번호를 적어 줍니다. 

29. debugger.enabled - 디버거의 사용 여부를 설정 합니다. 

30. session.save_handler - 세션과 해당 데이터를 저장하는 방식을 설정하는 부분입니다. 기본적으로 파일 방식 
입니다. 세션 항목은 이 책에 사용되는 회원제 부분에서 사용됩니다. 

31. session.save_path - 세션 전달 인수를 정의 하는 부분이며 디폴트인 파일 방식일 경우 해당 파일의 경로를 
적어 줍니다. 

32. session.name - 쿠키 이름으로 사용되어질 세션 이름을 설정합니다. 디폴트는 PHPSESSID입니다. 

33. session.auto_start - 세션 요청 시에 자동 모듈 생성 여부를 설정합니다. 

0 - off , 1 - on 

34. session.lifetime - 해당 세션이 유지 되는 시간을 설정 합니다. 
디폴트의 경우 0이며 사용자의 브라우저가 종료 될 때까지 유지됩니다. 

35. session.gc_probability - 해당 세션 값이 제거 될 경우 낭비 되는 시스템 메모리 자원을 반납하는 시점을 
설정합니다. 

36. session.gc_maxlifetime - 해당 세션의 시스템 메모리 자원 반납을 가질 수 있는 시간을 설정합니다.
Posted by Sumin Family

기본값
KeepAlive on
MaxKeepAliveRequests 100
KeepAliveTimeout 15
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>

변경한다.
KeepAlive on
MaxKeepAliveRequests 20
KeepAliveTimeout 5
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_winnt.c>
ThreadLimit 3000
ThreadsPerChild 3000
MaxRequestsPerChild 0
</IfModule>

ThreadLimit 는 1.x 버전의 MaxClients 와 같은 기능을 하는 것 같다.
ThreadLimit 의 기본값은 1920 이며 ThreadsPerChild 는 ThreadLimit 를 넘을 수 없다.

ThreadLimit 에 대한 설명은 아래 링크를 참조한다.
http://httpd.apache.org/docs/2.0/mod/mpm_common.html#threadlimit

Posted by Sumin Family
Windows용 아파치 설정하기 // 쓰레드 설정

Windows용 아파치는 다중쓰레드 방식을 사용하기때문에,
유닉스와 달리 요청마다 다른 프로세스를 사용하지 않는다.

대신 아파치 프로세스는 항상, 부모 프로세스와 요청을 처리하는 자식 프로세스, 2개이다.
자식 프로세스에 있는 여러 쓰레드들이 요청들을 처리한다. 

그래서 작업 관리자 -> 프로세스에 보시면

httpd.exe 가 두개 실행 되어 있습니다.

=====

WinNT MPM에서의 쓰레드 조절과 관련된 옵션 설정은

MaxRequestsPerChild / ThreadsPerChild

를 사용합니다.

httpd.conf 에서 설정 할 수 있으며

MaxRequestsPerChild: 유닉스와 같이, 자식 프로세스가 요청을 얼마만큼 처리하고 죽을지를 조정한다. 그러나 유닉스와 달리 프로세스가 한번에 한 요청만을 처리하지않고 한번에 모든 요청을 서비스하기때문에, 설정한다면 매우 큰 값을 설정하길 권한다. 권장하는 기본값 MaxRequestsPerChild 0을 사용하면 자식 프로세스는 죽지않고 영원히 요청을 서비스한다.

ThreadsPerChild: 이 지시어는 새로 추가되었다. 이 지시어는 서버가 사용할 쓰레드 개수를 지정한다. 이 값이 서버가 한번에 처리할 수 있는 최대 연결개수이기때문에, 사이트에 접속량이 많다면 충분히 큰 값을 설정해야 한다. 권장하는 기본값은 ThreadsPerChild 50이다.

이렇게 설정 합니다.

APMSETUP은 

ThreadsPerChild 250
MaxRequestsPerChild  0

으로 설정 되어 있습니다.

만약 사용자가 많다면
ThreadsPerChild 값을 증가 시켜 주시면 됩니다.

올바로 설정 되었다면

logs/error.log

파일에

[XXXXXXXXXXXXXXXXXXXXXXXX] [notice] Child XXXX: Starting 250 worker threads.
[XXXXXXXXXXXXXXXXXXXXXXXX] [notice] Child XXXX: Starting 300 worker threads.

형식으로 로그가 남게 됩니다.
Posted by Sumin Family

아파치 그룹에서 http 프로젝트에서 아파치 http 서버를 내려받을 수 있다. http://httpd.apache.org/download.cgi 접속하여 최신버전인 2.2.15 Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.15-win32-x86-no_ssl.msi 를 내려받자.





라이센스에 동의하고 다음.



아파치 서버에 관한 설명을 소개한다. 다음



아파치 서버를 설치할 서버의 네트워크 정보를 입력하는 곳이다.
운영서버라면 서버 정보를 입력하고 그렇지 않을 경우 위와 같이 입력하면 된다. 설정은 언제든지 변경할 수 있다.



설치 경로를 변경하기 위해 Custom 를 선택하고 다음.



시스템경로보다는 서브경로에 설치하는 것이 좋다. 다음.



설정을 마치고 설치를 진행한다. 완료되면 아파치 서버가 자동으로 실행되는 데. 설치전에 꼭 80포트를 사용하는 서비스가 있는 지 확인하고 진행하자. (있을 경우 서비스를 종료해주면 된다.)

아파치 서버 설정은 아래와 같다.
아파치 서버 설치 폴더 하위에 존재하는 conf 폴더를 열어 httpd.conf 파일 편집기로 열자.
(파일 첨부가 되지않아 설정파일은 다음에 등록하겠습니다.)

# 서비스 포트
Listen 80

# 웹서비스 경로
DocumentRoot "D:/Service/htdocs/"

# 웹서비스 디렉토리 설정 [# = 주석] 아래와 같이하면 웹에서 폴더및 파일리스트가 출력되지 않아 보안적으로 좋다.
<Directory />
#    Options FollowSymLinks
#    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

추가적은 자세한 설명은 http://blog.naver.com/o_zoom?Redirect=Log&logNo=90071595629 참조하자.

# 웹서비스 경로를 변경하면 아래도 같이 변경해야 한다.
<Directory "D:/Service/htdocs/whattoday">

# 기본 인덱스 파일 설정 스페이스로 구분하면 된다.
<IfModule dir_module>
    DirectoryIndex index.html index.php default.php
</IfModule>

이제 저장하고 아파치 서버를 재시작하면 모든 작업이 완료된다.

 PHP 5.3.2 설치하기

PHP 는 인스톨버전보다 압축된 파일이 용이하다. 윈도우버전은 기존 PHP 가 아닌 다른 호스트에서 내려받을 수 있다.
http://windows.php.net/download/ 접속하여 VC9 x86 Thread Safe 용 Zip를 내려받자.
적당한 위치에 압축을 풀고, 나는 D:/Server/php 압축을 풀어두었다.
D:/Server/php/tmp/session 과 D:/Server/php/tmp/upload 폴더를 생성하자.

PHP 경로를 환경변수에 등록해야 한다. 내컴퓨터(오른쪽마우스 클릭) -> 속성 -> 고급탭 -> 환경변수 실행한다.
그럼 새로운 창이 뜨면 시스템 변수 목록에 Path 항목을 선택하고 편집을 클릭하자.
줄 맨 뒷커서에 D:/Server/php/;D:/Server/php/ext; 삽입하고 확인을 누르고 속성창을 닫는 다.

설치는 완료되었고, PHP를 설정하고, 아파치 서버에 PHP 모듈을 올려보자.
PHP 폴더에 php.ini-development 혹은 php.ini-production 파일 중에 선택하여 php.ini 파일로 이름을 변경하고 편집기로 파일을 열자.
난 php.ini-production 파일을 사용하였다.
(파일 첨부가 되지않아 설정파일은 다음에 등록하겠습니다.)

# 코딩 스타일을 <?php ?> Off , <? ?> 둘다 쓰려면 On. 왠만하면 Off 가 안정적이지만, 코딩이 번거러울수 있다.
short_open_tag = Off

# ASP 와 같은 시작 구문으로 코딩하려면 On <% %>
asp_tags = Off

# 에러 출력여부 : 개발할 경우 On
display_errors = Off

# 시스템 전역변수 사용여부 On을 할 경우 $_GET['a'] $_POST['a'] 등을 $a 로 받을 수 있지만, 보안상이나 가독성이 떨어지므로 Off 를 권장
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off

# 파일 업로드 용량 늘리기
-- POST 전송 최대 사이즈
post_max_size = 8M
-- 파일 업로드 임시경로
upload_tmp_dir = "D:/Server/php/tmp/upload"
-- 파일 업로드 용량
upload_max_filesize = 20M
-- 파일 업로드 수
max_file_uploads = 20

# 언어 설정
default_charset = "utf-8"

# php 경로
include_path = ".;D:\Server\php"

# php 모듈 경로
extension_dir = "D:\Server\php\ext"

# 사용할 모듈은 주석을 삭제 [ ; = 주석]
-- mysql 모듈
extension=php_mysql.dll

# 세션 저장 경로
session.save_path = "D:/Server/php/tmp/session"

아파치 서버에 PHP 모듈 올리기. 아파치 서버 설정파일을 열고 아래의 코드를 삽입하자.

AddType application/x-httpd-php .php
AddType application/x-httpd-php-souce .phps
PHPIniDir "D:/Server/php/"
LoadModule php5_module "D:/Server/php/php5apache2_2.dll"
Posted by Sumin Family


티스토리 툴바