작성자 기술지원부 김 삼 수
Apache_2.x + Mysql + Php + Zend + OpenSSL 설치 ( 1 ) Source 파일 다운로드 ( 2 ) Source 파일 압축해제 ( 3 ) Apache2 설치 ( 4 ) Mysql 설치 ( 5 ) GD 설치 ( 6 ) PHP 설치 ( 7 ) ZendOptimizer 설치 ( 8 ) SSL 설정 ---------------------------------------------------------------------------------------------- ( 1 ) Source 파일 다운로드 wget은 웹에서 자동적으로 파일을 받아오는데 사용되는 유틸리티이며 HTTP, HTTPS, FTP 프로토콜을 지원합니다. ① httpd-2.2.4.tar.gz 다운로드 사이트 : http://httpd.apache.org/download.cgi [root@nextline ~]# wget http://mirror.apache-kr.org/httpd/httpd-2.2.4.tar.gz
② mysql-4.1.22.tar.gz 다운로드 사이트 : ftp://mysql.byungsoo.net/pub/mysql/ [root@nextline ~]# wget ftp://mysql.byungsoo.net/pub/mysql/Downloads/MySQL-4.1/mysql4.1.22.tar.gz

③ php-5.2.3.tar.gz 다운로드 사이트 : http://www.php.net/downloads.php [root@nextline ~]# wget http://www.php.net/get/php-5.2.3.tar.gz/from/kr2.php.net/mirror
④ gd-2.0.35.tar.gz 다운로드 사이트 : http://www.libgd.org/releases/ [root@nextline ~]# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
⑤ ZendOptimzer-3.3.0-linux-glibc21-i386.tar.gz 다운로드 사이트 : http://www.zend.com/ 다운로드 받은 ZendOptimzer을 ftp을 이용하여 업로드 합니다.
---------------------------------------------------------------------------------------------- ( 2 ) Source 파일 압축해제 [tar 명령어 옵션] tar 명령어는 파일을 묶거나 풀 때 사용되는 리눅스 명령어 입니다. c : tar 파일을 생성할 때(여러 개의 파일을 하나의 파일로 묶을 때) v : 묶을 때나 풀어줄 때 파일들의 내용을 자세하게 보려고 할 때. z : gzip과 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용. x : 주어진 이름의 파일에 대하여 추출 사용법: tar [옵션] 파일명 ① httpd-2.2.4.tar.gz [root@nextline ~]# tar zxvf httpd-2.2.4.tar.gz
② mysql-4.1.22.tar.gz [root@nextline ~]# tar zxvf mysql-4.1.22.tar.gz
③ gd-2.0.35.tar.gz [root@nextline ~]# tar zxvf gd-2.0.35.tar.gz
④ php-5.2.3.tar.gz [root@nextline ~]# tar zxvf php-5.2.3.tar.gz
⑤ ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz [root@nextline ~]# tar zxvf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz
압축해제을 해제하면 아래와 같이 패키지별 소스디렉토리가 생성됩니다. ZendOptimizer-3.3.0-linux-glibc21-i386 mysql-4.1.22 gd-2.0.35 php-5.2.3 httpd-2.2.4
⑥ OpenSSL 설치상태 확인 [root@nextline ~]# rpm -qa | grep openssl openssl-0.9.7a-43.8 xmlsec1-openssl-1.2.6-3 openssl-devel-0.9.7a-43.8 위와 같이 openssl이 rpm 으로 설치되어 있는지 확인 후 설치가 되어있지 않을 수 rpm버전이나 Source 버전으로 설치하셔야 합니다.
---------------------------------------------------------------------------------------------- ( 3 ) Apache2 설치 ① 컴파일 환경설정 [root@nextline ~]# cd httpd-2.2.4 [root@nextline httpd-2.2.4]# ./configure \ --prefix=/usr/local/apache \ --enable-ssl \ --enable-rule=SHARED_CORE \ --enable-shared=max \ --enable-module=so \
[컴파일 옵션] 아파치가 설치될 경로를 지정합니다. --prefix=/usr/local/apache mod_ssl 을 모듈을 아파치에 올리기위한 옵션입니다. --enable-ssl DSO 방식으로 아파치를 컴파일 하기위한 옵션입니다. --enable-rule=SHARED_CORE --enable-shared=max --enable-module=so
② 컴파일 [root@nextline httpd-2.2.4]# make
③ 설치 [root@nextline httpd-2.2.4]# make install
④ httpd.conf 파일편집 [vi 에디터 사용법] 사용형식: vi [옵션] [생성할 파일명/편집할 파일명] vi 에디터는 입력모드, 명령모드, 실행모드로 구분됩니다. 입력모드: vi 편집화면에서 문자를 입력할 수 있는 모드로서 입력모드로 진입하기 위해서는 i, a, o, I, A, O, R등이 있습니다. 즉 초기 vi 편집기 모드는 명령어 모드로 진입을 하기때문에 문자를 입력하기 전에 앞의 단축키중 하나를 먼저 입력해야 원하는 문자를 입력할 수 있습니다. 명령모드: 커서이동/문자삭제/문자(열)교체/문자열검색 등을 할수 있는 모드로서 입력모드에서 편집이 완료되면 Esc키를 눌러 명령모드로 진입하면 됩니다. 실행모드: 특별한 명령어를 실행하는 모드로서 명령어모드에서 ":"(콜론)를 누르면 vi 화면 하단 좌측에 vi 특수명령어를 입력할 수 있습니다. [실행모드의 일반적으로 쓰이는 특수 명령어] q : 수정 작업이 이루어지지 않은 상태에서 vi 편집기에서 빠져나옵니다. q! : 수정 작업이 이루어진 부분을 적용시키지 않고 vi 편집기를 강제로 빠져나옵니다. w : 수정된 작업을 저장합니다. wq : 수정된 작업을 저장하고 vi 편집기에서 빠져나옵니다. 초기 명령어모드-> 입력모드진입 -> 편집 -> 명령어모드 -> 실행모드 -> 종료 [root@nextline httpd-2.2.4]# vi /usr/local/apache/conf/httpd.conf
⑤ ServerName 설정 ServerName 부분에 아이피 혹은 도메인을 기입합니다. ServerName xxx.xxx.xxx.xxx
⑥ 가상호스트 설정파일 편집
⑦ VirtualHost 편집
⑧ Apache 데몬 시작 [root@nextline httpd-2.2.4]# /usr/local/apache/bin/apachectl start [root@nextline httpd-2.2.4]# netstat -anp | grep httpd tcp 0 0 :::80 :::* LISTEN 10775/httpd
----------------------------------------------------------------------------------------------
( 4 ) Mysql 설치 ① 컴파일 환경설정 [root@nextline ~]# cd mysql-4.1.22 [root@nextline mysql-4.1.22]# ./configure --prefix=/usr/local/mysql \ --with-charset=euckr \ [컴파일 옵션] Mysql 이 설치될 경로를 지정하는 옵션입니다. --prefix=/usr/local/mysql 문자셋을 한국어로 설정하는 옵션입니다. --with-charset=euckr
② 컴파일 [root@nextline mysql-4.1.22]# make
③ 설치 [root@nextline mysql-4.1.22]# make install
④ mysql 데이터 디렉토리생성 [root@nextline mysql-4.1.22]# /usr/local/mysql/bin/mysql_install_db
⑤ 데이터 디렉토리확인 [root@nextline mysql-4.1.22]# ls /usr/local/mysql 데이터 디렉토리 [var]
⑥ mysql 계정생성 [root@nextline mysql-4.1.22]#usradd –M –s /sbin/nologin mysql; passwd mysql New UNIX password : [mysql 패스워드를 지정합니다] Retype new UNIX password : [mysql 패스워드를 재 입력합니다]
⑦ mysql 디렉토리 소유권변경 chown - 리눅스의 소유권 변경 명령어 입니다. -R 옵션 - 하위 디렉토리까지 모두 적용합니다. [root@nextline mysql-4.1.22]#chown –R mysql.mysql /usr/local/mysql
⑧ mysql 데몬구동 mysql를 백그라운드로 구동합니다. [root@nextline mysql-4.1.22]#/usr/local/mysql/bin/mysqld_safe &
⑨ mysql 데몬 구동확인 [root@nextline mysql-4.1.22]# netstat -anp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1809/mysqld
⑩ mysql root 패스워드설정 [root@nextline mysql-4.1.22]#/usr/local/mysql/bin/mysqladmin –u root password ‘xxxxxx'
⑪ mysql 접속확인 [root@nextline mysql-4.1.22]#mysql –u root –p 접속이 정상적으로 이루어지며 mysql 설치가 완료된 화면입니다.
---------------------------------------------------------------------------------------------- ( 5 ) GD 설치
① 컴파일 환경설정 [root@nextline ~]# cd gd-2.0.35 [root@nextline gd-2.0.35]# ./configure --prefix=/usr/local/gd2 [컴파일 옵션] GD가 설치될 경로를 지정하는 옵션입니다. --prefix=/usr/local/gd2
② 컴파일 [root@nextline gd-2.0.35]# make
③ 설치 [root@nextline gd-2.0.35]# make install
④ 설치확인 [root@nextline gd-2.0.35]# ls /usr/local/
---------------------------------------------------------------------------------------------- ( 6 ) PHP 설치
① 컴파일 환경설정 [root@nextline ~]# cd php-5.2.3 [root@nextline php-5.2.3]# ./configure --prefix=/usr/local/php \ > --with-apxs2=/usr/local/apache/bin/apxs \ > --with-config-file-path=/usr/local/lib \ > --with-mysql=/usr/local/mysql \ > --with-gd=/usr/local/gd2 \ > --enable-gd-native-ttf \ > --with-freetype-dir=/usr \ > --with-zlib \ > --with-iconv \ > --with-imap \ > --with-imap-ssl \ > --with-kerberos \ > --enable-mbstring \ > --enable-track-vars \ > --enable-ftp \ > --disable-debug [컴파일 옵션] --prefix=/usr/local/php php 설치경로를 지정합니다. --with-apxs=/usr/local/apache/bin/apxs 공유된 apache 모듈을 연동하기 위한 옵션입니다. --with-config-file-path=/usr/local/lib php설정파일 php.ini파일이 존재할 위치를 지정합니다. --with-mysql=/usr/local/mysql Mysql과 연동하기 위한 옵션입니다. --with-gd=/usr/local/gd2 php에서 gd라이브러리관련 함수를 사용하여 gd를 지원하기 위한 옵션입니다. --enable-gd-native-ttf GD 라이브러리에서 FreeType를 함하는 옵션입니다. –-with-freetype-dir=/usr freetype2를 지원하기 위한 옵션입니다. --with-zlib 데이터압축 라이브러리로서 php에서 zlib을 지원하기 위한 옵션입니다. --with-iconv 인코딩 변환프로그램으로 iconv를 지원하기 위한 옵션입니다. --with-imap pop 과 함께 메일수신데몬으로 사용되는 서비스로서 imap를 지원하기 위한 옵션입니다. --with-kerberos Kerberos는 클라이언트 서버 애플리케이션의 입증을 제공하기 위하여 상칭적인 암호법을 이용하는 네트워크 인증 프로토콜로서 kerberos를 지원하기 위한 옵션입니다. --enable-mbstring multi-byte문자를 지원하기 위한 옵션으로 많은 언어를 표현하기 위하여 이용되며, php에서 mbstring를 지원하기 위한 옵션입니다. --enable-track-vars HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어있는 GET / POST / cookie 변수들이 어디로부터 왔는지 기억하게 만듭니다. 이 옵션은 단지 Default 값 을 정하는 것뿐이며, 후에 configuration file의 track_vars 지시자에 의해 Enable/Disable 할 수 있습니다. --enable-ftp php에서 ftp관련 함수를 지원하기 위한 옵션입니다. --enable-debug Zend Optimizer를 사용하기 위해서는 debugging을 사용하지 않습니다. [그외 옵션] --enable-sockets 소켓(socket) 파일을 사용하기 위한 옵션입니다. --with-language-korean 한국어를 사용하기 위한 옵션입니다. --enable-dba=shared DBA를 동적으로 적재할 수 있는 공유 모듈 형태로 만드는 옵션입니다. --enable-gdbm[=DIR] GDBM 지원을 포함하는 옵션입니다. --enable-memory-limit php에서 메모리 제한 기능을 지원하는 옵션입니다.
② 컴파일 [root@nextline php-5.2.3]#make
③ 설치 테스트 [root@nextline php-5.2.3]#make test
④ report 받기 설치 테스트 파일을 메일로 받기 원하시면 화면과 같이 메일주소를 입력합니다. 테스트파일이 필요하지 않으시면 [n] 입력합니다.
⑤ 설치 [root@nextline php-5.2.3]#make install
⑥ php 설정파일 복사 [root@nextline php-5.2.3]#cp php.ini-dist /usr/local/lib/php.ini
⑦ 아파치 설정파일 편집 [root@nextline php-5.2.3]#vi /usr/local/apache/conf/httpd.conf
⑧ PHP 인덱스파일 설정
DirectoryIndex index.html index.htm index.php index.jsp
⑨ AddType 설정 AddType application/x-httpd-php .php .php4 .php3
⑩ 설정파일 적용 [root@nextline php-5.2.3]#/usr/local/apache/bin/apachectl restart
---------------------------------------------------------------------------------------------- ( 7 ) ZendOptimizer 설치 ① install.sh 실행 [root@nextline ~]# cd ZendOptimizer-3.3.0-linux-glibc21-i386 [root@nextline ZendOptimizer-3.3.0-linux-glibc21-i386]# ./install.sh
② OK
③ Zend Optimizer 라이센스 화면입니다. [EXIT]
④ 라이센스 동의 화면입니다. [Yes]
⑤ Zend 설치경로를 지정하는 화면입니다. /usr/local/Zend(절대경로) 확인 후 를 선택합니다. Zend Optimizer 설치 경로가 자동 지정되지 않을 시 수동으로 /usr/local/Zend 경로를 지정해 주시면 됩니다. (Linux OS의 응용프로그램은 기본 /usr/local에 설치되기 때문에 /usr/local/Zend로 지정합니다.) [OK]
⑥ php.ini의 경로를 지정하는 화면입니다. php설치 시 php.ini 파일이 /usr/local/lib에 생성되기 때문에 /usr/local/lib(절대경로) 지정합니다. [OK]
⑦ Zend Optimizer + Apache 연동할 것인지를 묻는 화면입니다 [Yes]
⑧ apaachectl의 경로를 지정하는 화면입니다. [OK]
⑨ php.ini 파일의 php.ini-zend_optimizer.bak 백업파일을 생성하는 화면이며, 생성위치는 php.ini 파일이 존재하는 /usr/local/lib 경로에 생성됩니다. [OK]
⑩ Zend Optimizer 설치완료 화면입니다 [OK]
⑪ apache 재 시작을 묻는 화면입니다 [Yes]
⑫ Apache 재 시작 성공 [OK]
⑬ phpinfo 파일생성 [root@nextline ~]#vi /usr/local/apache/htdocs/php_test.php
⑭ phpinfo 코드설정 phpinfo(); ?>
⑮ APM 연동확인 http://아이피/php_test.php
---------------------------------------------------------------------------------------------- ( 8 ) SSL 설정
① 개인키 생성 [root@nextline ~]# cd /usr/local/src 1024바이트의 암호화 개인키를 생성합니다. [root@nextline src]# openssl genrsa 1024 > nextline.co.kr.key
② CSR 생성 [root@nextline src]# openssl req –new –key nextline.co.kr.key > nextline.co.kr.csr
③ CSR 정보입력 Country Name (국가코드입력) [GB]:KR State or Province Name (시/도의 전체이름 입력) [Berkshire]: Seongnam Gyeonggi-do Locality Name (시,구,군 등의 이름 입력) [Newbury]: Yatap-dong Bundang-gu Organization Name (회사이름 입력) [My Company Ltd]:nextline Organizational Unit Name (부서명) []:Technological Support Department Common Name (인증받을 도메인 입력) []:nextline.co.kr Email Address (발급 인증서를 수신할 이메일 입력)[]:ask@nextline.co.kr 추가정보는 입력은 선택사항이므로 입력을 하지 않으시려면 Enter 입력 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: Enter An optional company name []: Enter [CSR 항목에 대한 설명] Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다. State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다. Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳를 나타냅니다. Organization : 사업자 등록증에 있는 회사명과 일치되는 영문회사명을 입력하시면 됩니다. Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다. Common Name : 인증받을 도메인주소를 입력하시면 됩니다. 이 정보로 웹 사이트를 식별하므로 호스트 이름을 변경할 경우 다른 디지털 ID를 요청해야 합니다. 호스트에 연결하는 클라이언트 브라우저가 디지털 ID의 이름과 URL이 일치하는지를 확인합니다. [CSR 항목 입력시 주의사항] Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다. Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다. CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다. CSR 생성후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업받아 두셔야 합니다. 정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.
④ CRT 생성 [root@nextline src]# openssl req –x509 –key nextline.co.kr.key –in nextline.co.kr.csr > nextline.co.kr.crt
⑤ 생성키 확인
⑥ 생성키를 저장할 디렉토리 생성 [root@nextline src]#mkdir /usr/local/apache/conf/ssl.crt [root@nextline src]#mkdir /usr/local/apache/conf/ssl.key [CRT/KEY] 키 값을 위에서 생성한 디렉토리 경로로 이동합니다. [root@nextline src]#mv nextline.co.kr.crt /usr/local/apache/conf/ssl.crt/ [root@nextline src]# mv nextline.co.kr.key/usr/local/apache/conf/ssl.key
⑦ 아파치 설정파일 편집 [root@nextline src]#vi /usr/local/apache/conf/httpd.con
⑧ SSL 설정파일 주석제거 # Secure (SSL/TLS) connections Include conf/extra/httpd-ssl.conf
⑨ SSL 설정파일 편집 [root@nextline src]#vi /usr/local/apache/conf/extra/httpd-ssl.conf
⑩ VirtualHost 도메인설정
DocumentRoot "/home/nextline/public_html" ServerName nextline.co.kr SSLCertificateFile /usr/local/apache/conf/ssl.crt/nextline.co.kr.crt [인증서 파일경로] SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key [개인키 파일경로]
httpd-ssl.conf 기본설정내용
DocumentRoot "/home/nextline/public_html" ServerName nextline.co.kr SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/nextline.co.kr.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nextline.co.kr.key
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog /usr/local/apache/logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
모든 보안 가상 호스트들은 대개 httpd.conf 파일의 끝부분에 위치한 와 사이에 포함되어야 합니다. SSL에 대한 가장 중요한 지시는 SSLEngine on, SSLCertiFficateFile, SSLCertificateKeyFile과 많은 경우에 있어 SSLCACertificateFile 지시자입니다. SSL 엔진 SSLEngine on 이 지시는 SSL을 구동하는 ModSSL의 명령입니다. SSLCertificateFile SSLCertificateFile은 인증서 위치와 그 이름을 아파치에게 알려줍니다. SSLCertificateKeyFile SSLCertificateKeyFile은 비밀키 이름가 그 위치를 아파치에게 알려주며 여기서 정의된 디렉토리는 단지 루트에게만 읽기/쓰기 허가권이 주어져야 하며 다른 누구도 이 디렉토리에 액세스하지 못해야 합니다. SSLCACertificateFile SSLCACertificateFile지시는 Intermediate(root) 인증서 위치를 아파치에게 알려줍니다. ⑪ SSL 설정파일 적용 [root@nextline src]#vi /usr/local/apache/bin/apachectl restart
⑫ SSL 443 포트확인 [root@nextline src]# netstat -anp | grep httpd tcp 0 0 :::80 :::* LISTEN 2215/httpd tcp 0 0 :::443 :::* LISTEN 2215/httpd
⑬ https 접속테스트 https://nextline.co.kr 접속을 하시면 아래와같이 보안경고 창이 보여집니다. [예] – [Enter]
⑭ SSL 보안적용 화면 SSL 적용이 완료되었으므로 공인인증센터를 이용하여 인증서를 발급합니다.
|
|