OpenSSL Installation with PHP, Apache, ...

31367 
Created at 2006-09-29 07:01:09 
222   0   0   0  
Apache + PHP + Zend Optimizer + MySQL + openssl + mod_ssl mini HOWTO
김 동민
dmkim@scai.snu.ac.kr

Revision History
Revision v0.1 2001년 3월 25일  



본 문서는 가장 널리 쓰이는 웹서버인 아파치에서 PHP, php optimizer인 Zend Optimizer, MySQL 데이타 베이스 서버를 설치하고, ssl protocol을 지원할 수 있도록 mod_ssl을 설치하는 간단한 방법을 소개한다. 이 글은 kldp에 있는 백명훈님의 'MySQL + Apache + PHP4 + IMAP + Zend Optimizer 설치하기' 를 기본으로 하고 있다.



--------------------------------------------------------------------------------

준비물
설치를 시작하기전에 각 패키지들을 다운로드 받도록 하자. 여러 형태의 패키지가 존재하지만, 기본적으로 타르볼을 받아 직접 컴파일 하도록 하자. 이렇게 하는 특별한 이유는 없다. 그냥 재미있으니까...^^; 설치 플랫폼은 인텔 계열 linux를 가정한다.

다음의 패키지들을 다운 받도록 한다. 이들은 이글이 쓰여질 당시까지 최신 버전들이다.



