4. SULinux 2.0 웹서버(Apache) 설정 및 운영 - SULinux 2.0 공개강좌
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 20,006 조회
- 0 추천
- 목록
본문
4. SULinux 2.0 웹서버(Apache) 설정 및 운영
인터넷이 발전하면서 대부분의 서비스는 웹을 사용하게 되었습니다. SULinux는 현재 웹서버 중에서 가장 많이 사용하는 Apache 웹서버를 제공합니다. 다음 그림은 netcraft.com에서 발췌한 그림입니다.
위 그림에 의하면 66.65%가 Apache를 사용하는 것을 볼 수 있습니다. 이 처럼 전 세계적으로 웹서버인 Apache를 많이 사용하고, 또 안정성 및 성능 또한 입증을 받은 것입니다.
SULinux는 국내외 다양한 환경을 고려하여 다양한 버전의 Apache, PHP, MySQL을 연동 설치 할 수 있는 프로그램을 개발 하였고, 제공하고 있습니다. APM 연동 설치법은 APM_Install-tools 편을 참고 바랍니다.
1. SULinux의 APM 연동 구조
위 그림은 APM_Install-tools로 설치되는 APM의 연동 관계를 그림으로 나타낸 것입니다. Apache와 PHP의 연결 관계는 Apache의 DSO(Dynamic Shared Objects) 방식으로 연결됩니다. 이는 Apache프로그램이 동적으로 필요시 PHP모듈을 불러 사용하는 형태가 됩니다. Apache와 PHP가 분리되어 있기 때문에 PHP의 버전 및 기타 이유로 변경시 PHP만 다시 설치하는 것이 가능합니다.
PHP와 MySQL은 MySQL의 클라이언트 라이브러리를 PHP에서 불러 들어와 사용하는 형태입니다. PHP 컴파일 과정에서 MySQL의 클라이언트 라이브러리 파일을 사용한 PHP만의 클라이언트 라이브러리를 만들고 이를 이용하여 MySQL에 접속하게 됩니다. PHP 버전에 따라 mysqli 등 다양한 라이브러리를 지원하며, MySQL 서버와 연결하기 위해서는 tcp/ip 및 socket 을 사용하여 접속 할 수 있습니다. 기본적으로 tcp/ip에서는 TCP 3306 포트를 사용하며, socket은 /tmp/mysql.sock 파일을 이용하여 PHP에서 MySQL 서버에 접속 할 수 있습니다.
2. APM 동작 구조
위 그림은 APM 동작 구조를 그림으로 나타낸 것입니다. 클라이언트로부터 요청이 들어오면 웹서버인 Apache에서 요청되는 파일의 확장자를 분석합니다. SULinux는 “.php4 .php3 .php .htm .html .phtml .ph .inc .phps” 확장자를 가지는 파일은 PHP에 의해서 인터프리팅됩니다. phps 파일은 소스를 보여주는 용도로 사용됩니다. 만약 PHP소스에 DB 연결 함수가 사용되었다면, MySQL에 접속되는 구조로 되어 있습니다.
기타파일 jpg, gif, pdf, doc 등의 일반적인 파일은 Apache만으로 처리되며, PHP모듈을 사용하지 않습니다.
3. 웹서버 접속 및 확인
SULinux를 설치하고, APM_Install-tools를 사용하여 APM을 원하는 버전으로 설치하였다면, 바로 웹서비스를 할 수 있습니다.
* 웹서버 확인
위 그림은 SULinux에서 웹브라우저(Firefox)를 사용하여 “http://localhost"에 접속한 화면입니다. 위와 같이 나타나면 웹서버가 정상적으로 작동합니다.
* 웹페이지 작동 테스트
웹페이지의 정상 작동 여부를 확인하기 위하여 다음과 같은 소스코드를 작성하여 테스트 합니다.
1) 기본 Document Root 디렉토리 이동 및 웹페이지 작성
SULinux의 기본 Document Root는 /usr/local/apache/htdocs/입니다. 디렉토리 이동 후 sulinux.php 파일을 작성하여 보도록 하겠습니다.
sulinux.php
위 소스 코드는 php의 정보를 보여주는 함수인 phpinfo()를 사용하여 php 정보를 보여주는 프로그램입니다. 실행 결과는 다음 그림과 같습니다.
위 그림은 앞에서 작성한, sulinux.php 파일의 실행 결과입니다. 위 결과 확인으로 PHP 정상 작동을 확인 할 수 있습니다.
* 프로세스 확인 ( 시스템 모니터링 프로그램 이용 )
“시작” -> “시스템 도구” => “시스템 모니터링”
시스템 모니터링 도구 실행 후 “프로세스” 탭에서 httpd 프로세스가 떠 있는지 확인 합니다.
위 그림은 웹서버의 프로세스가 떠 있는지 확인하기 위해 “시스템 모니터링”프로그램을 이용하여 httpd 프로세스를 확인 한 결과입니다. 위와 같이 httpd 프로세스가 있으면, 웹서버가 작동중에 있습니다.
* 프로세스 확인 ( 명령어 창 )
대부분의 리눅스 시스템에서 프로세스를 확인하기 위해 콘솔 명령어를 많이 사용합니다.
위 결과는 “ps -ef | grep http" 명령어 조합으로 위 결과를 얻었습니다. 여러 프로세스를 확인 할 수 있습니다.
4. 웹서버 시작 및 종료
웹서버(Apache)는 SULinux 시작시 자동적으로 시작 됩니다. 하지만, 필요시 수동으로 실행 시켜야 한다면, 다음 방법을 사용하시기 바랍니다.
* 웹서버 시작
“시작” => “시스템” => “관리” => “서버 설정” => “서비스 설정”
위 그림은 “서비스 설정” 프로그램으로 웹서버를 시작하는 화면입니다. 웹서버 프로그램(httpd)을 선택하고 “”버튼을 눌러 시작하시기 바랍니다.
웹서버 시작이 완료되면 위 그림과 같이 성공했다는 창이 나타나게 됩니다.
* 콘솔창에서 시작하기
리눅스 시스템의 명령어를 이용하면 쉽게 웹서버를 시작 할 수 있습니다.
다음과 같은 명령어로 가능합니다.
위 그림은 "service httpd start"를 실행한 결과입니다. 동일한 명령어로 "/etc/rc.d/init.d/httpd start", "/usr/local/apache/bin/apachectl start"가 있으며 모두 동일한 결과를 가집니다.
* 웹서버 정지
웹서버를 정지하기 위해서는 “서비스 설정”에서 웹서버를 정지 시킬 수 있습니다.
위 그림의 “서비스 설정”에서 웹서버를 정지시킬 수 있습니다. 웹서버(httpd) 선택 후 "" 버튼을 누르면 정지 됩니다. 이렇게 중지 되더라도 시스템을 재시작하면 다시 웹서버가 자동 시작됩니다. 자동시작 되지 않게 하려면 “ √□ httpd" 에 ”□ httpd“ 이렇게 √표를 제거 하시기 바랍니다.
정상적으로 정지 되었다면, 다음 그림을 볼 수 있습니다.
* 콘솔 명령어를 통한 정지
위 그림은 콘솔 명령어를 이용하여 웹서비스를 정지한 그림입니다.
* 웹서버 재시작
웹서버의 설정을 변경한 경우 웹서버를 재 시작해야 합니다. 이럴 경우 정지 후 시작하여도 무관하지만, 정지 후 시작하게 되면 그만큼 웹서비스가 되지 않게 됩니다. 최소한의 다운타임을 위하여 “재시작”명령어를 제공합니다.
“서비스 설정” 에서
위 그림에서 “” 버튼을 누르게 되면 웹서버가 재 시작되며, 정상적으로 재시작 되었다면, 아래 그림과 같이 성공 메시지를 확인 할 수 있습니다.
* 콘솔창에서 웹서버 재 시작
위 명령어로 웹서버를 재 시작 할 수 있습니다.
5. 웹서버 설정 및 운영
SULinux를 사용하여 웹서비스를 운영하다 보면 여러 가지 요구사항이 발생하게 됩니다. 자주 발생하는 상황에 대해서 설정하는 방법을 설명하도록 하겠습니다.
1. 최대 접속수 늘리기
처음 설치시 아파치의 최대 접속 수는 150으로 되어 있습니다. SULinux는 기본적으로 튜닝되어 있으며 최대 4096개의 접속을 받을 수 있게 설치됩니다. 서버의 사양과 웹 프로그램의 무게를 고려하여 이 값을 적적히 조절하면, 서버를 100% 활용할 수 있습니다. 서버의 자원(메모리, CPU)은 많이 남았는데 프로세스가 항상 150이라면 이 값을 변경해 보시기 바랍니다.
방법 : 설정파일(httpd.conf)을 열어서 다음 사항을 수정 합니다.
위 설정 값(512)은 절대 적인 것이 아니며, 조금씩 올려가면서 자원 사용량을 측정하며 최적의 값을 찾으시기 바랍니다. 설정 값 변경 후 꼭 웹서버를 재시작하시기 바랍니다.
2. 동영상파일 막는 방법
웹호스팅을 하다보면, 가끔 동영상 파일이 있어 트래픽을 많이 유발하는 사용자가 있습니다. 이런 사용자가 동영상 파일을 서비스 하지 못하게 다음과 같이 설정 할 수 있습니다.
방법 : 설정파일(httpd.conf)을 열어서 다음 사항을 수정 합니다.
위 설정은 요청되는 파일을 조사하여 확장자가 “.wmv, asf, avi, mov"인 경우 동영상 파일으로 판단하고 차단하는 설정입니다. 만약 새로운 확장자를 추가하려면, 위 설정에 추가하시기 바랍니다. 요즘은 flv를 사용하는 경우가 있으니 참고 바랍니다. 반드시 설정파일 수정 후 아파치를 재시작합니다.
적용 확인 방법: access_log 및 error_log를 확인합니다.
error_log 내용 확인
위 내용은 서버설정에 의해서 클라이언트의 test.avi 파일요청을 거부한 로그입니다.
access_log 내용 확인
위 내용은 클라이언트가 test.avi를 요청했지만, 에러메시지(403:Forbidden)을 보냈다는 로그입니다.
3. 그림 파일 로그 남기지 않게 하는 방법
웹 로그를 남기면 유용한 정보를 많이 얻을 수 있습니다. 하지만, 접속자가 많은 웹사이트의 경우 아주 많이 쌓이게 됩니다. 32Bit Apache의 경우 2G를 넘어버리면, 로그는 더 이상 남지 않고 비정상적인 상황이 발생합니다. 필요하지 않은 그림파일에 관한 로그를 빼고 남길 수 있습니다.
방법 : 설정파일(httpd.conf)을 열어서 다음 사항을 수정 합니다.
위 설정은 클라이언트에서 요청하는 파일의 확장자가 “.gif, .png, .jpg, .js, .bmp, .jpeg, .swf"의 경우 이미지 파일로 인식하고 로그를 남기지 않습니다. 설정파일 수정 후 아파치를 재시작합니다.
가상호스트 별로 로그를 남겼다면, 각 CustomLog 부분의 마지막에 env=!IMAGE를 넣으면 이미지 관련 로그가 남지 않습니다.
4. 무단링크 막기
웹 사이트를 운영하다 보면, 겔러리, 게시판등에 그림파일을 올리고, 쇼핑몰이나, 카페에서 무단링크해서 사용하는 경우가 있습니다. 이런 경우 필요이상의 트래픽이 발생하여 많은 트래픽 비용을 지불해야 할 경우가 발생합니다. 이런 무단 링크를 제거하기 위해서는 다음과 같이 설정하면 가능합니다.
방법 : 설정파일(httpd.conf)을 열어서 다음 사항을 수정 합니다.
위 설정의 경우 어떤 요청이 있으면, 요청하기 전 페이지(Referer)의 도메인을 참조하여 같은 도메인일 경우 이미지 파일 허용하도록 설정합니다. 이미지 파일은 확장자가 “.gif, .jpg, .png, .GIF, .JPG, .PNG"인 경우로 설정하였습니다. 설정파일 변경 후 아파치를 재 시작하여야 설정 내역이 반영됩니다.
만약 무단 링크를 요청하면, error_log 및 access_log에 관련 로그가 남게 됩니다.
관련 로그는 “2. 동영상 파일 막는 방법”과 비슷한 403 에러를 남기게 됩니다.
5. 웹페이지 인증 설정
관리자 페이지의 경우, 모든 페이지 및 하위 모든 페이지에 인증을 걸어야 합니다. 이렇게 작성하기에는 웹프로그램을 수정하여 인증 부분을 넣어야 하지만 이런 경우 코딩양이 상당히 많아집니다. 그리고 프로그램 적용이 불가능한 문서파일 및 html 파일의 경우는 어쩔 방법이 없습니다. 이런 경우에는 웹서버(아파치)에서 인증을 걸어줍니다.
방법 : 인증을 걸어줄 디렉토리에 파일(.htaccess)을 생성합니다.
예) /home/sulinux/www/admin/.htaccess
위와 같은 내용으로 파일을 생성합니다. 위 내용에서 “표시내용” 및 “패스워드 파일 위치”를 사용환경 및 용도에 맞게 변경하시기 바랍니다.
다음으로 계정 및 비밀번호 파일인 .htpasswd 파일을 생성합니다. 패스워드 파일의 위치는 웹에서 접근불가능 곳에 위치시킵니다.
예) /home/sulinux/.htpasswd
위 명령어로 인증에 사용될 계정을 생성합니다. “아이디” 부분에 적당한 아이디를 넣으시기 바랍니다.
마지막으로 아파치에서 인증을 처리할 수 있게 설정파일(httpd.conf)을 편집합니다.
위에서 설정한 디렉토리 이하에서는 .htaccess 파일이 있으면, 읽어 드리게 됩니다. 만약 위 설정이 되어 있지 않으면 .htaccess 파일을 생성하더라도 인증창이 뜨지 않습니다.
이렇게 설정한 다음, 아파치를 재 시작합니다.
위 그림은 웹서버 인증을 설정하고 웹브라우저에서 접속한 화면입니다. 생성한 계정 및 비밀번호를 입력하시면 정상 접근이 가능합니다.
6. FlashGet 등으로 홈페이지 긁어 가는 것 막기
사이트에 유용한 정보를 올려두면, 모든 내용을 FlashGet등의 프로그램을 가지고 모두 긁어가는 사람이 있습니다. 모두 긁어가는 것을 막기 위해 다음과 같이 설정합니다.
방법 : 설정파일(httpd.conf)을 열어서 다음 사항을 수정 합니다.
위와 같이 설정하고 아파치를 재 시작합니다.
요즘은 다양한 방법으로 긁어가니, 위 방법이 100% 막지는 못하며, 사용되는 응용프로그램들을 알아서 위의 형식으로 추가하시기 바랍니다.
7. 로그 로테이트 방법
자꾸만 쌓여가는 로그를 효율적으로 관리하기 위해 그림파일을 제외하고 로그를 남기는 방법을 설명했었습니다. 그렇게 설정을 하면 늘어나는 로그의 양이 줄어들기는 하지만, 시간이 지나면 많아지는 것은 막을 방법이 없습니다.
로그 파일을 효율적으로 보관, 관리하기 위해 특정 시간이 지났을 때 오래된 로그 파일은 보관하고 새로운 로그 파일을 생성 시켜 로그를 남기며, 특정 기간 또는 개수 이상된 로그파일은 삭제 하도록 설정할 수 있습니다.
방법1. 쉘프로그램 활용
원하는 방법으로 로그를 로테이트 시키기 위해 다음과 같은 쉘 스크립트를 이용할 수 있습니다. 다음 쉘 스크립트 파일을 작성합니다.
/root/weblog_rotate.sh
크론탭에 등록합니다.
crontab - e
크론 편집모드로 진입하고 아래 내용을 붙여 넣습니다.
위와 같은 방법으로 작성해 두면, 매일 0시 0분에 작동하여 지난 로그를 자동으로 날짜를 붙여 보관하며, 공간 확보를 위해 압축을 하게 됩니다. 로그 확인시 zcat등의 명령어로 확인하면 쉽게 확인 할 수 있습니다.
방법2. rotatelogs 프로그램 활용
아파치에서 제공해 주는 기본 프로그램(rotatelogs)를 사용합니다.
위 설정은 하루(86400초)마다 로그를 로테이트 하게 됩니다. 로그를 분산하기 위해 별도의 프로그램을 사용하며, 항상 프로세스가 떠 있습니다. 남겨지는 파일을 보고 로그 날짜를 확인하는 것이 어렵다는 단점이 있습니다.
방법3. logrotate(로그로테이터) 이용
리눅스 시스템의 로그를 효율적으로 관리하기 위한 logrotate를 이용하여 웹로그를 효율적으로 보관 할 수 있습니다. 다음 파일을 생성합니다.
/etc/logrotate.d/http
위와 같이 작성하면 매일 로그를 로테이트 하며, 지난 로그는 30개를 보관합니다. 로그 파일의 크기가 100M이상 일 때도 로그를 로테이트 하게 됩니다. 오래된 로그는 자동으로 삭제된다는 장점은 있지만, 남겨지는 로그의 날짜와 파일명의 연관성이 없어 날짜별 로그 찾기가 힘든 단점이 있습니다.
이 처럼 로그를 효율적으로 관리하는 방법은 여러 가지 있습니다. 적당한 방법을 선택하여 사용하시기 바랍니다.
8. 업로드 용량 늘리기 (예) 100M)
웹서비스를 할 때 파일을 업로드 하는 일은 아주 많이 있습니다. PHP를 이용하여 웹페이지를 작성하였다면, PHP는 기본 파일을 2M까지만 업로드 할 수 있도록 설정 되어 있습니다. 2M 보다 큰 파일을 업로드 하기 위해서는 다음과 같이 설정하시기 바랍니다.
방법 : PHP설정파일(php.ini)을 열어 다음 항목을 찾아 수정합니다.
( 업로드 용량을 100M로 설정하는 예제입니다.)
위 설정에서 600은 600초 즉, 10분이며, 10분 동안 100M를 올릴 수 있는 환경(회선)이어야 한다는 것입니다. 위와 같이 설정한 다음 아파치를 재 시작합니다. PHP 설정파일 이지만, 웹에서 적용을 하기 위해서는 아파치 웹서버를 재시작 합니다.
9. 가상호스트 생성
요즘은 서버 한 대에 하나의 도메인만을 셋팅해서 사용하는 분들은 거의 없다고 생각합니다. 아파치의 가상호스트 기능을 사용해서 많은 도메인을 하나의 서버에서 사용할 것입니다. 도메인이 추가 삭제 될 때마다 httpd.conf 파일을 건드려야 하고, 실수가 있을 수도 있습니다. 간단하게 이 설정을 해주는 프로그램이 있습니다. su_vhost는 ssu 패키지의 일부입니다. SULinux는 기본적으로 ssu패키지를 지원합니다. 다음과 같은 방법으로 원하는 작업을 쉽고 편하게 할 수 있습니다.
su_vhost는 Apache 1.3.X , Apache 2.0.X, Apache 2.2.X 모든 버전을 지원합니다. Apache 1.3.X와 Apache 2.0.X는 httpd.conf 파일에 가상 호스트 값을 설정하고, Apache 2.2.X는 extra/httpd-vhost.conf 파일에 가상호스트 설정을 추가하게 됩니다.
su_vhost는 설정후 자동으로 아파치 웹서버를 재시작하게 됩니다.
1) 가상 도메인 추가
예) sulinux.net 도메인 추가
이렇게 하면 /hom/sulinux/www를 가상WebRoot로 하고, sulinux.net 및 www.sulinux.net 에 대한 가상호스트 설정이 완료됩니다.
설정된 내역은 다음과 같이 확인 할 수 있습니다.
위 설정과 같이 www.sulinux.net까지 설정된 것을 볼 수 있습니다. 그리고, ErrorLog 및 CustomLog를 사용자가 쉽게 설정할 수 있도록 추천 설정이 나오고 “#”으로 주석처리 되어 있습니다.
2) 가상 호스트 도메인 정보 변경
가상 호스트 도메인 정보 변경은 단순히 설정파일을 열어 설정파일을 편집 할 수 있게 합니다.
3) 가상 도메인 삭제
입력한 도메인과 관련된 가상 호스트 설정을 삭제 할 수 있게 도와줍니다.
예) sulinux.net 도메인 삭제
위와 같이 입력하면, httpd.conf 파일을 열어서 관련 도메인이 위치한 곳을 찾아 주며, dd 라는 키로 지우고, ESC ,:wq로 저장하고 나오면 끝납니다.(vi 편집기 필수기능은 숙지하시기 바랍니다.)
4) 도메인 포워딩
아파치 웹서버의 Redirect 기능을 이용하여 도메인을 포워딩 할 수 있습니다. 여러 개의 도메인을 다른 도메인을 포워딩 할 수 있는 강력한 기능을 제공합니다.
예) sulinux관련 도메인 sulinux.net 도메인 으로 포워딩 예제
위와 같은 명령을 내리면, www.sulinux.kr, sulinux.kr, sulinux.co.kr, www.sulinux.co.kr, sulinux.com, www.sulinux.com, 모두 www.sulinux.net 도메인으로 포워딩 됩니다.
설정된 내역은 다음과 같이 확인 할 수 있습니다.
위 설정은 ServerName으로 설정된 도메인과 ServerAlias로 설정된 도메인 모두 Redirect 지시자를 이용해 www.sulinux.net으로 포워딩 하는 설정입니다.
6. 보안서버(SSL) 구축
인터넷상의 대부분의 정보는 TEXT기반으로 전송됩니다. 원격 접속을 위해 사용하는 telnet, 파일전송을 위해 사용하는 FTP, 메일을 주고받기 위해 사용하는 SMTP 및 POP3 모두 TEXT기반으로 정보가 전송됩니다. 우리가 흔히 사용하는 웹의 프로토콜인 HTTP 또한 마찬가지입니다. 이 TEXT기반으로 전송되는 정보는 네트워크 장비 및 컴퓨터에서 스푸핑 하므로 정보를 쉽게 판독할 수 있습니다.
이러한 이유로 시스템 관리에서 사용하는 telnet은 ssh를 주로 사용합니다. 파일 전송을 위해 사용하는 FTP 또한 SFTP를 많이 사용하고 FTP 클라이언트 프로그램에서도 호환을 가지게 되었습니다. 메일을 주고받기 위해 사용되는 SMTP 및 POP3는 SMTPS 및 POP3S로 변경되고 있습니다.
우리가 흔히 사용하는 웹은 그 활용도가 더욱더 많아져 생활의 일부인 쇼핑, 뱅킹, 경매, 증권, 기업간 전자상거래, 전자지불 등의 중요한 정보(신용카드번호, 신상정보 등 중요한 개인 정보)가 전달되는 일에서도 웹을 사용하고 있습니다. 앞에서 언급하였듯 웹은 TEXT기반으로 정보가 전송되기 때문에 정보 전송과정에서 제 3자에게 유출될 위험이 있습니다. 이 문제점을 SSL(Secure Sockets Layer) 기술을 통해 해결될 수 있습니다. SSL 기술에 의해 암호화 처리가 된 문서는 정보를 보내는 사람(고객)과 정보를 받는 사람(서버) 외에는 해독할 수 없습니다. 따라서 전송되는 도중에 가로챈다고 해도 정보의 내용을 절대로 알 수 없으며 정보를 암호 화하는 패스워드와 복호화하는(암호를 푸는) 패스워드도 각각 다르기 때문에 정보유출의 가능성은 그만큼 더 적어지게 되었습니다.
웹 서비스에서 사용하는 HTTP 프로토콜에 SSL을 적용한 HTTPS 프로토콜을 사용하게 됩니다. HTTPS를 사용하여 안전한 웹서비스 환경을 구축 할 수 있습니다.
SULinux에 설치된 Apache 웹서버는 HTTPS를 지원합니다. (단, Apache 1.3.X는 지원하지 않음)
1. SSL 적용 시 Apache 동작 구조
위 그림은 웹서버에서 HTTP와 HTTPS 처리 구조를 나타낸 그림입니다. 기본적으로 HTTP는 TCP 80포트를 사용합니다. HTTPS는 TCP 443을 기본적으로 사용합니다. SSL기능을 사용하게 되면, 웹서버는 2개의 포트를 열게 됩니다. HTTP와 HTTPS는 다른 통로로 웹서버에 접속하지만, 내부적으로는 기존의 내용, PHP 프로그램을 동일하게 사용 할 수 있습니다.
2. 키 쌍 생성
먼저 키를 보관할 위치를 정합니다. 대부분은 다음 아파치 웹서버의 설정파일 디렉토리에 위치 시키며, conf 디렉토리는 일반 사용자가 접근하지 못하도록 700 권한을 가지는 것이 좋습니다.
키 보관 위치 : /usr/local/apache/conf
키 보관 위치로 이동하여 다음 명령어로 키쌍을 생성합니다.
서버키 알고리즘은 RSA를 사용하고, 1024bit 키를 생성합니다. 여기서 입력하는 비밀번호 (pass phrase)는 꼭 기억해 두시기 바랍니다. 웹서버 시작시 꼭! 필요 합니다.
3. CSR(Certificate Signing Request) 생성
키를 생성하였다면, 다음은 인증서에 사인을 요청하는 CSR을 생성해야 합니다. CSR을 생성하기 위해서는 여러 정보가 입력되어야 합니다. 다음 정보가 필요합니다.
가장 중요한 것은 도메인 명입니다. 입력한 도메인 주소에서만 사용할 수 있는 인증서가 됩니다. 예를 들어 sulinux.net 과 www.sulinux.net은 인증서 생성시 다른 도메인이므로 www를 붙여 사용할 것인지 붙이지 않을 것인지 선택하셔야 합니다.
다음 명령어로 CSR을 생성합니다. 입력하는 정보는 꼭 영어로 하시기 바랍니다.
extra 부분은 입력하지 않으셔도 무관합니다.
생성된 CSR은 다음과 같은 내용을 가집니다.
생성된 CSR은 인증서 발급 업체에 신청 후 인증서를 받습니다. 인증서 발급 업체는 아주 많은 곳이 있으며, 보상 수준에 따라 가격차이가 많이 납니다. 인증서 발급 업체에서 인증서 파일인 CRT파일을 받습니다. 발급 받은 CRT파일은 키 보관 경로(conf)에 복사합니다.
4. 아파치 SSL 설정
키(key) 파일과, 인증서(crt) 파일이 준비되었다면, 웹서버인 아피치 설정을 합니다. 먼저 아파치 설정파일(httpd.conf)을 확인 합니다.
위와 같이 설정되어 있다면, 주석을 의미하는 “#”을 제거합니다.
다음으로 SSL 설정파일을 편집합니다. SSL 설정파일은 Apache 버전에 따라 다른 위치를 가집니다. Apache 2.0.X는 conf/ssl.conf , Apache 2.2.X는 conf/extra/httpd-ssl.conf 에 위치합니다.
SSL 설정도 가상 호스트 형태로 되어 있으며, 다음 사항을 수정 합니다.
위 설정 부분을 도메인 및 가상WebRott, key파일, 인증서 파일의 경로를 설정합니다.
다음은 www.sulinux.net을 설정한 예제입니다.
설정파일 수정 후 웹서버를 정지 후 시작합니다.
( SSL 적용시 꼭 stop 후 start 해야 합니다.)
SSL을 적용하고 아파치 웹서버를 시작하는 방법은 아파치 버전에 따라 다릅니다.
Apache 2.0.X는 apachectl startssl 으로
Apache 2.2.X는 기존 시작 방법과 동일하게 사용하시기 바랍니다.
다음은 Apache 2.2.X의 경우 시작한 결과입니다.
SSL을 적용하면, 웹서버 시작 시 SSL 비밀번호(pass phrase)를 물어 보게 됩니다.
비밀번호를 입력하여야 정상적으로 웹서버가 시작됩니다.
* 비밀번호를 알지 못하면 웹서버 시작이 되지 않으니 주의하시기 바랍니다.
7. 기타 웹서버의 추가 기능
웹서버를 운영하다보면 여러 가지 요구 사항이 있습니다. 아파치는 다양한 모듈이 포함되어 있고, 다양한 사용자 모듈을 사용할 수 있습니다. 자주 사용되는 모듈 2개를 소개합니다. 이 모듈은 아파치 웹서버에 추가 설치해야 하며, 설치 및 운영 강좌는 SULinux 사이트를 참조해 주시기 바랍니다.
1. 사용자 트래픽 측정 및 제한 모듈 (mod_cband)
가상호스트 및 사용자별 트래픽 측정 및 제한을 할 수 있는 모듈입니다. 이 트래픽 제한 기능은 호스팅을 하기위해서는 필수입니다. 어떤 도메인에서 많은 트래픽을 사용하는지 아는 것은 아주 중요한 일이기 때문입니다.
[주의] cband는 apache 2 모듈입니다. apache 1.3.XX용이 아니며 1.3.XX는 mod_throttle을 사용하시기 바랍니다.
위 그림은 mod_cband를 사용하여 가상호스트 상태를 확인 한 페이지입니다. 위와 같이 일 트래픽을 확인 할 수 있으며, 여러 가지 정보를 한 눈에 확인 할 수 있습니다. 설정파일을 통하여 제한을 할 수 있습니다.
또 하나의 기능은 가상호스트 및 사용자별 사용하는 트래픽을 xml형태로 제공하여 데이터를 아주 쉽게 재사용할 수 있습니다.
위 내용은 xml 형태로 출력한 트래픽 사용 사항입니다. 위 내용을 파싱(parsing)하여 사용자에게 트래픽 사용량을 제공하는 등의 페이지를 쉽게 만들 수 있습니다.
주요 기능은 다음과 같습니다.
* Apache2용 가벼운 트래픽제한 모듈 * 사용자별 대역폭제한 및 모니터링 기능 * 가상호스트별 대역폭제한 및 모니터링 기능 * 목적지별 대역폭제한 및 모니터링 기능 * 제한기능: o 모든사용자 대역폭 제한 o 다운로드 속도 제한 o 초당요청수 제한 o 아이피대역별 제한 * 제한결과 웹을 통한 확인 (/cband-status, XML 형태 : /cband-status?xml) * 각 사용자별 제한 결과 확인(/cband-status-me)
2. 콘텐츠 압축 모듈 (mod_deflate)
웹서버에서 제공하는 정보는 여러 가지 형태입니다. 최근에는 멀티미디어 콘텐츠가 많으나 TEXT 형태의 콘텐츠도 많은 비중을 차지합니다. TEXT형태의 정보는 압축되지 않은 형태로 전송되며 이는 많은 트래픽을 사용합니다. 이 압축되지 않은 TEXT 콘텐츠를 압축하여 전송하기 위한 모듈이 있습니다. mod_deflate는 모든 콘텐츠를 압축하여 전송할 수 있는 모듈입니다.
[주의] mod_deflate는 아파치 1.3.XX대의 mod_gzip이 변형된 모듈입니다. 만약 아파치 1.3.XX를 사용한다면, mod_gzip을 사용해 보시기 바랍니다.
mod_deflate를 사용하여 TEXT콘텐츠를 압축하게 되면, 약 70% 이상의 압축되며, 그 만큼 트래픽을 절약 할 수 있습니다. 압축되어 전달된 정보는 웹브라우저에 의해서 압축해제 되고 콘텐츠가가 보여 지게 됩니다. 대부분의 웹브라우저는 이러한 기능을 제공합니다. 하지만, 오래된 웹브라우저의 경우는 제공되지 않으며 오래된 브라우저는 압축해서 정보를 전송하지 않게 설정하면 됩니다. 어떤 형태의 파일들은 압축을 하게 되면 ,CPU에 부하만 줄 뿐 압축률이 1%도 안 되는 파일이 있습니다. 예를 들면, jpg, gif등의 이미지 파일, pdf등의 압축된 문서 파일, zip 등의 압축파일이 그런 것입니다. 이런 파일들은 이미 압축이 되어 있기 때문에 다시 압축한다고 해도 효율이 좋지 못합니다. 이런 파일을 제외 하고 HTML, TXT, PHP등의 파일에만 mod_deflate를 제공하면 효율적으로 트래픽을 절약 할 수 있습니다.
본 강좌는 SULinux 2.0 GUI “사용설명서”를 참조하였습니다. 본 강좌의 개선점이나, 오타등이 있으면 service@linux.kr으로 알려주시기 바라며, 그 밖의 질문은 sulinux.net으로 해 주시기 바랍니다. 2010년 1월에 연구소장 에스유.
관련자료
-
이전
-
다음