본문 바로가기
Server&OS/Linux

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

by 백룡화검 2009. 9. 1.

1. CenTOS 설치
1-1 알아서 설치

1-2 CentOS 5.3 yum 업데이트
[root@dns1 ]# yum -y update

1-3 필요없는 서비스 제거 및 사용자 제거
/etc/inittab 3,4,5,6 주석처리
# vi /etc/inittab
     44 # Run gettys in standard runlevels
     45 1:2345:respawn:/sbin/mingetty tty1
     46 2:2345:respawn:/sbin/mingetty tty2
     47 #3:2345:respawn:/sbin/mingetty tty3
     48 #4:2345:respawn:/sbin/mingetty tty4
     49 #5:2345:respawn:/sbin/mingetty tty5
     50 #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

위만 남기고 제거


1-4 파일보안설정

[root@dns1 bin]# chmod 700 /usr/bin/perl*

1-5 root 로긴 막기 && 특정사용자만 su 허용


 

2. 필수 사용 라이브러리 설치하기
 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

파일 첨부 :

wget http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar xvfz libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8(압축 풀린 폴더)
./configure \
--enable-rule=SHARED_CORE
make && make install


다운로드 받기

ftp://ftp.neowiz.com/pub/mysql/Downloads/
wget ftp://ftp.neowiz.com/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.39.tar.gz   (MySQL 5.1.36) 다운로드

http://dev.mysql.com/downloads/mysql/5.1.html
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) 다운로드


 

3. MySQL 설치하기

# cd /usr/local/src/mysql-5.1.36

euckr 설치시

./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-extra-charsets=all

uft8 설치시

./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-extra-charsets=all


# make && make install

# useradd 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('123456') 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

4. 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
#!/bin/sh
#
이 아래줄에 추가합니다...
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: httpd
#

chkconfig --add httpd
chkconfig --level 35 httpd on  // 런레벨 3,5 에 on 을 합니다..
chkconfig --list // httpd 가 등록되었는지 확인합니다..

그럼 다음부팅부터는 httpd 가 자동으로 시작을합니다..


service httpd start


설정

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


5. 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-soap \
--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

참고
php 5.2.10버젼 이상을 설치할경우
다음과 같은 에러가 발생할때가 있다
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391

Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
중략..

그럴때는

php설치 디렉토리 하위의 .channels 를 삭제하고
"pear update-channels"
를 실행하면 된다.



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

 
6. 선택 라이브러리 설치하기
 

mod_security 설치

mod_url 설치
mod_encoding 설치
 
7. Zend Optimizer 설치하기

(압축 풀기 및 폴더 이동)
cd /usr/local/src
wget ZendOptimizer  다운로드 주소 입력

첨부 파일
ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

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

8. eAccelerator 설치


# mkdir /var/cache/eaccelerator
# chown nobody:nobody /var/cache/eaccelerator
# chmod 644 /var/cache/eaccelerator

# cd /usr/local/src
# wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
# tar xvfj eaccelerator-0.9.5.3.tar.bz2
# cd eaccelerator-0.9.5.3
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
# make && make install
# vi /usr/local/apache/conf/php.ini

[Zend]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
zend_optimizer.version=3.3.9
zend_extension=/usr/local/Zend/ZendOptimizer.so

# /etc/init.d/httpd restart


7. Proftpd 설치하기

# tar -xvzf proftpd-1.3.2.tar.gz
# mv proftpd-1.3.2 proftpd
# ./configure --prefix=/usr/local/proftpd
# make
 
# make install
# vi /usr/local/proftpd/etc/pfoftpd.conf (용도에 따라 알맞게 설정)

8. phpMyAdmin 설치하기


9.  설치하기
 

계정생성
 
/etc/skel 설정
/home/user/사용자계정 으로 생성