메뉴 건너뛰기

조회 수 15291 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

CentOS6.6 64bit 최소설치를 한 상태에서 최신 APM 소스 설치를 진행해 보았습니다.

CentOA6.6. 최소설치에 대해서는 많은 블로거들이 공개하니 여기선 언급하지 않겠습니다....^^;;

아래 작업중 에러가 나는 프로그램에 대해서는 첨부한 파일을 이용해서 설치 해 주시면 에러없이 설치가 가능 합니다.

APM 설치 작업중 복사&붙혀넣기 하실때 # 은 제외하고 작업해 주셔야 합니다.


@ apache /usr/local/apache/
@ mariadb /usr/local/mariadb/
@ php /usr/local/php/
@ apache-log /logs/
@ db 파일 저장 위치 /usr/local/mariadb/data


@ 패키지 제거 및 설치
# rpm -qa httpd php mysql
# yum remove -y httpd php mysql
# yum -y install ORBit2 PyXML a2ps acpid alsa-lib amtu aspell at atk audiofile audit-libs-python autoconf* autofs automake* avahi avahi-glib bc bind bind-chroot bind-libs bind-utils cairo ccid compat-libstdc++-33 conman cpp cpuspeed crash createrepo crypto-utils cryptsetup-luks cups-libs cvs cyrus-sasl-md5 cyrus-sasl-plain db4-devel dbus-python device-mapper-multipath dhcp dhcp-devel dialog dmraid dos2unix dosfstools dump e2fsprogs-devel ed eject elfutils elfutils-libs enscript expat-devel expect expect-devel expectk fetchmail file finger flex fontconfig fontconfig-devel foomatic ftp gcc gcc-c++ gdb gdbm-devel gettext gfs2-utils glib2-devel glibc-devel glibc-headers gmp-devel gnutls gpm gtk2 hal hdparm hesiod hicolor-icon-theme imake iptraf iptstate ipvsadm irqbalance jwhois kernel-devel kernel-headers keyutils-libs-devel kpartx krb5-devel krb5-workstation ksh lcms lftp libICE libSM libX11 libX11-devel libXau libXau-devel libXcursor libXdmcp libXdmcp-devel libXext libXfixes libXft libXi libXinerama libXpm libXpm-devel libXrandr libXrender libXt libXxf86vm libaio libaio-devel libart_lgpl libbonobo libc-client libcurl-devel libdaemon libevent libfontenc libgomp libgssglue libhugetlbfs libhugetlbfs-devel libidn-devel libmng libnl libnl-devel libpcap libselinux-devel libselinux-python libsepol-devel libsmi libstdc++-devel libsysfs libtiff libtool libtool-ltdl libwvstreams libxml2-devel libxml2-python libxslt libxslt-python lksctp-tools logwatch lrzsz lsof m2crypto mailcap mailx make nasm man man-pages man-pages-ko mc mcstrans mdadm memtest86+ mesa-libGL mesa-libGL-devel mgetty microcode_ctl mkbootdisk mlocate mrtg mt-st mtools mtr mutt nc ncurses-devel net-snmp-libs netpbm nfs-utils nfs-utils-lib nmap nscd nss_db ntp ntsysv numactl oddjob openssh-clients openssl-devel pam-devel pam_krb5 pam_passwdqc pam_pkcs11 pango parted parted-devel patch pax pciutils pcsc-lite perl perl-Archive-Tar perl-BSD-Resource perl-Compress-Zlib perl-DBI perl-Digest-HMAC perl-Digest-SHA1 perl-HTML-Parser perl-HTML-Tagset perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-IO-Zlib perl-Net-IP perl-Net-SSLeay perl-Newt perl-Socket6 perl-String-CRC32 perl-URI perl-libwww-perl pkgconfig pm-utils postgresql-libs prelink procmail psacct psutils pulseaudio-esound-compat pyOpenSSL pykickstart pyorbit pyparted python-pyblock pyxf86config quota rdate rdist readahead rmt rpcbind rpm-build rsh rsync rusers rwho samba samba-client samba-common samba-swat sendmail sendmail-cf setools setserial setuptool shared-mime-info sip sos spamassassin squashfs-tools strace stunnel symlinks sysfsutils syslinux sysstat system-config-date system-config-firewall talk tcl tcp_wrappers tcpdump tcsh telnet telnet-server time tk tmpwatch traceroute tree ttmkfdir unix2dos unixODBC unzip usbutils usermode vconfig vim-common vim-enhanced vsftpd wget wireless-tools words xinetd xorg-x11-proto-devel yp-tools ypbind ypserv zip zlib-devel GConf2 ImageMagick ImageMagick-perl avahi-libs bwidget cloog-ppl crda cryptsetup-luks-libs cups db4-cxx deltarpm desktop-file-utils device-mapper-multipath-libs dmidecode dmraid-events docbook-dtds flac foomatic-db foomatic-db-filesystem foomatic-db-ppds ghostscript ghostscript-fonts gnome-doc-utils-stylesheets gnome-python2 gnome-python2-canvas gnome-user-docs gnome-vfs2 gpm-libs groff-perl gstreamer gstreamer-tools hal-info hal-libs html2ps hunspell iw jasper-libs kpathsea lcms-libs libIDL libX11-common libXcomposite libXdamage libXdamage-devel libXext-devel libXfixes-devel libXfont libXres libXtst libXxf86vm-devel libasyncns libcanberra libcanberra-gtk2 libcom_err-devel libcroco libdrm-devel libedit libglade2 libgnomecanvas libgsf libnetfilter_conntrack libnfnetlink libnotify libogg libpaper librsvg2 libsamplerate libsndfile libtalloc libtasn1 libtdb libthai libtirpc libusb1 libvorbis libwmf-lite libwnck libxcb libxcb-devel lm_sensors-libs mesa-dri-drivers mozilla-filesystem mpfr mrtg-libs netpbm-progs notification-daemon ntpdate openjpeg-libs pcsc-lite-libs perl-Compress-Raw-Zlib perl-Crypt-OpenSSL-Bignum perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-Random perl-Date-Manip perl-Digest-SHA perl-Encode-Detect perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-IO-Compress-Base perl-IO-Compress-Zlib perl-Mail-DKIM perl-MailTools perl-Module-Pluggable perl-Net-DNS perl-Net-LibIDN perl-NetAddr-IP perl-Package-Constants perl-Pod-Escapes perl-Pod-Simple perl-SNMP_Session perl-Test-Harness perl-Time-HiRes perl-TimeDate perl-YAML-Syck perl-devel perl-libs perl-version pixman poppler poppler-data poppler-utils portreserve ppl psutils-perl pulseaudio pulseaudio-libs pycairo pygobject2 pygtk2 pygtk2-libglade python-decorator python-deltarpm python-slip python-slip-dbus rarian rarian-compat rtkit samba-winbind-clients setools-console setools-gui setools-libs setools-libs-tcl sgml-common sgpio sound-theme-freedesktop speex startup-notification system-config-date-docs system-config-firewall-tui tex-preview texinfo texinfo-tex texlive texlive-dvips texlive-latex texlive-texmf texlive-texmf-dvips texlive-texmf-errata texlive-texmf-errata-dvips texlive-texmf-errata-fonts texlive-texmf-errata-latex texlive-texmf-fonts texlive-texmf-latex texlive-utils tokyocabinet urlview urw-fonts usermode-gtk xcb-util xml-common xorg-x11-font-utils xulrunner xz xz-lzma-compat yelp lksctp-tools-devel libtool-ltdl-devel gmp mhash mhash-devel gdbm zlib curl g++ openssl bzip2-devel libc-client-devel bison system-config-securitylevel libc-client-devel readline-devel compat-readline43 distcache-devel cmake lynx php-snmp gd-devel glibc-* nano

