본문 바로가기
운영체제/리눅스

Centos 5.5 - Apache 2.x + PHP 5.2 + MySQL-5.1 && 이하 라이브러리 설치하기

by o테리o 2010. 8. 25.
제목: Centos 5.5 - Apache 2.x + PHP 5.2 + MySQL-5.1 && 이하 라이브러리 설치하기

1. CentOS 5.5 yum 업데이트 (시간 좀 걸림)
# yum -y update

2. 필요없는 서비스 제거 및 사용자 제거
/etc/inittab 3,4,5,6 주석처리
# vi /etc/inittab

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

# ntsysv -level 345
아래만 남기고 모두 체크해제
필수: crond, iptables, network, sendmail, sshd, syslog, xinetd, yum-updatesd
선택: rsync
 
# vi /etc/passwd 불필요한 사용자 제거
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

위만 남기고 제거

 

3 파일보안설정
[root@dns1 bin]# chmod 700 /usr/bin/perl*

4 필수 사용 라이브러리 설 치하기

APM 설치에 앞서 필요한 라이브러리를 먼저 설치
(GCC, C++, GCC-C++, Compat-GCC-34-g77 flex, OpenSSL -> 이와 관련된 라이브러리 전부 설치 *)
yum -y install gcc cpp gcc-c++ compat-gcc-34-g77 flex openssl*
 
(libjpeg-devel, libpng-devel, freetype-devel, gd-devel, libtermcap-devel, ncurses-devel, libxml2-devel, libc-client-devel, bzip2-devel 라이브러리)
yum -y install libjpeg-devel libpng-devel freetype-devel gd-devel libtermcap-devel ncurses-devel libxml2-devel libc-client-devel bzip2-devel
#확인
rpm -qa gcc* cpp* compat-gcc* flex* openssl*
rpm -qa libjpeg* libpng* freetype* gd-*
reboot  (패키지를 변경할 경우에는 재부팅을 반드시 해야만 합니다.)

Libmcrypt(암호화 라이브러리)
더보기
-> 제로보드 XE(5)에 사용되고 있습니다.
다운받기 : http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
다운받기 : http://cdnetworks-kr-1.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

파일 첨부 :
libmcrypt-2.6.8.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

tar xvfz libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8(압축 풀린 폴더)
./configure \
-enable-rule=SHARED_CORE
make && make install

tar xvfz libmcrypt-2.6.8.tar.gz
cd libmcrypt-2.6.8(압축 풀린 폴더)
./configure \
-enable-rule=SHARED_CORE
make && make install
 

 
5. 다운로드 받기
wget ftp://ftp.neowiz.com/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.36.tar.gz   (MySQL 5.1.36) 다운로드
wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.12.tar.gz      (Apache 2.2.12) 다운로드
wget ftp://ftp.neowiz.com/pub/languages/php/php-5.2.10.tar.gz     (Php-5.2.10) 다운로드

6. MySQL 설치
# cd /usr/local/src/mysql-5.1.36
uft8 설치시
./configure -prefix=/usr/local/mysql -localstatedir=/usr/local/mysql/data -with-charset=utf8 -with-extra-charsets=all
euckr 설치시
./configure -prefix=/usr/local/mysql -localstatedir=/usr/local/mysql/data -with-charset=euckr -with-extra-charsets=all

# make && make install
# adduser mysql -g daemon -u 60 -M -s /bin/false -c “Mysql Server User” -d /usr/local/mysql
# groupadd mysql
# /usr/local/mysql/bin/mysql_install_db(data 디렉토리생성확인, 생성실패시 rpm mysql 설치되어있는지 확인)
# chown -R root.mysql /usr/local/mysql
# chown -R mysql.mysql /usr/local/mysql/data(mysql을 root 권한으로 돌리는건 보안차원에서 위험)
# chmod 700 /usr/local/mysql/data
# /usr/local/mysql/bin/mysqld_safe & ( MYSQL 실행 )

mysql의 mysql root 패스워드 설정하기
mysql은 초기 설치시 관리자(root) 패스워드가 없다. 그래서 mysql -u root -p 후 패스워드를 물어보면 엔터를 치면
root권한으로 mysql에 접속된다.
# ./mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.1.36

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

그런데 mysql 서버에 패스워드 없이 로그인 하게되면 서버에 만들어진 데이터베이스나 테이블
기타 이곳에 저장된 자료가 외부인에게 노출될 수 있다. 따라서 이러한 보안을 목적으로
root 패스워드를 지정하면 mysql 서버를 안전하게 보호할 수 있다.

mysql> use  mysql;
mysql> update  user  set  password=password('dkfxkd') where user='root';
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> flush  privileges; <— 적용(하지 않으면 mysql에서 빠져나와서 root 로그인 안됨)

확인.
mysql> select  host, user, password  from  user;
+—————————————————————-+
| Host                          user              password       |
+—————————————————————-+
| localhost                     root          2e01146f5c065853   |
| localhost.localdomain         root          2e01146f5c065853   |
+—————————————————————-+

mysql> \q
Bye

Profile 파일 편집
vi /etc/profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source /etc/profile

서비스 등록
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start

7 Apache 설치
=========================================================================================
※ 아파치 접속자수 설정
아파치 2.2 버전은 httpd.h 파일에 MaxClient 와 관련된 옵션이 없습니다.
아파치 1.3 버전에서는 src/include/httpd.h 파일 하나만 수정한 후 configure 해주면 되었지만
아파치 2.2 버전에서는 2개의 파일에서 설정을 바꾸어 주어야 합니다.
MaxClient 값을 256에서 2048까지 높이려고 할 경우를 예로 설명드리겠습니다.

