- APC(Alternative PHP Cache) 설치
APC를 다운로드 후 설치를 진행합니다.
http://pecl.php.net/package/APC
[root@yongbok ~]# cd /usr/local/src
[root@yongbok ~]# wget http://pecl.php.net/get/APC-3.1.3p1.tgz
[root@yongbok ~]# tar xzvf APC-3.1.3p1.tgz
[root@yongbok ~]# cd APC-3.1.3p1
[root@yongbok ~]# /usr/local/php5/bin/phpize
[root@yongbok ~]# ./configure --enable-apc --with-php-config=/usr/local/php5/bin/php-config
[root@yongbok ~]# make && make install
Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
[root@yongbok ~]# ls -l /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613 | grep apc
-rwxr-xr-x 1 root  wheel  542184  1 25 02:54 apc.so

php.ini 파일에 아래 내용을 추가 합니다.
[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[APC]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613
extension=apc.so
apc.mode=shm
apc.file_md5=1
apc.ttl=3600
apc.idle=900
apc.hash_buckets=256
apc.max_file_size=1024
apc.cachedir=/tmp
apc.mmap_file_mask=/tmp/apc.XXXXXX

아파치를 재시작 후 phpinfo 를 이용하여 APC를 확인합니다.
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart
[root@yongbok ~]# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php
사용자 삽입 이미지

2010/01/25 05:00 2010/01/25 05:00
간만에 MRTG 를 설치 후 cfg설정 파일을 생성 도중 아래와 같은 에러를 만나 볼수 있었습니다.
[root@yongbok ~]# cfgmaker public@localhost > /usr/local/etc/mrtg/ruo91.cfg
Can't locate SNMP_util.pm in @INC (@INC contains: /usr/local/bin/../lib/mrtg2 /usr/local/bin /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 .) at /usr/local/bin/cfgmaker line 105.
SNMP_util.pm 파일을 찾을수 없다는 에러가 나오니 Ports 에서 아래처럼 설치 해주어도 결과는 같았습니다.
[root@yongbok ~]# cd /usr/ports/net-mgmt/p5-SNMP-Util && make install clean

구글링 하던 도중에 외국 포럼에서 해결책을 찾았습니다.
http://www.directadmin.com/forum/showthread.php?t=7843&page=11

SNMP Session 을 설치하면 해결 됩니다.
[root@yongbok ~]# make -C /usr/ports/net-mgmt/p5-SNMP_Session install clean
2010/01/20 22:27 2010/01/20 22:27
로그 분석기인 AWStats 에 GeoIP 를 사용하여 국가별로 어디서 접속했는지 통계를 낼수가 있습니다.
(기본으로 AWStats 를 설치하게 되면 GeoIP 플러그인은 비활성화 되어 있기 때문에 수동으로 바꿔줘야 합니다.)
 
GeoIP 바이너리 파일을 다운로드 하고 적당한 곳에 압축을 풀어줍니다.
[root@yongbok ~]# mkdir -p /usr/local/share/GeoIP
[root@yongbok ~]# cd /usr/local/share/GeoIP
[root@yongbok ~]# wget \
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
[root@yongbok ~]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
[root@yongbok ~]# gzip -d GeoIP.dat.gz
[root@yongbok ~]# gzip -d GeoLiteCity.dat.gz
[root@yongbok ~]# ls -l /usr/local/share/GeoIP
total 29056
-r--r--r--  1 root  wheel   1156240  1 12 18:25 GeoIP.dat
-r--r--r--  1 root  wheel  28543655  1  4 16:06 GeoLiteCity.dat

GeoIP 플러그인을 사용하기 위해 AWStats 설정 파일에 1312라인과 1352라인에 적절하게 수정합니다.
[root@yongbok ~]# vi /etc/awstats/awstats.ruo91.conf
# Plugin: GeoIP
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"

# Plugin: GeoIP_City_Maxmind
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat"

AWStats 업데이트 합니다.
[root@yongbok ~]# /usr/local/awstats/tools/awstats_updateall.pl now
Running '"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=ruo91 -configdir="/etc/awstats"' to update config ruo91
Create/Update database for config "/etc/awstats/awstats.ruo91.conf" by AWStats version 6.95 (build 1.943)
From data in log file "/home/apache2-log/www/www-access-2010-01-12.log"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 823)
Jumped lines in file: 823
 Found 823 already parsed records.
Parsed lines in file: 10
 Found 0 dropped records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 10 new qualified records.