@ 기타 모듈 설치
# cd /usr/local/src
# mkdir etc
# cd etc
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.6.tar.gz
# wget https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.1.tar.gz
# wget http://ijg.org/files/jpegsrc.v9a.tar.gz
# wget http://sourceforge.net/projects/libpng/files/libpng16/1.6.18rc03/libpng-1.6.18rc03.tar.gz
# wget ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
# wget http://heanet.dl.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

# tar zxvf freetype-2.6.tar.gz; tar zxvf libgd-2.1.1.tar.gz; tar zxvf jpegsrc.v9a.tar.gz; tar zxvf libpng-1.6.18rc03.tar.gz; tar zxvf imap-2007f.tar.gz; tar zxvf pcre-8.37.tar.gz; tar zxvf libmcrypt-2.5.8.tar.gz; tar zxvf libiconv-1.14.tar.gz
# cd /usr/local/src/etc/jpeg-9a;./configure --prefix=/usr/local/jpeg --enable-shared --enable-static;make clean;make -j4; make install;
# cd /usr/local/src/etc/libpng-1.6.18rc03
# cp scripts/makefile.linux Makefile
# make clean;make -j4;make install
# cd /usr/local/src/etc/freetype-2.6
# make clean;./configure --prefix=/usr/local/freetype;make -j4;make install
# cd /usr/local/src/etc/libgd-2.1.1
# make clean;./configure --prefix=/usr/local/gd;make -j4;make install
# cd /usr/local/src/etc/imap-2007f

Makefile을 오픈하여 EXTRACFLAGS= 를 EXTRACFLAGS=-fPIC 로 수정 합니다.

# make clean;make lr5
# mkdir /usr/local/imap
# mkdir /usr/local/imap/include
# mkdir /usr/local/imap/lib
# cp c-client/*.h /usr/local/imap/include/
# cp c-client/*.c /usr/local/imap/lib/
# cp c-client/c-client.a /usr/local/imap/lib/libc-client.a
# cp imapd/imapd /usr/sbin/
# vi /etc/xinetd.d/imapd

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

# service xinetd restart
# cd /usr/local/src/etc/pcre-8.37
# make clean;./configure --prefix=/usr/local --enable-unicode-properties=yes;make -j4;make install
# cd /usr/local/src/etc/libmcrypt-2.5.8
# make clean;./configure --prefix=/usr/local;make -j4;make install
# cd /usr/local/src/etc/libiconv-1.14
# make clean;./configure --prefix=/usr/local;make -j4;
# make install
# ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

vi /etc/sysconfig/selinux 를 열어
SELINUX=enforcing 를 SELINUX=disabled 로 바꿔주고 서버 재부팅 한다.

reboot



@ 아파치 설치전 apr 설치
# cd /usr/local/src
# wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
# wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
# wget http://archive.apache.org/dist/apr/apr-iconv-1.2.1.tar.gz
# tar zxvf apr-1.5.2.tar.gz
# cd /usr/local/src/apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make;make install
# cd /usr/local/src
# tar zxvf apr-util-1.5.4.tar.gz
# cd /usr/local/src/apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make;make install
# cd /usr/local/src
# tar zxvf apr-iconv-1.2.1.tar.gz
# cd apr-iconv-1.2.1
# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
# make;make install

*** httpd 2.4.16 설치 ***

cd /usr/local/src
wget http://mirror.apache-kr.org//httpd/httpd-2.4.16.tar.gz
tar zxvf httpd-2.4.16.tar.gz


prefork 설정시
# vi server/mpm/prefork/prefork.c (73번 라인)
DEFAULT_SERVER_LIMIT의 상수값을 1024로 수정.
worker 설정시
# vi server/mpm/worker/worker.c (84번 라인)
DEFAULT_SERVER_LIMIT의 상수값을 64로 수정.


