[Nginx ¼³Ä¡ ¹× ¼º´ÉÅ×½ºÆ®]
1.¼³Ä¡È¯°æ
CPU : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GH (°¡»óÈ È¯°æ)
Ram : 1G
Os : Sulinux 2014 R6 64bit
2. Nginx ¼Ò°³

"´õ ÀûÀº ÀÚ¿øÀ¸·Î ´õ ºü¸£°Ô µ¥ÀÌÅ͸¦ ¼ºñ½º ÇÒ ¼ö ÀÖ´Ù."
nginx ´Â Â÷¼¼´ë À¥¼¹ö·Î ºÒ¸®°í ÀÖÀ¸¸ç, À§ ±×·¡ÇÁ¿¡¼µµ ¾Ë¼ö ÀÖµíÀÌ ²ÙÁØÇÑ »ó½Â¼¼¸¦ º¸À̰í ÀÖ´Ù. Nginx ´Â ·¯½Ã¾ÆÀÇ °³¹ßÀÚÀÌÀÚ ¼¹ö°ü¸®ÀÚÀÎ ÀÌ°í¸£ ½Ã¼ÎÇÁ(Igor Sysoev)¿¡ ÀÇÇØ 2002³âºÎÅÍ °³¹ßµÇ±â ½ÃÀÛÇß´Ù°í Çϸç, 2004³â ù ¸±¸®Áî ÀÌ·¡, 2012³â Àü¼¼°èÀûÀ¸·Î ¾à 12% ÀÌ»óÀÇ Á¡À¯À²À» ±â·ÏÇϰí ÀÖ´Ù ÇÑ´Ù. ÇöÀç Apache¿¡ ÀÖ¾î °¡Àå À§ÇùÀÌ µÇ°í ÀÖ´Â Á¸Àç·Î ±ÞºÎ»ó ÁßÀÌ´Ù.
nginx ´Â »õ·Î¿î ½Ã´ëÀÇ ¿äû¿¡ ºÎÀÀÇØ¼ ¸¸µé¾îÁø À¥¼¹öÀÌ´Ù. °³¹ßÀÇ ¸ðµç ¸ñÀûÀÌ ³ôÀº ¼º´É¿¡ ¸ÂÃçÁ® ÀÖ´Ù. ±×¸®°í Àß »ç¿ëÇÏÁö ¾Ê´Â ±â´ÉÀº °ú°¨ÇÏ°Ô Á¦¿ÜÇß´Ù. ´öºÐ¿¡ Æø¹ßÀûÀÎ Áõ°¡¼¼¿¡ ÀÖ´Â ÀÎÅÍ³Ý ¼ºñ½º¸¦ ÁöÅÊÇϴµ¥ ÀûÇÕÇÏ´Ù.
3. ¼³Ä¡
DB ¸¦ Á¦¿ÜÇÑ ±âº»ÀûÀÔ À¥¼ºñ½º¸¦ ÇÒ¼öÀִ ȯ°æÀ» ±¸¼ºÇÒ °ÍÀÌ´Ù. nginx + php ¼³Ä¡¸¦ ¸ñÀûÀ¸·Î ÇÑ´Ù.
3.1 ±âº»ÆäŰÁö »èÁ¦
±âÁ¸¿¡ yum À¸·Î ¼³Ä¡µÈ ÆÐŰÁö¸¦ »èÁ¦Çϵµ·Ï ÇÑ´Ù. À̰÷¿¡¼´Â nginx + php ¸¸ ¼³Ä¡Çϱ⠶§¹®¿¡ ½Ã½ºÅÛ ÀÚ¿øÀ» È¿À²ÀûÀ¸·Î »ç¿ëÇϱâÀ§Çؼ ºÒÇÊ¿äÇÑ ÇÁ·Î¼¼½º´Â »èÁ¦Çϵµ·Ï ÇÑ´Ù.
yum -y remove httpd*
yum -y remove mysql*
yum -y remove php*
3.2 ±âº» ¶óÀ̺귯¸® ¼³Ä¡
nginx ¹× php ´Â ´Ù¾çÇÑ ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ¿© ¼³Ä¡¸¦ ÁøÇàÇÑ´Ù. óÀ½ os ¸¦ ¼³Ä¡ÇÏ°í ³ ÀÌÈÄ¿¡ ±âÁ¸¿¡ ¼³Ä¡µÈ ¶óÀ̺귯¸®µéÀÌ ÀÖÀ»¼öÀÖÁö¸¸ ¾÷µ¥ÀÌÆ® ¹× ºüÁø ¶óÀ̺귯¸®µéÀ» ¼³Ä¡ÇÑ´Ù.
yum -y install zlib zlib-devel libxml2 curl libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel freetype-utils fontconfig fontconfig-devel gd gd-devel php-gd libmcrypt libmcrypt-devel gcc g cpp gcc-c compat-gcc-32-g77 flex glibc openssl openssl-devel gmp gmp-devel mhash mhash-devel php-soap libc-client* net-snmp* pcre-devel.x86_64
3.3 php ¼³Ä¡
ÀÌÁ¦ nginx ÀÇ ´ëÇ¥ÀûÀÎ À¥¾ð¾îÀÎ php ¸¦ ¼³Ä¡Çϵµ·Ï ÇϰڴÙ. ¼³Ä¡ ¹öÀüÀº 5.5.x ¹öÀüÀ» »ç¿ëÇÏ¸é µÈ´Ù.
3.3.1 ´Ù¿î·Îµå
°ø½ÄȨÆäÀÌÁö¿¡¼ ´Ù¿î·Îµå Çϵµ·Ï ÇÑ´Ù.
wget http://kr1.php.net/get/php-5.5.7.tar.gz/from/this/mirror
ÆÄÀϸíÀÌ mirror µÇ¾îÀֱ⠶§¹®¿¡ º¯°æÇØÁØ´Ù.
mv mirror php-5.5.7.tar.gz
3.3.2 ¶óÀ̺귯¸® ¸µÅ©
php configration °úÁ¤¿¡¼ ¾Æ·¡¿Í °°Àº ¿¡·¯¸Þ½ÃÁö°¡ È®ÀÎÀÌ µÉ°ÍÀÌ´Ù. ¾Æ·¡¿Í °°ÀÌ ¸µÅ© ÇØÁØ´Ù.
configure: error: libjpeg.(a|so) not found
ln -s /usr/lib64/libjpeg.so /usr/lib/
ln -s /usr/lib64/libpng.so /usr/lib/
3.3.3 mcrypt.h ¼³Ä¡
wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz
tar xvfz libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure && make && make install
3.3.4 ȯ°æ ¼³Á¤ ¹× ¼³Ä¡
tar xvfz php-5.5.7.tar.gz
cd php-5.5.7
./configure --prefix=/usr/local/php-5.5.7 --with-config-file-path=/usr/local/lib --with-gd --with-freetype-dir --with-zlib --enable-sockets --enable-gd-native-ttf --with-png-dir --with-jpeg-dir --enable-sigchild --with-gettext --enable-mbstring --enable-inline-optimization --enable-bcmath --enable-shmop --enable-calendar --enable-ftp --with-gdbm --with-iconv --enable-mbregex --with-openssl --with-curl --enable-soap --disable-debug --with-mcrypt --with-kerberos --enable-zip --with-zlib-dir --enable-exif --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody && make && make install
php µð·ºÅ丮·Î ¸µÅ© °É¾îµÐ´Ù. À̰÷Àº ´Ü¼øÈ÷ »ç¿ë»óÀÇ ÆíÀǸ¦ À§Çؼ Çϴ°ÍÀÌ´Ù.
ln -s /usr/local/php-5.5.7 /usr/local/php
php.ini ȯ°æ¼³Á¤ ÆÄÀÏÀº ¼³Ä¡µÈ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù.
cp php.ini-production /usr/local/lib/php.ini
php.ini ÆÄÀÏÀ» ¿¾î¼ ¸î°¡Áö ¼³Á¤À» º¯°æÇØÁØ´Ù.
vi /usr/local/lib/php.ini
* short_open_tag
short_open_tag = On
* error_reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT
* display_errors
display_errors = On
* date.timezone
date.timezone = "Asia/Seoul"
-- ¿©±â¼ ºÎÅÍ php-fpm ¼³Á¤
ÀϹÝÀûÀ¸·Î nginx´Â µ¿ÀûÀÎ ÆäÀÌÁö ±¸ÇöÀÌ ¾î·Æ´Ù. À̺κÐÀ» ÇØ°áÇϱâ À§Çؼ fast-cgi ±â´ÉÀ» »ç¿ëÇÏ´Â php-fpm À» ¼³Ä¡ÇؾߵȴÙ
cd sapi/fpm
cp -a php-fpm.conf /usr/local/php/etc/php-fpm.conf
* php-fpm (start|stop) µîÀÇ ½ºÅ©¸³Æ® Áö¿øÀÌ ¾øÀ¸¹Ç·Î Á÷Á¢ ÀÛ¼º
— ¿©±â¼ ºÎÅÍ php-fpm ½ÇÇà ½ºÅ©¸³Æ® /etc/rc.d/init.d/php-fpm
vi /etc/rc.d/init.d/php-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fpm
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
prefix=/usr/local/php
exec_prefix=${prefix}
php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_ConF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
"created")
if [ -f "$2" ] ; then
try=""
break
fi
;;
"removed")
if [ ! -f "$2" ] ; then
try=""
break
fi
;;
esac
echo -n .
try=`expr $try 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
#$php_fpm_BIN --daemonize $php_opts
$php_fpm_BIN $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac
ÀúÀå ÈÄ
chmod 755 /etc/rc.d/init.d/php-fpm
3.4 Nginx ¼³Ä¡
3.4.1 ´Ù¿î·Îµå
°ø½ÄȨÆäÀÌÁö¿¡¼ °¡Àå ÃֽŹöÀüÀ» ¹Þ´Â°ÍÀ» ÃßõÇÑ´Ù.
wget http://nginx.org/download/nginx-1.9.5.tar.gz
tar xvfz nginx-1.9.5.tar.gz
cd nginx-1.9.5
./configure --prefix=/usr/local/nginx-1.9.5 --user=nobody --group=nobody --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module && make && make install
°ü¸®¸¦ ÆíÇϱâ ÇϱâÀ§Çؼ ¸µÅ©¸¦ °É¾îÁÖµµ·Ï ÇÑ´Ù.
ln -s /usr/local/nginx-1.9.5 /usr/local/nginx
3.4.2 ȯ°æ¼³Á¤
vi /usr/local/nginx/conf/nginx.conf
-- ¿©±â¼ ºÎÅÍ nginx.conf ¿©±âºÎÅÍ
#user nobody;
# worker_processes 1; º»ÀÎÀÇ ½Ã½ºÅÛ È¯°æ¿¡ ¸Â°Ô ¼³Á¤ÇØÁÖ¸é µÈ´Ù.
worker_processes "4";
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 10240;
}
http {
index index.html index.php;
include mime.types;
default_type application/octet-stream;
log_format main "$remote_addr - $remote_user [$time_local] "$request" "
"$status $body_bytes_sent "$http_referer" "
""$http_user_agent" "$http_x_forwarded_for"";
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_http_version 1.0;
gzip_comp_level 9;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml rss text/javascript;
server {
listen 80;
client_max_body_size 50M;
client_body_timeout 600;
client_header_timeout 600;
server_name 192.168.0.71
root html;
index index.html index.php;
location ~ \.(php|html)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param scRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
3.4.3 ½ÇÇà ½ºÅ©¸³Æ®
nginx´Â ÀÚµ¿À¸·Î ½ºÅ©¸³Æ®°¡ »ý¼ºµÇ¾îÀÖÁö ¾Ê´Ù. ÀÌ ¶§¹®¿¡ °ø½ÄȨÆäÀÌÁö ¹®¼¿¡ ÀÖ´Â ½ºÅ©¸³Æ®¸¦ ÂüÁ¶ÇÏ¸é µÈ´Ù.
* ¿©±â¼ ºÎÅÍ ngnix ½ÇÇà ½ºÅ©¸³Æ® vi /etc/rc.d/init.d/ngnix
vi /etc/rc.d/init.d/ngnix
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
ÀúÀå ÈÄ
chmod 777 /etc/rc.d/init.d/ngnix
4. ¼º´ÉÅ×½ºÆ®
Áö±Ý±îÁö nginx¸¦ ¼³Ä¡¸¦ ¿Ï·áÇÏ¿´´Ù. ¿©±â¿¡¼´Â ¼³Ä¡µÈ nginx°¡ °ú¿¬ ¾î´ÀÁ¤µµÀÇ ¼º´ÉÀ» º¸¿©ÁÖ´ÂÁö Å×½ºÆ® ÇØº¸µµ·Ï ÇϰڴÙ. ¹°·Ð ¸®¾ó¼¹ö¸¸ÅÀÇ ¸¸Á·µµ¿Í ½Å·Ú¼ºÀ» ¾ò±â´Â Èûµé°ÚÁö¸¸, ´ë·«ÀûÀÎ ¼º´Éü°¨À» ÇÒ¼öÀÖÀ»°Í °°´Ù.
´Üµ¶À¸·Î Å×½ºÆ®¸¦ Çϱ⠺¸´Ù´Â ÇöÀç Àü¼¼°èÀûÀ¸·Î ¸¹ÀÌ »ç¿ëÇÏ´Â apache ¿Í ÇÔ²² ºñ±³¸¦ ÇØº¸µµ·Ï ÇϰڴÙ.
4.1 ¼³Ä¡È¯°æ ºñ±³
¾Æ·¡´Â nginx ¹× apache ¼³Ä¡È¯°æ ºñ±³ ³»¿ëÀÌ´Ù.
[nginx]
¹öÀü : 1.9.5 (ÇöÀç°¡Àå ÃֽŹöÀü 2015.10.21)
MPM : event
cpu : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz (°¡ÀåÈ pc)
ram : 1G
os : sulinux 2014 R6 (ÃÖ½ÅÄ¿³Î¾÷µ¥ÀÌÆ®)
¼³Ä¡ Á÷ÈÄ Æ©´×Àº °ÅÀÇ ÁøÇàµÇÁö ¾ÊÀ½.
[apache]
¹öÀü : 2.4.17 (ÇöÀç°¡Àå ÃֽŹöÀü 2015.10.21)
MPM : worker ¹× event
cpu : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz (°¡ÀåÈ pc)
ram : 1G
os : sulinux 2014 R6 (ÃÖ½ÅÄ¿³Î¾÷µ¥ÀÌÆ®)
<worker Æ©´×>
<IfModule mpm_worker_module>
StartServers 5
MinSpareThreads 100
MaxSpareThreads 500
ThreadsPerChild 25
MaxRequestWorkers 1024
MaxConnectionsPerChild 0
</IfModule>
<event Æ©´×>
<IfModule mpm_event_module>
ThreadLimit 100
StartServers 5
MaxRequestWorkers 5500
ServerLimit 200
MinSpareThreads 100
MaxSpareThreads 1000
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>
4.2 Å×½ºÆ® ÇÁ·Î±×·¥
vi test2.php
<?
$str=array();
for($i=1;$i<=100;$i++){
$str2+=$i%3;
$str[$i]=$str2;
}
echo "ok";
?>
4.3 ¼º´É Å×½ºÆ®
Å×½ºÆ®¿ë ¼º´ÉÅøÀº apache ¿¡ ±âº»ÀûÀ¸·Î Á¦°øµÇ´Â ab ¸¦ ÀÌ¿ëÇϵµ·Ï ÇÑ´Ù.
°¢°¢ 2¹ø¾¿ ÃÑ 6¹øÀÇ Å×½ºÆ®¸¦ ÁøÇàÇÏ¿´´Ù.
ab -n 10000 -c 100 http://192.168.0.71/test2.php
100°³ÀÇ ¾²·¹µå¸¦ ÀÌ¿ëÇÏ¿© 10.000 È£Ãâ.
ab -n 100000 -c 100 http://192.168.0.71/test2.php
100°³ÀÇ ¾²·¹µå¸¦ ÀÌ¿ëÇÏ¿© 100.000 È£Ãâ
4.4 °á°ú
total ½Ã°£.
| Nginx 1.9.5 | Apache worker | Apache event |
10.000 È£Ãâ | 12.313 seconds | 16.037 seconds | 13.386 seconds |
100.00 È£Ãâ | 135.425 seconds | 158.746 seconds | 145.933 seconds |
¼¹ö ºÎÇÏ(10.000À϶§) | load average: 0.59 | load average: 19.77 | load average: 1.48 |
¼¹ö ºÎÇÏ(100.000À϶§) | load average: 1.86 | load average: 121.44 | load average: 7.06 |
´Ü¼øÅ×½ºÆ® ÁøÇàÀ̾úÁö¸¸ »ý°¢º¸´Ù nginxÀÇ ¼º´ÉÀÌ apache º¸´Ù ¿ì¼öÇÏ´Ù´Â°É ¾Ë¼ö ÀÖ¾ú´Ù.
È®½ÇÈ÷ ¾²·¹µå¹æ½ÄÀ» »ç¿ëÇÏ´Â apacheÀÇ worker ¹æ½ÄÀº ½Ã½ºÅÛ ºÎÇÏ ¹× 󸮽ð£ÀÌ °¡Àå ¸¹ÀÌ ³ªÅ¸³ª°Ô µÇ¾ú´Ù. ¹Ý¸é¿¡ À̺¥Æ® ¹æ½ÄÀ» »ç¿ëÇÏ´Â apache ¹× nginx ´Â 󸮽𣵵 ª°í, ½Ã½ºÅÛ ºÎÇÏ ¸é¿¡¼ ¿ì¼öÇÑ ¼º´ÉÀ» º¸¿©ÁÖ´Â°É È®ÀÎÇÏ¿´´Ù. ÀÌ Å×½ºÆ®¸¦ Æò±Õ 10¹ø Á¤µµ Å×½ºÆ® ÇÏ¿´À¸¸ç, ÇØ´ç Æò±ÕÀ» °è»êÇÑ °ÍÀÌ´Ù.
Á¢¼ÓÀÚ°¡ ¸¹À¸¸ç, cpu ¸¦ ¸¹ÀÌ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼´Â apache event ¹æ½ÄÀ̳ª ¶Ç´Â nginx ¸¦ »ç¿ëÇÏ¸é ³ôÀº ÆÛÆ÷¸Õ½º¸¦ º¸¿©ÁÖÁö ¾ÊÀ»±î »ý°¢ µÈ´Ù.
ÀÛ¼ºÀÚ : ¼ºñ´Ô (dslee@linux.co.kr)