페도라 코어 5 설치기...#2(웹서버구축 APM)
리눅스 설치시에 웹서버를 패키지로 선택해서 설치할수도 있다...
아주 쉽게 간편하게 설치가 되지만... 여러모로 문제가 있다...
쉽게 이야기 해서 c++을 공부 안하고 .net부터 만지는 꼴이라고 할까???
기본에 충실해야 응용력이 살아난다...-_-
인터넷에 떠도는 메뉴얼로 고대로 따라해봤다...
# yum 설치를 위해 GPG-KEY 포함
rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora
------------> 참고로 위에 키포함을 안하고 yum을 계속 사용하다보면 만드시 에러가 난다...-_-
# yum 업데이트
yum -y update
------------> yum은 정말 대단한 유틸이다... 쩝... 필자에 경우도 rpm만으로 레드햇9에 모든 패키지를 설치했으나 온갖 의존성 문제와 잡다한 오류들때문에 주름살만 늘어갔었다...
Yum은 Yellowdog Updater, Modified의 약자로 rpm기반의 시스템을 위한
자동 업데이터이자 패키지 설치/삭제도구이다.
Yum은 자동적으로 의존성을 처리해주며 rpm 패키지들을 안전하게 설치, 삭제 및
업데이트하기 위해 반드시 해야할 일들을 스스로 해결한다.
필자에 경우 커널업데이트를 위해 의존성있는 모든 패키지에 업그레이드가 무서워 포기했었는데 시간만 있다면
얼마든지 해낼것 같다..ㅋㅋㅋ
# 한글 설정
/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
여기서 약간문제가 발생할 것이다. 다운 로드가 안된다.
필자는 위에 글을 약간 수정하여 다룬로드 받았다.
--wget http://ftp.superuser.co.kr/pub/mysql/mysql-4.1.16.tar.gz
위 처럼 하면 다운 로드가 될것이다.
참고로 superuser.co.kr 이란 사이트는 리눅스 전문 포탈 사이트다. 참고할 것이 많다.
그곳에 다운로드 페이지에 가면 거의 모든 소스들이 있다 참고하자!
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
여기도 약간 문제가 있다 아래 처럼 하여 다운 로드 하자
--wget http://ftp.superuser.co.kr/pub/apache/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
여기서 잠깐
아래에 있는 이쯤에서 에러가 났었는데.... 이글은 약간 위치가 잘못되있을수 있다.
apachectl을 가동하면 아래같은 에러가 난다.
아래에 쓰여져 있는것처럼 Selinux를 수정하고 컴퓨터를 다시키자. 필자는 설치가 끝나고 컴퓨터를
재시작했다. 그러면 아래와 같은오르는 안나올 것이다.
-------------> 이쯤에서 에러가 났었는데 .so cannot restore segment prot after reloc: Permission denied
이런 에러가 난다면 현재 Selinux환경이 활성화 때문이다.
Selinux활성화 상태에서 apache를 구동하는 방법은 조금 복잡.
그냥 Selinux를 비활성화 시키고 재부팅하면 정상적으로 구동된다.
먼저, 콘솔상태라면..
/etc/sysconfig/selinux 파일을 열어서
SELINUX=enforcing 부분을 아래와 같이 변경.
SELINUX=disabled
이와같이 변경한 다음에 재시작.
disabled 대신에 Permissive 라고 입력해도 된다.
그럼 다른 설치를 계속...
vi /usr/local/apache/conf/httpd.conf
수정
DirectoryIndex index.html index.htm index.php
수정 (public_html -> www)
UserDir 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 이렇게 설정합니다.
약간 방법이 틀리지만 위에 있는
.so cannot restore segment prot after reloc: Permission denied
란 오류가 나오면 컴퓨터를 재작동 안하고 아래의 ZendOptimizer 를 설치하면서 apachectl이 가동된다 그러면 아파치는작동이 된다.
# 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 을 설치 하지 않았다.그리고 그와 연관된 httpd.conf 수정도 하지 않았다. 한 마디로 여기서 끝을 내었다. 하지만 작동 하는데 무리는 없었다.
ftp는 설치 하는건 언급하지 않겟다.
그리고 홈페이지가 외부에서 보이지 않는다면 방어벽 설정의 문제일 것이다
setup을 눌러서 방어벽에서 사용자 설정에 들어가 http란 문구에 * 표시를 하고 정상적으로 종료를 하면 외부에서 보이는데도 무리가 없을 것이다.
현제 이설치기는 삼성 smart server zss122 란 컴퓨터에 설치한 설치기다.
사양에 대한 설치나 다른 여타 기타에 대한 전문 지식이 없는 필자로선
설치된게 신기하기만 하다.일단 다운로드 받을수 있게 해 놓은 화일을 참조 하고 설치해보자.
# 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 경로를 지정해준다.
------>경로 지정법
# vi Makefile
APXS=/usr/local/apache/bin/apxs
APACHECTL=/usr/local/apache/bin/apachectl
절대경로로 수정한 다음 저장 하고 다시 make install 실행
(참고 인스톨시 에러가 발생한다. 그리고 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
ThrottlePolicy Volume 500M 1d
SetHandler throttle-status
SetHandler throttle-me
SetHandler throttle-me
ServerAdmin root@xxx.com
ServerName xxx.com
DocumentRoot /home/xxx
# 하루 500M
ThrottlePolicy Volume 500M 1d
# 하루 천번
ThrottlePolicy Request 1000 1d
여기서 잠깐 필자는 quota 설정을 하지 않았다.
혹시 하게 된다면
설정을 마친후,
mount -o remount /home
를 실시 했을때에 오류가 난다면 quota 설정을 하지 말라고 추천하겟다.
오류가 나오는 상태에서 아래와 같은 설정이 남아있으면
컴퓨터 부팅시 오류로 부팅도 안된다. 그리고 read-only 화일이라 수정도 안된다.
한마디로 컴퓨터 다시 밀어야 하는 사태가 벌어진다. 필자도 이것때문에 2시간 이상을
허비하고 말았다.
# 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
***이제 설치가 다 되었으면 웹브라우저에 localhost를 입력하면 아파치 테스트 페이지가 나온다...
php테스트는 다 알겠지만...-_-
phpinfo();
?>
내용에 페이지를 하나 작성해서 띄어보면 끝~~~~
APM설치 도움 : PHPSCHOOL
서버점검 아찌들한테 배운 crontab에 대해서 정리합니다.
유닉스나 리눅스에는 매일 혹은 매주, 아니면 한달에 한번 등등 주기적으로 해야 하는 작업을 주는 cron이라는 도구가 있습니다.
(윈도우에 autoexec.bat과 비슷하지만...crond라는 프로세스 때문에...
부팅될때만이 아닌 스케줄링 프로그램과 같은 역활을 합니다.)
그러면 간단한 사용방법과 응용법에 대해 살펴보도록 하죠,
cron을 쓰려면 crontab이라는 명령을 이용합니다...
*TIP = 유닉스나 리눅스에는 man이라는 명령어가 있습니다.
어떤 명령어에 사용법을 보여주는 아주 좋은 것이지요...
crontab -(option) (user) //이런식입니다.
root로 로긴하셨다면 그냥 crontab -e 하시면 root로 정의 되있는 crontab을 설정 편집할수 있습니다.
하지만 유닉스(solaris6.x)같은 경우 editor를 설정해줘야 하는데
잠깐 집고 넘어가겠습니다...
*클론탭 위치 = var/spool/cron/crontabs
sh //쉘을 실행합니다.
editor = vi;export editor
위에 export라는 명령어는 저도 잘 이해 못하고 있지만...
서로 다른 쉘 사이에 명령어나 데이터를 쓸수 있게 해줍니다...
맞나? ㅡㅡㅋ
어쨋든 이렇게 하고 쉘에서 나와 crontab -e 를 실해하면 됩니다...
리눅스 같은 경우 별다른 설정 없이 그냥 하시면 됩니다...
crontab -l // 클론 설정되어 있는 것을 보여줍니다.
이해가 잘 안되시는 분들을 위해 좀더 쉽게 설명하면...
실행될 프로그램이나 쉘,프로세서들을 파일 하나(*이것이 쉘 스크립트 입니다.) 에 작성하고 그 스크립트를 클론탭에 설정해놓으면 정해진 시간에 실행 되는 것입니다....
쉘에 관해서는 저도 잘 몰라서 천천히 공부하려고 합니다...
간단한 파일 시스템 백업을 예로 하죠...
backup이라는 폴더를 만들어주거나 새로운 하드로 마운트 해줍니다.
backup폴더안에 daily_backup이라는 파일을 만들어 줍니다...
vi로 백업할 내용을 적어줍니다...
ex) echo "backup start"
tar cvf /backup/`date +%y%m%d`.tar /dev/hda
echo "backup done"
이해가 잘 안가실테데...
백업은 ufsdump나 tar나 dump등 마음대로 하십쇼....
위와 같이 하면 backup 폴더에 /dev/hda에 내용이 당일 날짜에 tar파일이 생깁니다.
ex)030601.tar
그다음 만든 쉘스크립트(daily_backup)에 실행 속성을 줘야 합니다...
아시는분은 아시겠지만 chmod로 설정합니다...
chmod 777 daily_backup 이나 chmod a+x daily_backup등으로 하면 됩니다...
리눅스 같은 경우 파일 색깔이 변하죠...
그다음 이제 대망에 클론탭 삽입만 하면 됩니다...
crontab -e 를 실행하셔서...다음 과 같이 추가합니다...
59 23 * * * /backup/daily_backup
23시59분애일 애월 매요일 실행하라는 뜻입니다..
추가하고 저장하시면 끝입니다...
그리고 crond 가 실행중인지 체크하세요..
ps -ef | grep cron