# cd httpd-2.4.16
./configure \
--prefix=/usr/local/apache \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-z \
--with-pcre \
--enable-mods-static='vhost_alias log_config logio mime mime_magic alias headers status http negotiation' \
--enable-mods-shared='file_cache disk_cache deflate expires usertrack unique_id actions userdir autoindex cgi cache mem_cache distcache auth_digest rewrite remoteip' \
--enable-rewrite \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-cache \
--enable-ssl \
--disable-imagemap \
--disable-include \
--disable-charset-lite \
--disable-reqtimeout \
--disable-cgid \
--disable-asis \
--enable-so \
--enable-authn-socache=no \
--enable-socache-shmcb \
--enable-socache-dbm=no \
--enable-ldap=no \
--enable-authnz-ldap=no \
--enable-cgid=no \
--enable-dav=no \
--enable-dav-fs=no \
--enable-isapi=no \
--enable-ext-filter=no \
--enable-authnz-ldap=no \
--enable-lbmethod-byrequests=no \
--enable-lbmethod-bytraffic=no \
--enable-lbmethod-bybusyness=no \
--enable-lbmethod-heartbeat=no \
--enable-dav-lock=no \
--enable-mpms-shared=all


이 컴파일 옵션은 다음과 같은 특징을 같습니다.

## LDAP 를 사용할 수 없다.
## DSO 로 컴파일 되었다.
## MPM 을 Loadable MPM으로 컴파일 되었다. 이는 Run-time 에서 MPM 모델을 바꿀 수 있다는 뜻.

# make;make install


httpd의 기본적으로 사용할 계정을 생성해 줍니다.
# /usr/sbin/useradd -c "Apache" -u 48 -s /sbin/nologin -r -d /usr/local/apache/htdocs apache

그리고 나서 httpd.conf 파일을 다음과 같이 수정해 줍니다.
vim /usr/local/apache/conf/httpd.conf
User apache
Group apache

'Loadable MPM'(–enable-mpms-shared=all) 으로 컴파일 되었기 때문에 자신이 사용할 MPM 모듈을 활성화 해줍니다.
#LoadModule mpm_event_module modules/mod_mpm_event.so # event MPM
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so # prefork
#LoadModule mpm_worker_module modules/mod_mpm_worker.so # worker


그리고 ServerName 을 자신의 서버 환경에 맞게 적어줍니다.

ServerName localhost:80
서버관리자 메일주소 설정
ServerAdmin webmaster@localhost

웹 페이지 접속시 기본적으로 읽어 들일 파일명 설정
DirectoryIndex index.html 를 찾아 DirectoryIndex index.html index.htm index.php index.php3 index.cgi index.jsp 로 수정
아래와 같이 추가 합니다.
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .htm .html .php .ph php3 .php4 .phtml .inc -->추가
AddType application/x-httpd-php-source .phps -->추가
LoadModule php5_module modules/libphp5.so -->PHP 설치 후 없다면 추가
주석제거
# AddHandler cgi-script .cgi
몇가지 주석 및 제거 - 필요에 따라 더 적용해도 무방함
LoadModule userdir_module modules/mod_userdir.so <-- 주석제거
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so <-- 주석제거
Include conf/extra/httpd-mpm.conf <-- 주석제거
Include conf/extra/httpd-userdir.conf <-- 주석제거
Include conf/extra/httpd-vhosts.conf <-- 주석제거
Include conf/extra/httpd-default.conf <-- 주석제거
인터넷주소 rewrite 모드 사용을 위한 설정

AllowOverride All <-- 수정
Require all denied

#vi /usr/local/apache/conf/extra/httpd-userdir.conf
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec 를
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec 로
Indexes 를 삭제 한다.
@ 접속이 안될경우 80포트 열어 주어야 한다.

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT =>추가
/etc/init.d/iptables restart 또는 service iptables restart

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
@ chkconfig를 이용해서 자동실행 등록해야 하지만 이전에 실행 스크립트 파일에 아래 내용 추가가 선행되어야 한다.
# vi /etc/init.d/httpd
-httpd 파일
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/apache/conf/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid
이를 추가한다.
# chkconfig --add httpd
# chkconfig --list | grep httpd
# /etc/init.d/httpd start



*** mariaDB 다운로드 및 설치 ***

# cd /usr/local/src
# wget https://downloads.mariadb.org/f/mariadb-10.0.20/source/mariadb-10.0.20.tar.gz
# tar zxvf mariadb-10.0.20.tar.gz
# cd mariadb-10.0.20
# ln -s /usr/local/lib/libpcre.so.1 /lib64 또는 ln -s /usr/local/lib/libpcre.so.1 /lib
# cd BUILD
# sh autorun.sh
# cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mariadb/data \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATEDX_STORAGE_ENGINE=1 \
-DWITH_ARIA_STORAGE_ENGINE=1 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system

# make;make install

* 사용자 등록

MariaDB 서버의 실행시킬 사용자를 생성한다.

# /usr/sbin/groupadd -g 27 -o -r mysql
# /usr/sbin/useradd -M -g mysql -o -r -d /usr/local/mariadb/data -s /bin/false -c "MariaDB Server" -u 27 mysql

※ 사용자를 mysql로 한것은 mariaDB는 MySQL과의 호환성으로 인하여 mysql로 하였습니다.

* 소유권 변경

# mkdir -p /usr/local/mariadb/InnoDB/redoLogs
# mkdir -p /usr/local/mariadb/InnoDB/undoLogs
# chown -R mysql /usr/local/mariadb/data
# chgrp -R mysql /usr/local/mariadb
# mkdir /usr/local/mariadb/logs /usr/local/mariadb/tmp
# chown mysql.mysql /usr/local/mariadb/tmp
# chown mysql.mysql /usr/local/mariadb/logs
# chown -R mysql:mysql /usr/local/mariadb/data