Apache - apache_1.3.19.tar.gz ( http://httpd.apache.org/dist/)

PHP - php-4.0.4pl1.tar.gz ( http://www.php.net/downloads.php)

Zend Optimizer - ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz ( http://www.zend.com/download.php)

MySQL - mysql-3.23.35.tar.gz ( http://www.mysql.com/downloads/mysql-3.23.html)

OpenSSL - openssl-0.9.6.tar.gz ( http://www.ssl.org/source/)

mod_ssl - mod_ssl-2.8.1-1.3.19.tar.gz ( http://www.modssl.org/source/)



--------------------------------------------------------------------------------
설치하기
설치에는 약간의 순서가 필요하다. 이는 각 패키지들이 전적으로 독립된 것이 아니라 약간의 의존성을 가지고 있기 때문이다. 우리는 다음 순서를 따라서 설치하도록 하자.

MySQL 설치 --> OpenSSl 설치 --> mod_ssl 설정 --> Apache 설정 --> PHP4 설치 --> Apache 설치 --> Zend Optimizer 설치

먼저 각 소스들을 받아놓은 디렉토리로 이동해서 압축을 풀어놓도록 하자. 여기서는 /usr/local/src에서 작업하는 것으로 가정한다.

gzip -dc mysql-3.2.32.tar.gz | tar xvf -
gzip -dc openssl-0.9.6.tar.gz | tar xvf -
gzip -dc mod_ssl-2.8.1-1.3.19.tar.gz | tar xvf -
gzip -dc apache_1.3.19.tar.gz | tar xvf -
gzip -dc php-4.0.4pl1.tar.gz | tar xvf -
gzip -dc ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz | tar xvf -

MySQL 설치
먼저 MySQL의 소스 디렉토리로 이동하고, 컴파일 후 설치한다.

[root@localhost src]# cd mysql-3.23.32
[root@localhost mysql-3.23.32]# ./configure --prefix=/usr/local/mysql
> --with-charset=euc_kr
   .
   .
   .
[root@localhost src]# make; make install
MySQL이 이상없이 설치되면, MySQL의 기본 테이블을 생성시킨다.
[root@localhost mysql-3.23.32]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysql_install_db
MySQL 시동 스크립트를 약간 편집한다.
/usr/local/mysql/share/mysql/mysql.server에서
'$bindir/safe_mysqld...'으로
시작되는 부분을 찾아서 '--language=korean'을 추가한다.
mysql.server에 실행 퍼미션을 주고, 실행가능한 경로에 복사한다. 여기서는, /usr/local/bin으로 하겠다.
[root@localhost mysql]# cp ./mysql.server /usr/local/bin
[root@localhost mysql]# chmod 755 /usr/local/bin/mysql.server
이제 MySQL의 설치가 완료되었다.

OpenSSl 설치
apache의 mod_ssl을 설치하기 전에 OpenSSl library를 설치할 필요가 있다. 단, 여기서는 이 패키지를 완전히 설치하지는 않고, mod_ssl이 사용할 수 있도록 해 놓는 정도로만 한다.

OpenSSl의 소스 디렉토리로 이동해서 컴파일 해 놓는다.

[root@localhost src]# cd openssl-0.9.6
[root@localhost openssl-0.9.6]# ./config
[root@localhost openssl-0.9.6]# make
  .
  .
  .
이상없이 컴파일되면, 그대로 두고 다음 단계로 넘어한다.

mod_ssl 설정
이 단계에서는 특별히 컴파일하는 과정이 있지 않다. mod_ssl의 소스를 apache의 소스트리에 적용시키기만 하면 된다. 한가지 주의할 점은 '--with-apache', '--with-openssl' 옵션은 각 소스의 위치라는 점이다.

[root@localhost src]# cd mod_ssl-2.8.1-1.3.19
[root@localhost mod_ssl-2.8.1-1.3.19]# ./configure
> --with-apache=/usr/local/src/apache_1.3.19
> --with-openssl=/usr/local/src/openssl-0.9.6
   .
   .
   .
약간의 환영 메시지가 뜰 것인데, 특별한 이상이 없다면 성공적인 셈이다.

Apache 설정
본격적으로 apache를 설치하기 전에 configure 스크립트를 한번 실행시킬 필요가 있다. 이는 PHP의 configure에 필요하기 때문이다. 여기서는 apache를 /usr/local/apache 에 설치한다고 가정하자.

[root@localhost src]# cd apache_1.3.19
[root@localhost apache_1.3.19]# ./configure --prefix=/usr/local/apache
   .
   .
   .

PHP4 설치
이제 PHP의 소스 디렉토리로 이동해서 컴파일하고 설치해보자.

[root@localhost src]# cd php-4.0pl1
[root@localhost php-4.0pl1]# ./configure
> --with-config-file-path=/usr/local/apache/conf
> --disable-debug
> --with-mysql=/usr/local/mysql
> --with-apache=/usr/local/src/apache_1.3.19
> --enable-track-vars
   .
   .
   .
[root@localhost php-4.0pl1]# make; make install
   .
   .
   .
역시 특별한 이상이 없다면, PHP4가 성공적으로 설치된 것이다. 옵션을 줄 때 주의할 점은 '--with-mysql'의 경우엔 앞서 MySQL을 설치한 디렉토리, '--with-apache'의 경우엔 apache의 소스 디렉토리를 명시한다는 것이다. '--disable-debug' 옵션은 다음에 설치할 Zend Optimizer를 위한 것이다.

Apache 설치
이제 main인 apache를 설치할 차례이다. 앞서와 같이 configure, make, make install을 차례로 시행하는데, configure 옵션 마지막에서 '...libphp4.a'를 정확히 입력하도록 하고, 만일 configure 실행 단계에서 'SSL_BASE..' 어쩌고 하는 메시지가 뜨면, mod_ssl을 apache 소스트리에 적용하는 단계에서 '--with-openssl' 옵션을 바르게 주지 않은 경우이다. 이때는 'export SSL_BASE=/usr/local/src/openssl-0.9.6' 정도로 SSL_BASE를 지정해 주고 다시 시도해 보도록 하자.

[root@localhost src]# cd apache_1.3.19
[root@localhost apache_1.3.19]# ./configure
> --prefix=/usr/local/apache
> --enable-module=ssl
> --activate-module=src/modules/php4/libphp4.a
   .
   .
   .
[root@localhost apache_1.3.19]# make
   .
   .
   .

여기까지 오면 일단 apache 컴파일은 성공적인 셈이다.
다음은 선택적으로 ssl에서 사용할 인증서(?)를 만드는 과정이다.
apache를 시동할때마다, password 비슷한 것(?)을 입력하기 귀찮은 사람은
권하지는 않지만, 건너 뛰어도 좋다.

[root@localhost apache_1.3.19]# make certificate
   .
   .
   .

이와 같이 하면, 몇가지 질문이 이어진다. 화면을 잘 읽고 적당한
단어들을 입력하면 되는데, 마지막에

Enter PEM pass phrase:

라는 질문에 적은 문구를 잘 기억하도록 한다. (이것이 나중에 apache를
시동할 때 쓰일 패스워드라고 생각하면 편할 것이다.)

이제 apache를 설치하도록 하자.

[root@localhost apache_1.3.19]# make install
   .
   .
   .


Zend Optimizer 설치
이제 설치부분의 막바지에 다다랐다. PHP의 성능을 높여주는 Zend Optimizer를 설치해 보도록 하자. 앞서 풀어 놓았던 디렉토리를 통째로 옮기면 된다.

[root@localhost src]# mkdir /usr/local/Zend
[root@localhost src]# mv ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386
> /usr/local/Zend/lib
이제 모든 설치가 끝났다. 다음에서 몇가지 환경 설정과 점검을 해보도록 하자.


--------------------------------------------------------------------------------

마지막 점검하기
앞서 설치한 패키지들이 이상없이 잘 설치되었나 검사하고, 실행에 필요한 몇가지 설정을 추가하도록 하자.

환경 설정하기
전에 풀어둔 PHP 소스 디렉토리로 이동해서 php.ini-dist 파일을 /usr/local/apache/conf 디렉토리로 복사하자.

[root@localhost src]# cd php-4.0pl1
[root@localhost php-4.0pl1]# cp php.ini-dist /usr/local/apache/conf/php.ini
복사한 php.ini 파일에 Zend Optimizer를 위한 설정을 추가한다.
zend_optimizer.optimization_level=15
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
이제 apache의 설정 파일인 /usr/local/apache/conf/httpd.conf를 편집한다. 먼저 시작 페이지 설정이다.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
index.php외에 필요한 것들을 추가하면 된다. 다음은 mime type이다. 설정 파일을 찾아보면 PHP를 위한 설정이 주석으로 막혀있는 것을 발견할 수 있을 것이다. 주석을 해제하도록 하자.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
다음은 SSL을 사용하기 위한 설정이다. 서버를 따로 띄우는 등 여러가지 방법이 있지만, 여기서는 apache의 virtual host 기능을 이용하도록 하자. 설정 파일에서 'Listen 80' 하는 부분을 찾아 아래에 'Listen 443' line을 추가한다. 이는 ssl이 기본적으로 443번 포트를 사용하기 때문이다.
Listen 80
Listen 443
마지막 부분에 ssl protocol을 사용할 virtual host에 대한 설정을 추가한다.
SSLSessionCache dbm:/var/run/ssl.scache
SSLMutex        file:/var/run/ssl.mutex
SSLLog          /var/log/ssl.log

<VirtualHost 127.0.0.1:443>
   SSLEngine                   on
   SSLCertificateFile          /usr/local/apache/conf/ssl.crt/server.crt
   SSLCertificateKeyFile       /usr/local/apache/conf/ssl.key/server.key
   SSLVerifyClient             none
   ServerName localhost.localdomain
   ServerAdmin root@localhost.localdomain
   DocumentRoot /usr/local/apache/htdocs
   ErrorLog logs/localhost-secure-error_log
   CustomLog logs/localhost-secure-access_log common
</VirtualHost>

약간 부연하자면, <VirtualHost x.x.x.x:443> 에서는 사용하는 ip(혹은 server name)를 적고, 'DocumentRoot'에는 ssl을 사용하는 virtual host가 서비스할 문서 디렉토리, 기타 서버에 국한된 log 파일이름 등이다. 자세한 설정은 apache의 virtual host 설정 문서를 참고하도록 하자.

테스트 하기
이제 apache를 시동해 보자.

[root@localhost src]# cd /usr/local/apache/bin
[root@localhost bin]# ./apachectl start
./apachectl start: httpd started

위와 같이 되면 정상적으로 실행된 것이다. 만일 apache를 설치하는 단계에서 'make certificate'을 실행했다면, 다음과 같은 문장이 보일 것이다.
Apache/1.3.19 mod_ssl/2.8.1 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server 127.0.0.1:443 (RSA)
Enter pass phrase:

설치 단계에서 기억하라고 했던 단어를 입력하면 앞서와 같이 실행된다.
Ok: Pass Phrase Dialog successful.
./apachectl start: httpd started

apache가 정상적으로 실행되면, 다음과 같은 PHP script를 만들어서 php module을 테스트해보자.
<?
phpinfo ();
?>

apache 설정 파일에서 DocumentRoot 부분을 고치지 않았다면 /usr/local/apache/htdocs 가 기본 문서 디렉토리일 것이다. 위의 스크립트를 /usr/local/apache/htdocs/test.php 로 저장하고, browser로 'http://127.0.0.1/test.php'를 불러 보자. PHP에 대한 정보가 출력되면, php module이 정상적으로 작동하는 것이다.

앞서 ssl을 사용하는 virtual host에 대한 DocumetRoot 부분을 고치지 않았다면 이 역시 같은 디렉토리를 기본 문서 디렉토리로 사용한다. browser에서 'https://127.0.0.1/test.php'를 불러본다. 똑같은 내용이 보이기 전에 ssl 연결을 시사하는 창이 하나 뜨게 될 것이다. 이후, 앞서와 같은 화면을 볼 수 있다면, ssl module 역시 정상적으로 작동하는 것이다.

이제 모든 것을 마쳤다. 여러 가지 설정을 자신이 원하는 대로 조정하고 잘 사용하면 될 것이다. 이 문서에 부족한 부분이 있다면, 역시 원하는 대로 추가/ 삭제/ 수정해서 재배포할 수 있다.

이 문서의 다음 버전에서는 MySQL 테스트와, PHP + MySQL 연동 테스트 정도를 추가하고자 한다.

Share on Facebook Share on X

◀ PREVIOUS
메일(mail)이 보내지는건 되는데, 안받아져요
▶ NEXT
apache+php에 oracle연동하기
  댓글 0
로그인을 하시면 댓글을 등록 할 수 있습니다.
OTHER POSTS IN THE SAME CATEGORY

window 스스로 닫기 (created at 2006-10-10)

이미지를 지정된 비율로 자르기 (crop) (created at 2006-10-10)

JavaScript로 만든 달력(popup 객체사용) (created at 2006-10-10)

AJAX 컨트롤 많이 있겠지만, Form 메소드 형태로 (created at 2006-10-10)

모니터 끄는 API (created at 2006-09-29)

telnet 접속이 내부는 되는데 외부는 안되는 경우 (created at 2006-09-29)

PHP3를 사용하려면 (created at 2006-09-29)

가상 호스트(Virtaul Host)를 꾸미려면... (created at 2006-09-29)

포트 변경하는 법 (created at 2006-09-29)

개인 계정에 대한 쿼터 설정 방법 (created at 2006-09-29)

메일서버 세팅하기 (created at 2006-09-29)

pop3 제대로 되는지 테스트 하는 방법 (created at 2006-09-29)

메일을 보내면 릴레이를 거부하는데? (created at 2006-09-29)

firewall setting / host deny (created at 2006-09-29)

apache+php에 oracle연동하기 (created at 2006-09-29)

메일(mail)이 보내지는건 되는데, 안받아져요 (created at 2006-09-29)

WOWLINUX에서 POP3 구동시키기 (created at 2006-09-29)

dante ~ free sock v4/v5 server for linux (created at 2006-09-29)

IP 및 GATEWAY 설정 변경 방법 (created at 2006-09-29)

외부에서 PING 안되게 막기 (created at 2006-09-29)

SoBig.Worm Virus 퇴치 방법 (created at 2006-09-29)

WOWLINUX 7.3 Paran R2 - HDD Quota 설정 (created at 2006-09-29)

IE 쿠키 세팅하는 방법 (created at 2006-09-29)

메일 수신은 되는데 발신은 안될경우 (created at 2006-09-29)

터미널에서 한글이 안나오고 입력도 안되는 문제 해결 (created at 2006-09-29)

cgi File Downloading Module (created at 2006-09-29)

매크로로 라이브러리 링크하는 방법 (created at 2006-09-29)

AES (Advanced Encryption Standard) Source Code (created at 2006-09-29)

Check Function - Is NT/2000/XP ? (created at 2006-09-29)

Simple Socket Server based on C (created at 2006-09-29)

UPDATES

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-03-14)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-03-13)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)

신한은행/신한투자증권 금융거래 종합보고서 다운로드 방법 (updated at 2024-02-26)

100년 된 일본 장난감 회사가 내놓은 변신 기술에 난리난 과학계 (created at 2024-02-26)

알리에서 발견한 한글 지원하는 가성비 쩌는 무선 기계식키보드 (updated at 2024-02-25)

쌍팔년도가 1988년인줄 알았던 1인 (updated at 2024-02-23)

이쁜 색으로 변신한 테슬라 사이버트럭 (created at 2024-02-23)

2024년 카타르 아시안컵 4강전 전날 한국 대표팀 내부에 있었던 이강인의 폭주 (updated at 2024-02-21)

강릉 맛집 지도 (updated at 2024-02-20)

간이 안좋을 때 나타나는 증상 20가지 (updated at 2024-02-20)

배설물을 이용하여 일본에 저항했던 독립운동가 조명하 (updated at 2024-02-20)

요건 몰랐지롱? 이순신을 사랑한 외국인 (created at 2024-02-20)

원빈도 머리빨 (created at 2024-02-19)

대표적인 대한민국의 미남배우 중 하나인 원빈 (created at 2024-02-19)

백제의 건국 시조 온조왕 (updated at 2024-02-19)

700년동안 대한민국 고대국가의 한축이었던 백제시대 (created at 2024-02-19)

대머리들에게 주는 대머리의 조언 (created at 2024-02-17)

일본의 여성 락그룹 프린세스 프린세스의 "다이아몬드" (created at 2024-02-17)

결혼식 직전 연락두절된 신랑 (created at 2024-02-17)

대한민국 축구팀 파문으로 인해 중국 소셜미디어까지 등장한 탁구 전도사 이강인 (updated at 2024-02-16)

조국의 반격으로 흥미진진하게 흘러가는 한국의 정치판 - 데뷰와 동시에 한동훈 장관에게 던진 4개의 질문 (updated at 2024-02-15)

2024년 카타르 아시안컵 4강전 전날 내분사태로 갑자기 회자되는 이승우선수의 친화력 (created at 2024-02-15)

카카오뱅크 금융거래종합보고서/잔액증명서/거래내역서 발급 방법 (created at 2024-02-14)

아이가 최고의 스승이었다 (created at 2024-02-13)

이제는 국민 유행어로 등극한 한동훈의 "싫으면 시집가" (updated at 2024-02-13)

설 연휴 잔소리 메뉴판 - 이제 잔소리 하기전에 요금부터... (updated at 2024-02-10)

로버트 드니로의 70년 전 모습 (created at 2024-02-08)

카메라 어플로 만들어본 슈퍼걸 - 엄... 최종 작품은 왠지... (created at 2024-02-08)

앞트임 하고 새롭게 태어난 대한민국의 젊은 용사 (created at 2024-02-08)

비가 억수로 내리던 2024년의 2월 어느날 캘리포니아의 밤 카니예 웨스트와 그의 아나 비앙카 센소리 (updated at 2024-02-08)

스케방형사 1화 - 수수께끼의 전학소녀사키 (created at 2024-02-05)

백제와 일본의 교류가 가장 활발했던 시기는 근초고왕 시대 (created at 2024-02-05)

일에 찌들은 아빠가 꿈에서 깨어나지 않자 구출해주는 짱구 (created at 2024-02-03)

이제는 할아버지가 된 휴 그랜트(Hugh Grant)가 블랙핑크 콘서트에 다녀온 후 소감 (created at 2024-02-03)

다시 한번 감상해보는 추억의 날리면 패러디 (updated at 2024-02-01)

25년간 노예로 살다가 돌아온 남동생 (created at 2024-02-01)

가까우면서도 멀게 느껴지는 나라 일본 (created at 2024-02-01)

친구와 비교하다가 이혼하게 된 부부 (created at 2024-02-01)

요꼬 미나미노의 바람의 마도리걸(風のマドリガル) (created at 2024-01-30)

옛날 어린이들이 신문을 챙겨봤던 이유 (created at 2024-01-30)

Remaster된 요꼬 미나미노(南野陽子)의 판도라의 연인(パンドラの恋人) (updated at 2024-01-30)