[{TableOfContents}]


!!!Apache Install
*[리눅스(fedora, centos)에 아파치 컴파일 설치 방법|Apache_Install_Linux]
*[리눅스(fedora, centos)에 아파치로그 분석 Awstats 설치 방법|Awstats_Install_Linux]


!!!Apache 참고 URL
{{{
prechild에대한 설명
http://httpd.apache.org/docs/2.0/mod/perchild.html
http://uzoogom.textcube.com/146

아파치2 mpm에 대한 설명
http://blog.naver.com/jacktwo/100060150128
http://susukang98.springnote.com/pages/983798

아파치 dso, static 방식의 설명
http://blog.blueweb.co.kr/119
http://ti.kangjang.net/13
http://www.koreaidc.com/bbs/set_view.php?b_name=idcpds&w_no=94&page=1

아파치 원격 로그 서버 구축
http://www.koreaidc.com/bbs/set_view.php?b_name=idcpds&w_no=91&page=1

아파치 성능 테스트
http://profiles.kr/tag/apache

아파치 subversion연동에대한 설명
http://www.onurmark.co.kr/134
}}}
!!! 아파치 보안
{{{
httpd.conf 에 설정

ServerSignature Off
ServerTokens ProductOnly
}}}

!!!아파치 폴더와 파일 퍼미션 설정
*디렉토리 퍼미션 : 755
*디렉토리 퍼미션 일괄 적용(하위폴더 포함)
{{{
find . -type d -exec chmod 755 {} \;
}}}
*파일의 퍼미션 : 644
*파일 퍼미션 일괄 적용(하위폴더 포함)
{{{
find . -type f -exec chmod 644 {} \;
}}}

!!!apache ssl설정

! SSL 참고 사이트 
* [http://kldp.org/HOWTO/html/SSL-RedHat-HOWTO/ssl-redhat-howto-1.html]
* [한국 정보 보호 진흥원|http://www.kisa.or.kr]
* [http://www.lisia21.net/~hoya/study/linux/apache_ssl.html]
* [http://www.anycert.co.kr/support/4_1ssl_install_cer01_2.html]

! mod_ssl 설치
 * 컴파일설치시 옵션
{{{
--enable-ssl --with-ssl=/usr/local/ssl
}}}
 * apxs를 이용한 모듈 추가
{{{
/usr/local/apache2/bin/apxs -i -a -c 아파치소스폴더/modules/ssl/mod_deflate.c    
}}}

! key 파일 생성
{{{
openssl genrsa 1024 > xxx.co.kr.key
}}}

! csr 코드 생성
{{{
openssl req -new -key xxx.co.kr.key -out xxx.co.kr.csr

Country(국가 코드) : KR
State/Province(시/도의 전체 이름 : Seoul
Locality(시,구,군 등의 이름) : Sechou
Organization(회사이름) : xxxxxxxx
Organization Unit(부서명) : xxxxxx
Common Name (host name + domain name) : www.xxx.co.kr
Email Address (이메일):admin@linkbp.com

A challenge password (비밀번호) : xxxx
An optional company name [] : 넘어감
}}}

! crt 파일 생성
{{{
원래는 인증기관에 요청하여 ca 인증을 해야 한다.

인증기관을 이용하지 않는다면 openssl을 이용하여 직접 인증을 하면 된다.  (self-signed)

openssl x509 -req -days 365 -in xxx.co.kr.csr -signkey xxx.co.kr.key -out xxx.co.kr.crt

self 인증을 한경우 브라우져에서 사용자에게 인증서를 묻게 된다.
}}}

! 아파치 설정
{{{
mkdir /usr/local/apache2/certificate
mv xxx.co.kr.csr xxx.co.kr.key xxx.co.kr.crt /usr/local/apache2/certificate
cd /usr/local/apache2/certificate

vi /usr/local/apache2/conf/ssl.conf
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<VirtualHost *:80>
    ServerAdmin admin@xxx.co.kr
    DocumentRoot /home/xxx.co.kr/www
    ServerName xxx.co.kr
    ErrorLog logs/xxx.co.kr-error_log
    CustomLog logs/xxx.co.kr-access_log common

    SSLCertificateFile /usr/local/apache2/certificate/xxx.co.kr.crt

    SSLCertificateKeyFile /usr/local/apache2/certificate/xxx.co.kr.key

    기본설정은 건들이지 않는다.
    ....
</VirtualHost>


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

환경설정 확인
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl stopssl
/usr/local/apache2/bin/apachectl startssl
}}}

! 80번 포트로 접속시 443으로 넘기는 설정
{{{
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
}}}

! 실행파일 변경
{{{
start 명령어 실행시 $HTTPD -k start -DSSL 명령어가 실행되도록변경
/etc/init.d/httpd
/usr/local/apache2/bin/apachectl
}}}
!!!apache 압축
!설치
 * 컴파일설치시 옵션
{{{
--enable-deflate  --enable-headers 
}}}
 * apxs를 이용한 모듈 추가
{{{
/usr/local/apache2/bin/apxs -i -a -c 아파치소스폴더/modules/filters/mod_deflate.c    
/usr/local/apache2/bin/apxs -i -a -c 아파치소스폴더/modules/metadata/mod_headers.c
}}}

!환경 설정
{{{
http://httpd.apache.org/docs/2.2/ko/mod/mod_deflate.html 사이트 참고

    AddOutputFilterByType DEFLATE text/html text/plain text/xml

    # 필터를 추가한다
    SetOutputFilter DEFLATE

    # Netscape 4.x에 문제가 있다...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08에 더 문제가 있다
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE은 Netscape라고 자신을 알리지만, 문제가 없다
    # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # 주의: 아파치 2.0.48까지 mod_setenvif의 버그때문에
    # 위의 정규표현식은 동작하지 않는다. 원하는 효과를
    # 얻기위해 다음과 같이 수정하여 사용한다:
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    # 이미지를 압축하지 않는다
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # 프록시가 잘못된 내용을 전달하지않도록 한다
    Header append Vary User-Agent env=!dont-vary
}}}