* 자동 실행 등록
# cp /usr/local/mariadb/support-files/mysql.server /etc/rc.d/init.d/mysqld

# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list | grep mysqld


* 시스템 테이블 생성
# cd /usr/local/mariadb
# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data


* 라이브러리를 추가
# echo "/usr/local/mariadb/lib" > /etc/ld.so.conf.d/mysql.conf


* 64bit 라면 라이브러리를 위해서 심볼릭 링크

# cd /usr/local/mariadb
mariadb# ln -s lib lib64


# cd /usr/local/mariadb/support-files
# cp my-huge.cnf /etc/my.cnf
# chmod 755 /etc/init.d/mysqld
# /etc/init.d/mysqld start

※ 다른버전과 다르게 "character-set-server" 가 아닌 "character_set_server" 처럼 아래쪽라인 (_) 입니다.
이게 맞지 않을 경우 PID 에러라고 하면서 mysql이 실행되지 않을 수 있습니다.


* root 비밀번호 변경

# /usr/local/mariadb/bin/mysql -uroot -p
Enter password: (그냥 Enter 누르시면 됩니다.)

mysql> USE mysql;
mysql> UPDATE user SET password=password('12dnjf27dlf') WHERE user='root';
mysql> FLUSH privileges;


* 캐릭터셋 확인

mysql> show variables like 'c%';

+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+----------------------------------+
14 rows in set (0.00 sec)

설치 작업이 끝났다면 익명접근권한을 삭제하자. ( mysql 콘솔에 그냥 접근을 못하게 해야 함.)
# /usr/local/mariadb/bin/mysql -u root -p
# Enter password:
# mysql> USE mysql;
# mysql> delete from user where password = "";
# mysql> exit
# /usr/local/mariadb/bin/mysqladmin -u root -p reload
# Enter password:



*** PHP 5.6.11 설치 및 설정 ***

# cd /usr/local/src
# wget http://kr1.php.net/distributions/php-5.6.11.tar.gz
# tar zxvf php-5.6.11.tar.gz
# cd php-5.6.11

# ./configure --prefix=/usr/local/php \
--enable-fpm \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-libdir=lib \
--with-gettext \
--with-mhash \
--with-gmp \
--with-gd \
--with-jpeg-dir=/usr/local/jpeg \
--with-png-dir=/usr/local/lib \
--with-mcrypt=/usr/local/lib \
--with-iconv=/usr/local/lib \
--with-freetype-dir=/usr/local/freetype \
--with-config-file-path=/usr/local/lib \
--with-zlib \
--enable-gd-native-ttf \
--enable-bcmath \
--enable-exif \
--with-mcrypt \
--with-zlib \
--with-bz2 \
--enable-mbstring \
--enable-opcache \
--with-curl \
--with-openssl \
--with-imap=/usr/local/imap \
--with-imap-ssl \
--with-pdo-mysql=/usr/local/mariadb \
--with-mysql=/usr/local/mariadb \
--with-mysqli=/usr/local/mariadb/bin/mysql_config \
--enable-pcntl \
--enable-mbregex \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-libxml-dir=/usr \
--with-kerberos \
--disable-debug \
--enable-soap \
--with-gdbm \
--enable-ftp \
--enable-calendar \
--enable-shmop \
--enable-inline-optimization \
--enable-sigchild \
--enable-sockets \
--enable-maintainer-zts

# make; make install

* php.ini 파일을 다음과 같이 복사해 줍니다.

# cp php.ini-production /usr/local/lib/php.ini


추가작업은 아래와 같이

# vi /root/.bash_profile
PATH=$PATH:$HOME/bin 를
PATH=$PATH:$HOME/bin:/usr/local/mariadb/bin:/usr/local/apache/bin:/usr/local/php/bin 로 수정
source /root/.bash_profile
service httpd restart
@ php.ini 설정
# vi /usr/local/lib/php.ini
post_max_size = 100M
upload_max_filesize = 100M
allow_url_fopen = Off
short_open_tag = On
disable_functions = exec,passthru,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source 또는


disable_functions = system, show_source, exec, shell_exec, curl_exec, parse_ini_file, curl_multi_exec, proc_open, passthru, set_time_limit, ini_restore, mysql_list_dbs, ini_alter, dl, pfsockopen, openlog, syslog, symlink, link, chgrp, leak, popen, escapeshellcmd, apache_child_terminate, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, virtual, mb_send_mail 또는

disable_functions = php_uname, putenv, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, popen, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix_getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname


자주 살펴보는 파일은 심볼릭 링크를 설정해서 /root/conf 파일에 모아두자
# mkdir /root/conf
# cd /root/conf
# ln -s /usr/local/lib/php.ini /root/conf/php.ini
# ln -s /usr/local/apache/conf/httpd.conf /root/conf/httpd.conf
# ln -s /usr/local/apache/conf/extra/httpd-vhosts.conf /root/conf/httpd-vhosts.conf
# ln -s /usr/local/apache/conf/extra/httpd-ssl.conf /root/conf/httpd-ssl.conf
# ln -s /etc/my.cnf /root/conf/my.cnf
# ln -s /etc/sysconfig/iptables /root/conf/iptables



@ Zendopcache 설치

php 5.5.x 버전 이상에서는 opcache 가 기본 내장되어 있으므로 php 설치시에 --enable-opcache 를 설정해주고 설치한 후
vi /usr/local/lib/php.ini 파일의 [opcache] 하단에 아래와 같이 설정해주고 service httpd restart 하면 적용 된다.

zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1


