본문 바로가기
Unix.Linux

페도라 코어4 : 웹호스팅 서버 그대로 따라 만들기

by 누피짱 2008. 4. 25.
선오공님이 올려주신 문서를 바탕으로

설치시 에러나는 부분이 있길래 수정하였고

조금더 유용한 부분들을 더 추가하였습니다.

4번만에 이상없이 설치가되어  추가한것을 올립니다. ^^!

처음 올리는거라 무섭내요...



아래 내용을 그대로 따라만 하시면 됩니다.
계정별로 트래픽을 제어하는 부분과 하드 할당량을 설정할 수 있습니다.
단, 중간에 오류가 발생하는 부분이 생길 수도 있습니다.



# 페도라 코어 4 최소 설치 후 (이 부분은 따로 설명하지 않습니다.)



# yum 설치를 위해 GPG-KEY 포함
 rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora



# yum 업데이트
 yum -y update



# 한글 설정
 /etc/sysconfig/i18n

 LANG="ko_KR.eucKR"
 SUPPORTED="en_US.iso885915:en_US:en:ko_KR.eucKR:ko_KR:ko"
 SYSFONT="lat0-sun16"
 SYSFONTACM="iso15"



# 매뉴얼 설정 수정
 vi /etc/man.config

수정
 PAGER          /usr/bin/less -isr




# 디렉토리 색상 수정
 vi /etc/DIR_COLORS.xterm

수정
 DIR 00;33



# 소스 컴파일을 위한 컴파일러 및 각종 모듈 yum 설치
 yum -y install gcc cpp gcc-c++ compat-gcc-32-g77 flex libjpeg-devel libpng-devel libtiff-devel freetype-devel openldap-devel pam-devel sendmail-cf vsftpd telnet-server




# zlib 소스 설치
 cd /usr/local/src
 wget http://www.zlib.net/zlib-1.2.3.tar.bz2
 tar xfj zlib-1.2.3.tar.bz2
 cd zlib-1.2.3
 make
 make install




# freetype 2 설치
 글짜를 그릴 때 쓰는 라이브러리 입니다.
 wget http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
 tar xvfz freetype-2.1.5.tar.gz
 cd freetype-2.1.5
 ./configure
 make
 make install




# openssl 소스 설치
 cd /usr/local/src
 wget http://www.openssl.org/source/openssl-0.9.8a.tar.gz
 tar xfz openssl-0.9.8a.tar.gz
 cd openssl-0.9.8a
 ./config
 make
 make install




# curl 소스 설치
 cd /usr/local/src
 wget http://curl.haxx.se/download/curl-7.15.1.tar.bz2
 tar xfj curl-7.15.1.tar.bz2
 cd curl-7.15.1
. /configure --with-ssl
 make
 make install




# gd lib 설치
 cd /usr/local/src
 wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
 tar xfz gd-2.0.33.tar.gz
 cd gd-2.0.33
 ./configure
 make
 make install




# webalizer 소스 설치
 cd /usr/local/src
 wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tgz
 tar xfz webalizer-2.01-10-src.tgz
 cd webalizer-2.01-10
 ./configure --with-language=korean
 make
 make install



# mysql 4.1.x 설치
 cd /usr/local/src
 wget http://mysql.byungsoo.net/Downloads/MySQL-4.1/mysql-4.1.16.tar.gz
 tar xfz mysql-4.1.16.tar.gz
 cd mysql-4.1.16
 ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr
 make
 make install

 /usr/local/mysql/bin/mysql_install_db
 groupadd mysql
 useradd -M -c MySQL_Server -d /usr/local/mysql -g mysql -s /bin/nologin mysql
 chown root.mysql -R /usr/local/mysql
 chown mysql.mysql -R /usr/local/mysql/data
 cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
 echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local



# apache 1.3.x 설치
 cd /usr/local/src
 wget http://ftp.apache-kr.org/httpd/apache_1.3.34.tar.gz
 tar xfz apache_1.3.34.tar.gz
 cd apache_1.3.34
 ./configure --prefix=/usr/local/apache --enable-module=so
 make
 make install
 echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local


