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 허용
yum -y install gcc cpp gcc-c++ compat-gcc-34-g77 flex openssl*
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(암호화 라이브러리)
더보기
다운받기 : 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) 다운로드
# 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
=========================================================================================
※ 아파치 접속자수 설정
아파치 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
service httpd start
설정
일반계정이 home 에 설치됬다면 아래 추가 - 미추가시 403 에러
<Directory "/home/*/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
압축 풀어서 생긴(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
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
mod_security 설치
(압축 풀기 및 폴더 이동)
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
# 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
# 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 (용도에 따라 알맞게 설정)
'Server&OS > Linux' 카테고리의 다른 글
리눅스에서 x-window설치하기 (0) | 2009.09.15 |
---|---|
SCP명령어 (0) | 2009.09.10 |
YUM 사용시 자동으로 서버리스트를 갱신하지 못할때... (0) | 2009.09.01 |
리눅스 명령어 : CP (0) | 2009.08.20 |
리눅스 서버에서 IP변경하기 (0) | 2009.08.03 |