@ ioncube_loaders 64비트 설치
# mkdir /usr/local/ioncube
# cd /usr/local/src
# wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
# tar -zxvf ioncube_loaders_lin_x86-64.tar.gz
# cp /usr/local/src/ioncube/ioncube_loader_lin_5.6_ts.so /usr/local/ioncube/

php.ini 하단에 에 추가 [opcache] 맨 위에 extension 입력

[opcache]
zend_extension=/usr/local/ioncube/ioncube_loader_lin_5.6_ts.so
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

만약 ioncube_loader 가 적용이 안되면
vi /etc/sysconfig/selinux 를 열어
SELINUX=enforcing 를 SELINUX=disabled 로 바꿔주고 서버 재부팅 한다.


@ mod_security 모듈 설치
# cd /usr/local/src
# wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
# tar xvfz modsecurity-2.9.0.tar.gz
# cd modsecurity-2.9.0
# ./autogen.sh
# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apu=/usr/local/apr-util/bin/apu-1-config --with-lua --with-pcre=/usr/local/bin/pcre-config
# make && make install

cp /usr/local/src/modsecurity-2.9.0/modsecurity.conf-recommended /usr/local/apache/conf/modsecurity.conf

아파치 환경파일 (http.conf) 추가
아파치 환경파일을 열어 위에서 설치한 모듈을 불러드립니다.
LoadModule security2_module modules/mod_security2.so
그리고, 파일 하단에 다음 문을 추가합니다. 차후 다운로드 받을 룰셋 파일을 불러드리기 위함입니다.

Include conf/modsecurity.conf


# service httpd restart


@ phpMyAdmin 설치
# cd /usr/local/src
# wget http://files.directadmin.com/services/all/phpMyAdmin//phpMyAdmin-4.4.12-all-languages.tar.gz
# tar xvfz phpMyAdmin-4.4.12-all-languages.tar.gz
# mv phpMyAdmin-4.4.12-all-languages pma
# mv pma /usr/local/apache/htdocs
# cd /usr/local/apache/htdocs/pma
# cp config.sample.inc.php config.inc.php

vi config.inc.php

$cfg['Servers'][$i]['auth_type'] = 'cookie'; --> http 로변경 (window 보안)
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';

위 항목 주석을 푼다

에러 처리
- The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. To find out why click here

- pma 관련 테이블 및 계정을 추가해 준다
- phpmyadmin 폴더에 포함된 sql로 되어있는 파일 실행시킨다
# mysql -uroot -ppassword  # mysql -u root -p
# Enter password:

- 아래 스크립트를 실행한다
mysql> GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
mysql> exit


@Mod_Cband 설치

# cd /usr/local/src
# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_cband/mod-cband-0.9.7.5.tgz/5c5d65dc9abe6cdc6931b6dd33be5018/mod-cband-0.9.7.5.tgz
# tar xvfpz mod-cband-0.9.7.5.tgz
# cd mod-cband-0.9.7.5
# ./configure --with-apxs=/usr/local/apache/bin/apxs
# make; make install

설치시 remote_ip 에러가 출력된다면 첨부된 mod_cband.c 파일에서 remote_ip 변수를 client_ip 로 변경후 재컴파일해서 인스톨 한다.


httpd.conf 파일에 추가

#mod-cband
#
# SetHandler cband-status
# Order deny,allow
# Deny from all
# Allow from all
#



SetHandler cband-status
AuthName "트래픽 관리 페이지"
AuthType Basic
AuthUserFile /usr/local/apache/htdocs/cband-status/.htpasswd
require valid-user


SetHandler cband-status-me
Order deny,allow
Deny from all
Allow from all



설치확인
- httpd.conf 파일에
LoadModule cband_module modules/mod_cband.so
줄이 추가된것을 볼 수 있습니다.
- 아파치/modules 디렉토리에
mod_cband.so
파일이 추가 된 것을 볼수 있습니다.

추가설정
아래와 같이 트래픽 리셋창에 접근 할 수 있도록 폴더와 파일을 만든다.
/usr/local/apache/htdocs/cband-status/.htpasswd

reset all 버튼에 마우스 우클릭을 하여 나오는 속성에서 URL를 확인할 수 있습니다. wget 커맨드 뒤에 이 URL을 입력하여 엔터 치면 웹상에서 reset all 버튼을 누르는 것과 같은 효과를 낼 수 있습니다.

텍스트 웹브라우저의 하나인 lynx를 이용하는 방법도 있습니다. 사용법은 아래와 같습니다.
/usr/bin/lynx --source [reset all 버튼의 URL]

lynx 패키지는 CenOS 5.x 이상의 경우 yum으로 간단하게 설치할 수 있습니다.
# yum -y install lynx

wget을 이용하는 방법과 lynx를 이용하는 방법 둘 중에 하나를 골라 cron에 매일 00시 00분에 실행되도록 해서 사용하면 됩니다.
00 00 * * * root /usr/bin/lynx --source [reset all 버튼의 URL]

# service httpd restart


@arpwatch 설치

# yum install arpwatch

# vi /etc/sysconfig/arpwatch 파일을 열서 수정한다.

# -u : defines with what user id arpwatch should run
# -e : the where to send the reports
# -s : the -address
#OPTIonS="-u pcap -e '메일주소' -s '보내는이(Arpwatch)' -n '192.168.1.2/24'"
OPTIonS="-u arpwatch -e '받을메일' -s 'root(Arpwatch)' -n '192.168.1.2/24'"

위 옵션은 다음과 같은 의미를 가진다.
-e : 수신 Email 주소를 의미한다.
-s : 보내는이
-n : 감시할 IP대역
-u : arpwatch를 실행할 사용자

# service arpwatch start
아래와 같은 에러가 뜬다면
#arpwatch (을)를 시작 중: arpwatch: lookup_device: Can't open netlink socket 13:Permission denied