#freetype 소스설치후 적용하기위세 freetype 옵션추가
# php 소스 설치
 cd /usr/local/src
 wget http://kr.php.net/get/php-4.4.2.tar.bz2/from/this/mirror
 tar xfj php-4.4.2.tar.bz2
 cd php-4.4.2
 ./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/apache/conf --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-tiff-dir=/usr/local --with-freetype-dir=/usr/local --with-ttf --with-gd --with-openssl --with-gettext --with-kerberos --with-swf-dir=/usr/local --with-mod_charset --with-regex=php --with-curl --with-ldap --with-iconv --enable-gd-native-ttf --enable-ftp --enable-sockets --disable-debug  --enable-calendar --enable-sigchild --enable-magic-quotes --enable-bcmath --enable-exif --enable-mbstring --enable-dbase --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-yp --with-jpeg-dir --with-freetype-dir
 make
 make install
 cp php.ini-dist /usr/local/apache/conf/php.ini


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

수정
 DirectoryIndex index.html index.htm index.php

수정 (public_html -> www)
 UserDir www
 #<Directory /home/*/www>



# vi /usr/local/apache/conf/mime.types
두줄 추가 (확장자는 탭키로 띄운다)
application/x-httpd-php        php ph inc
application/x-httpd-php-source  phps



# php 파일 이외에 다른파일명으로 php해석할수있게 설정 ex) htm html
# vi /usr/local/apache/conf/httpd.conf
 -  .php 파일 및 html 파일에서 php 코드 실행되게 설정하려면
AddType application/x-httpd-php .php .phtml .php3 .html .htm
AddType application/x-httpd-php-source .phps



# vi /usr/local/apache/conf/php.ini
- 그림 파일 및 프래쉬 파일 로그 남기지 않게 설정
방문자 수가 많아지면 웹로그가 엄청 쌓이게 되고, 그 로그는 크기가  2G를 넘게 되면 웹페이지에 이상현상이 생깁니다. 그렇다고 로그를 안 남길 수는 없는 것이고, 이미지 파일들은 로그남기는 것에서 제외합니다.
CustomLog logs/access_log common 이렇게 되어 있는 것을 ..
SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf)$ IMAGE=1
CustomLog /usr/local/apache/logs/access_log common env=!IMAGE
이렇게 바꾸면^^; 쉽게 가능합니다.
- 업로드 용량 제한 풀기
 기본적으로 업로드는 2M로 제한되어 있습니다. 만약 2M 이상으로 하면 여러 가지 설정들을 바꾸어 줘야 합니다. 업로드 되는 시간을 길 게 해 주어야 하고, 한번에 잡아먹을 메모리를 크게 해 주어야 합니다.
 default_socket_timeout = 600
 post_max_size = 20M
 memory_limit = 20M
 upload_max_filesize = 20M



- 업로드 용량 제한 풀기
# vi /usr/local/apache/conf/php.ini
 기본적으로 업로드는 2M로 제한되어 있습니다. 만약 2M 이상으로 하면 여러 가지 설정들을 바꾸어 줘야 합니다. 업로드 되는 시간을 길 게 해 주어야 하고, 한번에 잡아먹을 메모리를 크게 해 주어야 합니다.
default_socket_timeout = 600
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M



- post, get , 쿠키 , 세션등의 변수를 일반변수로 (개인 서버용일경우 보안상 OFF 권장)
 예전에 php는 기본적으로 위 변수를 일반변수로 사용할 수 있었습니다. 하지만 보안에 취약 하기 때문에 php 설치시 기본적으로 일반변수로 사용못하게 설정합니다. 이렇게 되면 문제가 예전에 사용하던 짜여졌던 프로그램은 정상적으로 실행되지 않습니다. 보안보다는 호환성이 더 중요하죠^^;
register_globals=On  이렇게 설정합니다.




# ZendOptimizer 설치
 cd /usr/local/src
 wget ftp://ftp.sir.co.kr/zendoptimizer/ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
 tar xfz ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
 cd ZendOptimizer-2.5.10a-linux-glibc21-i386
 ./install.sh

php.ini 경로
 /usr/local/apache/conf



# mod_throttle 소스 설치
 cd /usr/local/src
 wget ftp://ftp.sir.co.kr/etc/mod_throttle-3.1.2.tgz
 tar xfz mod_throttle-3.1.2.tgz
 cd mod_throttle-3.1.2/
 make install