먼저, 소스 디렉토리에서 server/mpm/prefork/prefork.c 파 일을 vi 에디터 등으로 열고
#define DEFAULT_SERVER_LIMIT 256 으로 되어 있는 부분을
#define DEFAULT_SERVER_LIMIT 2048 으로 수정한 후, 저장합니다..

여기서, 2048 / 256 을 하시면 8 이라는 배수가 나옵니다. 이 배수를 잘 기억해 둡니다.

다음에는 소스 디렉토리에서 server/mpm/worker/worker.c 파일을 vi 에디터 등으로 열면
#define DEFAULT_SERVER_LIMIT 16  으로 되어 있는 부분이 있습니다.

여기에서 16 * 8 (아까 prefork.c 파일에서 기본값인 256에다 곱해서 2048이 된 배수인 8) 을 곱합니다. 256 이 되는군요.

#define DEFAULT_SERVER_LIMIT 256  으로 수정한 후 저장합니다.

 그 다음에는
./configure -prefix=/usr/local/apache2.2 -enable-rewrite

명령으로 아파치를 재 컴파일한 후,

/usr/local/apache2.2/conf/extra/httpd-mem.conf

파일을 에디터로 열어 MaxClient 부분의 숫자값을 2048 로 변경하여
저장한 후, 아파치를 재시작하면 됩니다.

아파치 프로세서가 최대 256 -> 1024 이상 띄울수 있게 되고 동시접속자수가 증가하게 됨.

#define HARD_SERVER_LIMIT 4096 으로 하여 그 이상의 아파치 프로세서를 띄울수는 있으나 아파치는 한개당 2M정도 차지한다고하니

maxclient 상승은 그에 해당하는 시스템 자원도 뒷받침 해줘야 할것.

1024 이상 띄우는것 보다 커널튜닝을 통해서 리소스를 줄이는것이 효율적이다.
========================================================================================

압축 풀어서 생긴(httpd-2.x.xx) 폴더로 이동합니다.
cd /usr/local/src/httpd-2.2.12

파일을 위한 환경 설정하기.
./configure -prefix=/usr/local/apache -enable-mods-shared=all -enable-so -enable-ssl -enable-modules=ssl -enable-rewrite -with-mpm=prefork -with-mcrypt=/usr/local
또는

./configure -prefix=/usr/local/apache -enable-module=most -enable-shared=max
설치
make && make install

서비스 등록
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
service httpd start

 

설정

일반계정이 home 에 설치됬다면 아래 추가 - 미추가시 403 에러
<Directory “/home/*/”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

 
8. PHP 설치하기

압축 풀어서 생긴(php-5.x.x) 폴더로 이동합니다.
cd /usr/local/src/php-5.2.10

설치를 위한 환경 설정
./configure -with-config-file-path=/etc \
-prefix=/usr/local/php \
-with-apxs2=/usr/local/apache/bin/apxs \
-with-mysql=/usr/local/mysql \
-with-mysqli=/usr/local/mysql/bin/mysql_config \
-disable-debug \
-enable-safe-mode \
-enable-sockets \
-enable-sysvsem=yes \
-enable-sysvshm=yes \
-enable-ftp \
-enable-gd-native-ttf \
-enable-inline-optimization \
-enable-bcmath \
-with-zlib \
-with-jpeg-dir \
-with-png-dir \
-with-freetype-dir \
-with-libxml-dir \
-enable-exif \
-with-gd \
-with-ttf \
-with-gettext \
-enable-sigchild \
-enable-mbstring \
-with-openssl \
-with-imap \
-with-imap-ssl \
-with-kerberos

설치
make && make install

9 PHP 환경 설정 복사하기 (/etc/)
cp /usr/local/src/php-5.2.10/php.ini-dist /etc/php.ini
Apache 서버와 연동하기

vi /usr/local/apache/conf/httpd.conf

(중략)
User apache
Group apache
ServerName www.cakeon.com:80   (서버 주소를 사용자에 맞게 입력합니다.)
DocumentRoot “/usr/local/apache/htdocs”
(중략)
LoadModule ssl_module modules/mod_ssl.so           (SSL 모듈을 활성화 합니다.)
(중략)
<IfModule dir_module>
     DirectoryIndex index.html index.htm index.php
</IfModule>
(중략)
<IfModule mime_module>
     AddType application/x-httpd-php .php .html                  (PHP를 사용할 수 있도록 합니다.)
     AddType application/x-httpd-php-source .phps            
</IfModule>

서비스 재시작(웹서버 재시작)
service httpd restart

테스트 하기(PHP 연동여부 확인)
rm /usr/local/apache/htdocs/index.html
echo ‘<?php phpinfo() ?>’ > /usr/local/apache/htdocs/index.php
 
10 선택 라이브러리 설치하기
mod_security 설치
mod_url 설치
mod_encoding 설치
 
11 Zend Optimizer 설치하기
(압축 풀기 및 폴더 이동)
cd /usr/local/src
wget ZendOptimizer  다운로드 주소 입력

tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386

(설치 하기)
./install.sh

(기존의 PHP 환경 설정 제거)
# rm /etc/php.ini

(심볼릭으로 Zend가 연동된 php를 연결하기 - /etc/php.ini)
# ln -s /usr/local/Zend/etc/php.ini /etc/php.ini

(기타 라이브러리 재 연동)
/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC

(/etc/profile 환경설정)
vi /etc/profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
source /etc/profile