설정파일에서 옵션을 enforcing 에서 disabled 로 수정.
# vi /etc/selinux/config
SELINUX=enforcing => SELINUX=disabled

SELinux 를 재부팅하지 않고 즉시 중지
/usr/sbin/setenforce 0

만약 setenforce 가 없다면 서버를 재부팅해야 합니다.

# cd /usr/local/src
# wget http://standards.ieee.org/regauth/oui/oui.txt
# mv oui.txt /var/lib/arpwatch/ethercodes.dat
이렇게 하면 최신 하드웨어 정보로 업데이트 된다.
# service arpwatch restart



@Webalizer 설치

# cd /usr/local/src
# wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz
# tar xvfz webalizer-2.23-08-src.tgz
Webalizer/lang/webalizer_lang.korean 파일을 열어서 학국어가 제대로 보이는지 확인 할것
# mv webalizer-2.23-08 webalizer
# mv webalizer /usr/local
# cd /usr/local/webalizer
# ./configure --with-language=korean --with-gd=/usr/local/gd

configure: error: gd library not found... please install gd. 와 같은 에러가 나오면
yum -y install gd-devel 실행후 rm -f config.cache 하고 다시 configure 한다.

# make && make install
# mkdir conf
# mkdir bin

# cp sample.conf /usr/local/webalizer/conf/nanoomi.org.conf

# vi /usr/local/webalizer/bin/webalizer.sh

#!/bin/bash
/usr/local/bin/webalizer -c /usr/local/webalizer/conf/nanoomi.org.conf > /home/nanoomi/public_html/web_log/nanoomi.org

esc :wq 로 저장한다

# chmod 755 /usr/local/webalizer/bin/webalizer.sh


nanoomi.org.conf 수정

- LogFile : 로그파일 위치
- OutputDir : 분석결과 저장위치
- HistoryName : 사이트명
- ReportTitle : 분석결과 페이지 이름
- HostName : 호스트명 FQDN형식

LogFile /home/nanoomi/public_html/web_log/access_log
OutputDir /home/nanoomi/public_html/web_log
HistoryName nanoomi.org
ReportTitle nanoomi.org WebSite
HostName www.nanoomi.org

아래 구문의 주석(#)을 삭제 한다.
SearchEngine .google. q=
SearchEngine yahoo.com p=
SearchEngine altavista.com q=
SearchEngine aolsearch. query=
SearchEngine ask.co q=
SearchEngine eureka.com q=
SearchEngine lycos.com query=
SearchEngine hotbot.com MT=
SearchEngine msn.com q=
SearchEngine infoseek.com qt=
SearchEngine excite search=
SearchEngine netscape.com query=
SearchEngine mamma.com query=
SearchEngine alltheweb.com q=
SearchEngine northernlight.com qr=


실행은
# sh /usr/local/webalizer/bin/webalizer.sh

crontab 에 저장해서 주기적으로 실행
00 02 * * * su - root -c '/usr/local/webalizer/bin/webalizer.sh'>& /dev/null

웹에서 확인할 경우에는 아래와 같다
http://도메인/web_log




@ClamAV 설치 및 사용법

# cd /usr/local/src
# wget http://sourceforge.net/projects/clamav/files/clamav/0.98.7/clamav-0.98.7.tar.gz
# tar xvfz clamav-0.98.7.tar.gz
# adduser clamav
# cd ./clamav-0.98.7
# ./configure --enable-static --prefix=/usr/local/clamav
# make;make install

디렉토리 생성 및 권한부여
# mkdir /usr/local/clamav/db
# mkdir /usr/local/clamav/log
# chmod 757 /usr/local/clamav/db
# chmod 757 /usr/local/clamav/log
# mkdir /var/run/clamav

파일 add 후 설정 (/usr/local/clamav/etc/clamd.conf, /usr/local/clamav/etc/freshclam.conf)

1) clamd.conf

LocalSocket /var/run/clamav/clamd.socket
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxThreads 20
User clamav
LogFile /usr/local/clamav/log/clamd.log
LogTime yes
PidFile /usr/local/clamav/log/clamd.pid
DatabaseDirectory /usr/local/clamav/db
DetectBrokenExecutables yes



2) freshclam.conf

DatabaseMirror database.clamav.net
DatabaseDirectory /usr/local/clamav/db/
UpdateLogFile /usr/local/clamav/log/freshclam.log
DatabaseOwner clamav
NotifyClamd /usr/local/clamav/etc/clamd.conf


백신 DB 업데이트 및 스캔

ln -s /usr/local/lib/libiconv.so.2 /usr/lib64
--> 아래 에러 방지
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

# /usr/local/clamav/bin/freshclam 업데이트


# /usr/local/clamav/bin/clamscan 현재디렉토리 검사
# /usr/local/clamav/bin/clamscan -r /home 현재디렉토리 하위검사

clamd 데몬실행

# chown -R clamav:clamav /var/run/clamav
# chmod -R 700 /var/run/clamav
# service clamav restart

# /usr/local/clamav/sbin/clamd –config-file=/usr

바이러스 DB 업데이트를 데몬으로 관리 하고자 한다면 아래와 같이 실행한다.
# freshclam -d

이제 바이러스 조회해 봅시다.
# clamscan
# clamscan -r (하위 폴더 까지 조회)

매일 혹은 매시 등 일정 시간 마다 자동으로 조회 하려면 crontb에 등록해서 사용
crontb 에 등록 : /etc/crontab
02 1 * * * su - root /usr/local/clamav/bin/clamscan -r /home



@mod_evasive_1.10.1 설치