웹에서 확인 해보면 됩니다.
http://www.yourdomain.com/awstats/awstats.pl?config=config_file_name
사용자 삽입 이미지

2010/01/12 21:05 2010/01/12 21:05
원격지에 있는 서버로 접속을 하기 위해선 SSH를 이용합니다. 하지만 서버의 비밀번호가 복잡하거나 길다면 입력하는 것이 짜증날수가 있는데 ssh-kegen 을 이용하여 미리 키 파일을 만들어 비밀번호 입력할 필요없이 로그인을 가능하게 할수 있습니다.

- 서버 설정
개인키 파일을 만들어 줍니다.
[root@yongbok ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):      Enter 을 눌러 넘어갑니다.
Enter passphrase (empty for no passphrase):                  비밀번호를 입력 합니다.
Enter same passphrase again:                                       비밀번호를 재입력 합니다.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c0:eb:4f:42:3a:b4:26:e9:80:95:4c:a8:10:8e:d8:85 root@yongbok.net
The key's randomart image is:
+--[ RSA 2048]----+
|.  ..            |
|++E. .           |
|=.o   o          |
|oo .   o         |
|. + . o S        |
|.. o =           |
|o o = o .        |
| o o . +         |
|  .     .        |
+-----------------+

사용자 삽입 이미지

 id_rsa, id_rsa.pub 두개의 파일이 생성 된걸 확인 할수 있습니다.

[root@yongbok ~]# ls -l ~/.ssh
total 4
-rw-------  1 root  wheel  1743  1 11 22:51 id_rsa
-rw-r--r--  1 root  wheel   398  1 11 22:51 id_rsa.pub

id_rsa.pub 파일을 아래와 같이 적당하게 복사합니다.
[root@yongbok ~]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

id_rsa 파일을 FTP 또는 SCP 로 안전하게 클라이언트에 복사를 해옵니다.

ssh 설정 파일에서 대략 55번 라인에 AuthorizedKeysFile 파일 부분을 주석 해제 처리 합니다.
(ee 는 FreeBSD의 기본 에디터이며 리눅스의 경우 vi, vim, nano 등등을 사용하시면 되겠습니다.)
[root@yongbok ~]# ee /etc/ssh/sshd_config

사용자 삽입 이미지

설정 적용을 위해 ssh 를 재시작 해줍니다.
리눅스
[root@yongbok ~]# /etc/init.d/sshd restart

FreeBSD
[root@yongbok ~]# /etc/rc.d/sshd restart
Stopping sshd.
Starting sshd.

- 클라이언트 설정
원격지에 있는 서버로 SSH 접속을 하기 위해 PuTTY 프로그램을 다운받아 설치 후 사용자 환경에 맞게 설정을 해줍니다.
PuTTY 는 KLDP에서 한글판으로 다운로드 하실수 있습니다.
http://kldp.net/projects/iputty/download
설치 후 윈도우 시작메뉴 - > 프로그램 -> 한글 PuTTY - > PuTTYgen 을 실행합니다.
PuTTY Key 생성 프로그램이 나오면 Load 를 눌러 복사한 rsa 키 파일을 불러옵니다.
(필자는 편의상 id_rsa 파일을 ruo91_rsa 로 변경하여 불러 왔습니다.)
사용자 삽입 이미지

 불러옴과 동시에 Passphrase 창이 뜨는데 처음에 ssh-kegen 으로 만들때 입력한 비밀번호를 입력 해줍니다.
사용자 삽입 이미지

 정상적으로 입력하여 주면 아래와 같이 공지사항 메세지가 나오게 됩니다.
사용자 삽입 이미지

 아래의 Key passphrase 와 Confirm passphrase 두곳 값들을 모두 초기화 시켜 줍니다.
즉, 아무것도 입력 없이 만들어 주게 되면 서버에 로그인시 공개키 확인 후 바로 로그인 되도록 해줍니다.
사용자 삽입 이미지

 위의 Save private key 버튼을 눌러 ruo91.ppk 라는 이름으로 파일을 저장 시켜줍니다.
사용자 삽입 이미지

 이제 PuTTY Key Generator 를 닫고 PuTTY 를 실행 합니다.
이전에 사용한 세션을 불러옵니다. (세션 정보가 없다면 새로 만듭니다.)
사용자 삽입 이미지

왼쪽 접속 하위 메뉴의 SSH - > 인증 쪽에 들어가서 인증 개인키 파일을 찾아 읽어옵니다.
사용자 삽입 이미지