#####################################################
##### 인스톨시 다음과 같은 에러시 다음과 같이 하세요.            ############
##### make: *** [install] Error 127make: *** [install] Error 127 ############
####################################################
---> 해당 디렉토리에 Makefile 에 APXS 경로를 지정해준다.


(참고 인스톨시 에러가 발생한다. 그리고 APM세팅 방식을 DSO방식으로 설치한다.
STATIC방식으로 설치해도 되지만, 그 부분은 다시 설정해야한다.)

* static방식으로 설치 했을 경우 ...
configure 시--add-module=$mod_throttle_source_PATH/mod_throttle.c 추가.

* 그럼 DSO방식으로 설치 했을 경우...
* 모듈을 만들어준다.
[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -c mod_throttle.c(모듈을 만들어준다)
gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE
-I/usr/local/apache/include -c mod_throttle.c
gcc -shared -o mod_throttle.so mod_throttle.o

* 에러부분에 추가 해주면 된다.

[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -i -a -n 'throttle' mod_throttle.so
[activating module `throttle' in /usr/local/apache/conf/httpd.conf]
cp mod_throttle.so /usr/local/apache/libexec/mod_throttle.so
chmod 755 /usr/local/apache/libexec/mod_throttle.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new

 
##############################################



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

<IfModule mod_throttle.c>
    ThrottlePolicy Volume 500M 1d

    <Location /throttle-status>
        SetHandler throttle-status
    </Location>

    <Location /throttle-me>
        SetHandler throttle-me
    </Location>

    <Location /~*/throttle-me>
        SetHandler throttle-me
    </Location>
</IfModule>

<VirtualHost 211.xx.xxx.xxx>
    ServerAdmin root@xxx.com
    ServerName xxx.com
    DocumentRoot /home/xxx
    # 하루 500M
    ThrottlePolicy Volume 500M 1d
    # 하루 천번
    ThrottlePolicy Request 1000 1d
</VirtualHost>





# quota 설정

 1. fstab 옵션추가 (usrquota,grpquota) :
 vi /etc/fstab
 /home 에 usrquota 추가
 default,usrquota


 2. remount (umount , mount) :
 mount -o remount /home


 3. 데이터베이스 파일생성(quota.user , quota.group) :
 touch /home/quota.user
 chmod 600 /home/quota.user
 quotacheck -av
 convertquota -u /home

 4. 사용자마다 적용수치 기록 :
 edquota 계정
 repquota -a


 5. 활성화 :
 quotaon /home





# qpopper 4.0.8 소스 설치
 cd /usr/local/src
 wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.8.tar.gz
 tar xvfz qpopper4.0.8.tar.gz
 cd qpopper4.0.8
 ./configure --enable-specialauth --enable-servermode --enable-shy
 make
 cp popper/popper /usr/sbin/popper

 vi /etc/xinetd.d/pop3

service pop3
{
    disable        = no
    socket_type    = stream
    wait            = no
    user            = root
    server          = /usr/sbin/popper
    log_on_success  += HOST DURATION
    log_on_failure  += HOST
}

# /etc/rc.d/init.d/xinetd restart




# sendmail 수정 및 실행
vi /etc/mail/sendmail.mc

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl





# 계정당 용량 설정
vi  /etc/sendmail.cf
Mlocal,        P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                M=20495360, <-- 이 부분만 추가 :  byte 단위 (예:20메가)
                T=DNS/RFC822/X-Unix,
                A=procmail -t -Y -a $h -d $u


m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
#/etc/rc.d/init.d/sendmail restart
#/etc/rc.d/init.d/saslauthd restart





# 기본 서비스

ntsysv 실행

auditd
crond
iptables
kudzu
named
network
pop3
saslauthd (보내는 메일서버 패스워드 인증?)
sendmail
sshd
syslog
telnet
vsftpd
xinetd



# 그룹사용자 추가
groupadd webhost





# path 추가

vi /etc/profile

pathmunge /usr/X11R6/bin after
pathmunge /usr/local/mysql/bin after
pathmunge /usr/local/apache/bin after





# vsftpd 설정 변경

vi /etc/vsftpd/vsftpd.conf

주석제거
xferlog_file=/var/log/vsftpd.log





# 재시작

sync
reboot

댓글