mod_evasive - apache DoS, DDoS 공격 방어 모듈로, 초당 일정 횟수 이상 같은 페이지를 요청하는 경우 공격 IP에 대한 접근을 일정시간 차단하는 기능을 합니다.

* mod_evasive 다운로드
# cd /usr/local/src
# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_evasive/mod_evasive_1.10.1.tar.gz/784fca4a124f25ccff5b48c7a69a65e5//mod_evasive_1.10.1.tar.gz

* 압축해제
# tar zxvf mod_evasive_1.10.1.tar.gz

* 디렉토리 이동
# cd mod_evasive
# ls -alh


합계 120K
drwxr-xr-x 2 root root 4.0K 10월 9 2005 .
drwxr-xr-x 7 root root 4.0K 8월 13 05:30 ..
-rw-r--r-- 1 root root 26 9월 2 2003 .cvsignore
-rw-r--r-- 1 root root 1.4K 10월 9 2005 CHANGELOG
-rw-r--r-- 1 root root 18K 8월 31 2003 LICENSE
-rw-r--r-- 1 root root 470 10월 9 2005 Makefile.tmpl
-rw-r--r-- 1 root root 14K 10월 9 2005 README
-rw-r--r-- 1 root root 19K 10월 9 2005 mod_evasive.c (apache 1.x)
-rw-r--r-- 1 root root 18K 10월 9 2005 mod_evasive20.c (apache 2.x)
-rw-r--r-- 1 root root 16K 10월 9 2005 mod_evasiveNSAPI.c
-rw-r--r-- 1 root root 406 8월 31 2003 test.pl

* 모듈 추가
# /usr/local/apache/bin/apxs -iac mod_evasive20.c (apache 2.x)
# /usr/local/apache/bin/apxs -iac mod_evasive.c (apache 1.x)

설치시 remote_ip 에러가 난다면 client_ip로 수정 하거나 본문에 첨부된 mod_evasive20.c 파일을 대체해서 재컴파일한다
# chmod 755 /usr/local/apache/modules/mod_security2.so

* 설정확인 및 변경
1. # ls -alh /usr/local/apache/modules/ 경로에 mod_evasive20.so 생성된 것을 확인
2. # vi /usr/local/apache/conf/httpd.conf 중간에 아래 내용이 추가된 것을 확인

======================================================
LoadModule evasive20_module modules/mod_evasive20.so (apache 2.x)
//LoadModule evasive_module modules/mod_evasive.so (apache 1.x)
======================================================

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


하단에 아래와 같은 설정을 추가한다.

=======================================


DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify webmaster@example.com
DOSLogDir "/usr/local/apache/logs/mod_evasive.log"
# DOSWhitelist 127.0.0.1 127.0.0.2 127.0.0.3...


=======================================

- DosHashTableSize
수치가 높을수록 evasive의 퍼포먼스는 향상되지만 테이블에 많은 메모리을 남김, 접속량이 많은 경우 수치를 늘림
- DOSPageCount
PageInterval에 지정된 시간동안 같은 페이지를 요청하는 횟수
- DOSSiteCount
SiteInterval에 지정된 시간동안 총 히트수(html,이미지)가 해당 횟수를 초과하는 경우, 이미지가 많은 사이트는 조절
- DOSPageInterval
PageCount 시간(default : 1)
- DOSSiteInterval
SiteCount 시간(default : 1)
- DOSBlockingPeriod
차단된 IP의 접속을 거부할 시간 설정, 차단후 설정된 시간 내에 다시 접속을 시도할 경우 시간은 설정만큼 다시 리셋
- DOSEmailNotify
차단된 IP를 이메일 발송
- DOSWhitelist
설정된 IP는 차단대상에서 제외
- 공격으로 차단되었던 IP는 /tmp/dos-[IP] 와 같이 파일이 생성

* Apache 재시작 후 테스트
# /usr/local/apache/bin/apachectl restart or service httpd restart
# perl test.pl
======================
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
......

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
......
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
======================

또는 웹페이지 새로고침(F5)을 연속 실행할 경우 아래와 같이 차단됩니다.

=====================================================

Forbidden
You don't have permission to access / on this server.

=====================================================

* 기타 iptables 를 이용한 공격 방어 방법

iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 10 --name HTTP -j DROP
- 같은 IP가 HTTP서비스에 1초동안 tcp 80포트로 10회 이상 접속하는 경우 DROP 합니다.

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
- 60초동안 SSH(port 22) 새로운 커넥션이 10회 발생할 경우 DROP 합니다.



@ GeoIP 설치 및 설정

# cd /usr/local/src
# wget http://pkgs.fedoraproject.org/repo/pkgs/GeoIP/GeoIP-1.5.1.tar.gz/36b82f3558e6e2ebdd11a56c5db21dbc/GeoIP-1.5.1.tar.gz
# tar xvfz GeoIP-1.5.1.tar.gz
# cd GeoIP-1.5.1
# ./configure --prefix=/usr/local/GeoIP
# make;make install

설치를 마치면 아래 경로에 GeoIP.dat 라는 바이너리 포맷 형식의 파일이 생성됩니다. 아마도 이 파일이 IP 주소 대역에 대응되는 국가 명칭 정보를 담고 있겠죠. ^^

# ls -l /usr/local/GeoIP/share/GeoIP/GeoIP.dat
-rw-r--r-- 1 root root 1.1M 7월 6 14:37 /usr/local/GeoIP/share/GeoIP/GeoIP.dat