변경한 설정을 기존 세션에 저장 해줍니다.
사용자 삽입 이미지

 변경된 세션에 접속 해보면 비밀번호를 입력 하지 않아도 로그인이 되는 것을 확인 할수 있습니다.
사용자 삽입 이미지

2010/01/11 23:42 2010/01/11 23:42
젠투 리눅스에서 NAT(Network Address Translation) 을 사용하는 방법입니다.
NAT을 사용하기 위해서는 커널에 MASQUERADE가 활성화 되어있어야 합니다만.. 커널에 기본적으로 모듈로 올라와 있더군요..

- 네트워크 설정
외부, 내부 네트워크 설정을 해줍니다.
ruo91 ~ # nano /etc/conf.d/net
config_eth0="dhcp"
config_eth1="192.168.0.1 netmask 255.255.255.0"

런레벨에 eth0, eth1 인터페이스를 부팅시 자동 시작 하도록 설정 해줍니다.
ruo91 ~ # rc-update add net.eth0 default
ruo91 ~ # rc-update add net.eth1 default

- iptables 설정
트래픽 정책 설정을 해줍니다.
ruo91 ~ # iptables -P INPUT ACCEPT
ruo91 ~ # iptables -P OUTPUT ACCEPT
ruo91 ~ # iptables -P FORWARD DROP

외부와 내부 인터페이스를 지정합니다.
ruo91 ~ # export WAN=eth0
ruo91 ~ # export LAN=eth1

LAN 설정
ruo91 ~ # iptables -I INPUT 1 -i ${LAN} -j ACCEPT
ruo91 ~ # iptables -I INPUT 1 -i lo -j ACCEPT
ruo91 ~ # iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
ruo91 ~ # iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

외부에서 SSH 접속 허용
ruo91 ~ # iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

포워딩과 마스커레이드를 설정 합니다.
ruo91 ~ # iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
ruo91 ~ # iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
ruo91 ~ # iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
ruo91 ~ # iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

커널에서 아이피 포워딩을 사용 하도록 설정합니다.
ruo91 ~ # echo 1 > /proc/sys/net/ipv4/ip_forward
ruo91 ~ # for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

iptables 룰을 저장하고 부팅시 자동으로 실행 하도록 런레벨에 등록합니다.
ruo91 ~ # /etc/init.d/iptables save
ruo91 ~ # rc-update add iptables default

sysctl.conf 에 아이피 포워딩 설정을 활성화 해줍니다.
ruo91 ~ # nano /etc/sysctl.conf
#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1

내부 LAN 인터페이스를 시작 합니다.
ruo91 ~ # /etc/init.d/net.eth1 start
 또는 재부팅 하면 됩니다.
ruo91 ~ # shutdown -r now

속도 측정 해본 결과 만족한 결과가 나오네요!! 역시 젠투인듯.. (-ㅅ-)/

사용자 삽입 이미지
참고

http://www.gentoo.org/doc/en/home-router-howto.xml

2010/01/06 02:30 2010/01/06 02:30
젠투 리눅스에서 한글 로케일 설정 하는 방법입니다.

현재 로케일을 확인 해봅니다.
ruo91 ~ # locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

00basic 파일에 아래 내용을 추가 합니다.
ruo91 ~ # nano /etc/env.d/00basic
LC_ALL="ko_KR.EUC-KR"
LC_LANG="ko_KR.EUC-KR"
LC_MESSAGE="ko_KR.EUC-KR"
LANG="ko_KR.EUC-KR"

적용을 위해 업데이트 해줍니다.
ruo91 ~ # env-update
>>> Regenerating /etc/ld.so.cache...

 재부팅 하거나 원격을 재로그인 하면 해당 로케일이 반영 됩니다.
ruo91 ~ # locale
LANG=ko_KR.EUC-KR
LC_CTYPE="ko_KR.EUC-KR"
LC_NUMERIC="ko_KR.EUC-KR"
LC_TIME="ko_KR.EUC-KR"
LC_COLLATE="ko_KR.EUC-KR"
LC_MONETARY="ko_KR.EUC-KR"
LC_MESSAGES="ko_KR.EUC-KR"
LC_PAPER="ko_KR.EUC-KR"
LC_NAME="ko_KR.EUC-KR"
LC_ADDRESS="ko_KR.EUC-KR"
LC_TELEPHONE="ko_KR.EUC-KR"
LC_MEASUREMENT="ko_KR.EUC-KR"
LC_IDENTIFICATION="ko_KR.EUC-KR"
LC_ALL=ko_KR.EUC-KR
2010/01/06 02:12 2010/01/06 02:12