이제 아파치의 mod_geoip 모듈을 설치하면 됩니다. 저는 아파치 2.x 버전에 설치하므로 http://www.maxmind.com/download/geoip/api/mod_geoip2/ 에서 받아 설치해 보겠습니다.
# cd /usr/local/src
# wget http://pkgs.fedoraproject.org/repo/pkgs/mod_geoip/mod_geoip2_1.2.7.tar.gz/76514ad0e8adb8cd8231c5e3646d03fd/mod_geoip2_1.2.7.tar.gz
# tar xvfz mod_geoip2_1.2.7.tar.gz
# cd mod_geoip2_1.2.7
# /usr/local/apache/bin/apxs -a -i -L/usr/local/GeoIP/lib -I/usr/local/GeoIP/include -lGeoIP -c mod_geoip.c

httpd.conf 에 아래 내용을 수정 및 첨부한다.


GeoIPEnable On
GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{Host}i %{GEOIP_COUNTRY_CODE}e" cnxlog
CustomLog logs/access_log cnxlog


위에서 %{변수명}i 형식은 요청할 때의 Header중 해당 값을 말한다. %{변수명}e 는 환경변수를 의미한다. LogFormat 설정 중에 2가지를 살펴보자.

%{Host}i : 요청한 호스트명을 로그에 남긴다. 이를테면 하나의 서버에 2개 이상의 도메인을 갖고 있을 때 유용하다.
www.foobar.com, www.foobar.net, foobar.com 등의 도메인이 있을 때 어떤 도메인으로 요청했는지를 남길 수 있게 된다.
%{GEOIP_COUNTRY_CODE}e : GEOIP_COUNTRY_CODE 환경변수, 즉 국가코드를 남긴다.

다음은 특정은 페이지를 지정한 국가에서 접근할 수 없도록 설정한 예이다.



GeoIPEnable On
GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE CN go_out
SetEnvIf GEOIP_COUNTRY_CODE RU go_out
SetEnvIf GEOIP_COUNTRY_CODE TH go_out

Order allow,deny
Allow from all
Deny from env=go_out



LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{Host}i %{GEOIP_COUNTRY_CODE}e" cnxlog
CustomLog logs/access_log cnxlog


위는 특정 국가만 제한하는 것인데, 반대로 특정 국가만 허용하려면 위의 내용중에 location 부분을 다음과 같이 수정하면 된다.


SetEnvIf GEOIP_COUNTRY_CODE KR allowcountry

Order Deny,Allow
Deny from all
Allow from env=allowcountry



위의 2가지 설정(로그에 국가코드, 특정 국가 제한)이 적용된 로그 예(일부 로그는 변경 처리함)이다. 2번째 줄은 특정 국가 접속시 403 에러를 발생하며, 접근이 제한됐음을 확인할 수 있다.

125.129.xxx.xxx - - [01/Apr/2008:01:07:15 +0900] "GET /bbs/ HTTP/1.1" 200 29388 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13" foobar.com KR
61.243.xxx.xxx - - [01/Apr/2008:01:17:20 +0900] "GET /data/linux_base/editors.html HTTP/1.1" 403 520 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)" foobar.com CN

php용 모듈 설치
# cd /usr/local/src
# wget http://pecl.php.net/get/geoip-1.0.8.tgz
# tar zxvf geoip-1.0.8.tgz
# cd geoip-1.0.8
# phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-geoip=/usr/local/GeoIP
# make;make install

vi php.ini 추가
extension=geoip.so
... 생략 ...
[geoip]
geoip.custom_directory=/usr/local/GeoIP/share/GeoIP


7-28-2015 PM 4-00-03.png

  1. No Image

    Tomcat 6에 Datasource 설정하기

    Date2017.03.11 Views7717
    Read More
  2. tomcat - server.xml 설정

    Date2017.03.11 Views94828
    Read More
  3. [CentOS 6.5] Virtual Box를 이용한 CentOS 6.5 설치

    Date2017.03.11 Views6694
    Read More
  4. [CentOS 6.5] SSH,TELNET, FTP 설치 및 운용

    Date2017.03.11 Views8717
    Read More
  5. [CentOS 6.5] JDK (JAVA) 설치

    Date2017.03.11 Views8776
    Read More
  6. [CentOS 6.5] Tomcat 설치 및 구동

    Date2017.03.11 Views9586
    Read More
  7. No Image

    TOMCAT/사이트 여러개 운영

    Date2017.03.09 Views8515
    Read More
  8. No Image

    SSH / FTP 등 기본 접속환경 설정(리눅스 / 솔라리스)

    Date2017.02.03 Views7946
    Read More
  9. No Image

    솔라리스 10 (Telnet/FTP/SSH) 설정

    Date2017.02.03 Views8077
    Read More
  10. 아파치 디렉토리 보이는 것 막기

    Date2017.02.02 Views8173
    Read More
  11. No Image

    아파치 로그(Apache Log) 관리법

    Date2017.02.02 Views7943
    Read More
  12. crontab 을 이용한 PHP 스케줄링 작업

    Date2017.02.02 Views8594
    Read More
  13. No Image

    crontab 설정 방법

    Date2017.02.02 Views7278
    Read More
  14. No Image

    apachec rewrite 사용하기 // www 강제 사용 // HTTP to HTTPS // 특정경로만 HTTP

    Date2016.12.30 Views7158
    Read More
  15. No Image

    APACHE, OHS 400 웹로직 연동후 특정 작업에 400 error

    Date2016.12.30 Views8770
    Read More
  16. No Image

    netstat 사용법

    Date2016.12.22 Views8879
    Read More
  17. No Image

    mod_rewrite 예제

    Date2016.12.22 Views7219
    Read More
  18. No Image

    아파치 웹로직 연동(Virtual Host)

    Date2016.11.22 Views8626
    Read More
  19. No Image

    Apache 2.2.17 + WebLogic 10.3.3 연동하기

    Date2016.11.22 Views8896
    Read More
  20. CentOS6.6+httpd2.4.16+Mariadb10.0.20+php5.6.11 Source 설치....

    Date2016.09.25 Views15291
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
/ 12

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved