JSBuilder.net

2009년 부터 만들어오던 JS빌더 배포 사이트를 오늘 닫았다.

그간 잦은 출장으로 인하여 관리도 소홀했고

시간도 안나서 부득히 다시 아파치존으로 귀속 시켰다.

그래도 바쁜 출장기간에도

JS빌더는 DTD로 바꾸고 그누보드의 보안 업데이트도 꾸준히 해왔다.

사장 시키기에는 너무 많은 애정을 쏟아서 아까우니 보안 업데이트만이라도 해야 겠다.

기분이 그냥 시원 섭섭하다…..ㅠㅠ

nanoomi / 2015년 2월 28일 / 미분류 / 0 Comments

CentOS 7 + httpd 2.4.12 + mariadb 10.0.16 + php 5.6.6 설치

CentOS7 최소설치를(minimal) 한 상태에서 최신 APM 소스 설치를 진행해 보았습니다.
이전버전과 조금 틀린점이 있으니 아래 내용대로 따라 하시면 큰무리없이 It works! 을 보실 수 있을겁니다….^^

@ 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-*

@ 기타 모듈 설치
# cd /usr/local/src
# mkdir etc
# cd etc
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.5.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.16/libpng-1.6.16.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.36.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.5.5.tar.gz; tar zxvf libgd-2.1.1.tar.gz; tar zxvf jpegsrc.v9a.tar.gz; tar zxvf libpng-1.6.16.tar.gz; tar zxvf imap-2007f.tar.gz; tar zxvf pcre-8.36.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.16
# cp scripts/makefile.linux Makefile
# make clean;make -j4;make install
# cd /usr/local/src/etc/freetype-2.5.5
# 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.36
# 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;

iconv 컴파일 설치시 에러

./configure
이상없이 컴파일 실행 후
make 실행시 아래와 같은 에러 발생 하였다.

gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c careadlinkat.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c malloca.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c progname.c
In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/usr/src/libiconv-1.14/srclib’
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/libiconv-1.14/srclib’
make: *** [all] Error 2

다음과 같이
srclib/stdio.h 파일 1010줄을 다음과 같이 추가하여 수정한다.

+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, “gets is a security hole – use fgets instead”);
+#endif
#endif

# 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.1.tar.gz
# wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
# tar zxvf apr-1.5.1.tar.gz
# cd /usr/local/src/apr-1.5.1
# ./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

*** httpd 2.4.14 설치 ***

cd /usr/local/src
wget http://mirror.apache-kr.org//httpd/httpd-2.4.12.tar.gz
tar zxvf httpd-2.4.12.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.12
./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-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-proxy=no \
–enable-proxy-connect=no \
–enable-proxy-ftp=no \
–enable-proxy-http=no \
–enable-proxy-fcgi=no \
–enable-proxy-scgi=no \
–enable-proxy-fdpass=no \
–enable-proxy-ajp=no \
–enable-proxy-balancer=no \
–enable-proxy-express=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 를 사용할 수 없다.
## Proxy를 사용할 수 없다.
## 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 또는 systemctl start iptables.service

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.16/source/mariadb-10.0.16.tar.gz
# tar zxvf mariadb-10.0.16.tar.gz
# cd mariadb-10.0.16
# ln -s /usr/local/lib/libpcre.so.1 /lib64 또는 ln -s /usr/local/lib/libpcre.so.1 /lib
# cd BUILD
# 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(‘new_password’) 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.6 설치 및 설정 ***

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

# ./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

phpinfo

nanoomi / 2015년 2월 24일 / 미분류 / 0 Comments

kloxo MR 7 설치

CentOS 6.6 64bit minimal 설치후 진행 하였습니다.

Kloxo-MR1

cd /
yum update -y
yum install yum-utils yum-priorities vim-minimal subversion curl zip unzip -y

Kloxo-MR2

Kloxo-MR3

yum install telnet wget -y

setenforce 0
echo ‘SELINUX=disabled’ > /etc/selinux/config

cd /tmp
rm -f mratwork*
wget https://github.com/mustafaramadhan/kloxo/raw/rpms/release/neutral/noarch/mratwork-release-0.0.1-1.noarch.rpm –no-check-certificate
rpm -ivh mratwork-release-0.0.1-1.noarch.rpm

Kloxo-MR4

cd /
yum clean all
yum update mratwork-* -y

Kloxo-MR5

yum install kloxomr7 -y

Kloxo-MR6

Kloxo-MR7

sh /script/upcp

Kloxo-MR8

https://ip-address:7777 – SSL 적용될때 관리자판넬 접속
http://ip-address:7778 – 우린 요걸로 접속하면 됩니다….^^

Kloxo-MR9

최초 로그인은 아이디와 패스워드가 모두 admin 으로 설정된다.
로그인후에 패스워드 수정판넬이 보이며 수정후에 이어서 몇가지를 더 수정하면 아래 이미지를 볼 수 있다….^^

Kloxo-MR10

상단의 이미지를 보셨다면 일단 kloxo MR 설치는 마무리 하였습니다. 이젠 설정 하는일이 남았겠죠….ㅎㅎ

nanoomi / 2015년 2월 21일 / 미분류 / 0 Comments

NANOOMI.ORG

처음부터 무료 나눔 계정을 시작 하려고 한건 아니었습니다.

웹에 대해서 아무것도 모르는 시절 무작정 홈페이지를 만들려다 보니 계정이 필요했고

그래서 이곳 저곳 전전긍긍하다 우연히 inour.net 을 알게되어 약 2년 가까이 신세를 졌습니다.

그때 나도 여유가 된다면 이런 형태의 무료나눔 호스팅을 해 봐야 겠다는 막연한 생각이 오늘을 있게 했네요….^^

아직도 부족하지만 차근차근 서둘지않고 배워나가면서 나와의 약속을 지킬수 있었으면 좋겠습니다.

그간 지인들을 대상으로 계정을 나누어 쓰던 것을 이번에 새로운 서버를 구입하고 계정에 여유가 생겨서 이렇듯 무료 나눔 계정을 시작하게 되었습니다.

좋은 취지로 시작한 만큼 많은 분들과 함께하는 나누미가 되도록 노력 하겠습니다.

계정이 필요하신분은 아래 링크를 통해서 안내를 받으시고 계정 신청을 하시면 됩니다.
http://nanoomi.org/bbs/board.php?bo_table=06_2

 

나누미 서버사양은 아래와 같습니다.

서버사양
. Intel Xeon E5-2620 v3 Haswell 2.4GHz 6 x 256KB L2 Cache 15MB L3 Cache LGA 2011-3 85W Server Processor
. ASRock Fatal1ty X99X Killer LGA 2011-v3 Intel X99 SATA 6Gb/s USB 3.0 ATX Intel Motherboard
. Crucial Ballistix Sport 16GB 2 x 8GB DDR4-2400 (PC4-19200) Quad Channel Desktop Memory Kit
. HFX Advanced Liquid Cooling Kit, etc….

설치 패키지
. CentOS6.x, apache 2.4.x, mariadb 10.0.x, php 5.6.x
. Zendopcache, ioncube, mod_security, Mod_Cband, Suhosin, etc …

nanoomi / 2015년 2월 21일 / 미분류 / 0 Comments

interworx 5 설치

CentOS 6.6 minimal 설치후 진행 하였습니다.
유료 판넬이라 그런지 설치가 너무 쉬웠습니다…..^^;;

일단 서버업데이트를 먼저 시행 합니다.
yum update -y
아래와 같이 interworx 설치 파일을 불러와 설치를 시작 합니다.
sh <((curl -sL interworx.com/inst.sh))

interworx1

[enter] 키를 누르면 다음 설치로 진행 합니다.

interworx2

위와 같이 설치 할테니 맞냐고 물어 보네요….ㅋㅋ
설치를 해야 되니 당연히 Y 를 입력하고 엔터!

interworx3

설치가 너무 쉽게 끝나서 맥이 다 빠지네요….^^
이미지에서 보이는바와 같이 판넬 접속은 http://자신의 아이피:2080/nodeworx 를 사용 합니다.

interworx4

패스워드를 먼저 생성한 후 License Key 를 받을때 사용한 이메일과 함께 사용해 로그인 합니다.
짜잔! 아래 이미지와 같이 interworx 5 메인페이지가 출력됩니다….^^
이제 DNS, 리셀러, 계정추가등…. inderworx 설정을 시작 해야 겠죠……ㅎㅎ

interworx5

아래 이미지는 임의로 추가한 계정의 도메인을 테스트 해 본 결과물입니다…..^^

interworx6

사용자의 SiteWorx 로 접속 해 보았는데 아래 이미지와 같이 한눈에 자신의 사이트를 확인 할 수가 있다.

vmware3

관리자와 사용자의 interworx의 사용법은 다음에 알아보도록 하겠습니다.

nanoomi / 2015년 2월 20일 / 미분류 / 0 Comments

CentOS 7에 APM 소스 설치

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

CentOS7 설치는 많은곳에서 포스팅하고 있으니 구글을 참고 하시거나 아래 링크를 참조 하시기 바랍니다.
https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1823

참고로 CentOS 7 은 64bit 만 제공하고 있네요…^^;; 그럼 시작해 봅니다.

@ 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 xfsprogs xfsprogs-devel 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 apr-util apr-util-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

@ 기타 모듈 설치
# cd /usr/local/src
# mkdir etc
# cd etc
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.4.tar.gz
# wget http://www.peregrinehw.com/downloads/gd/gd-2.0.35.tar.gz
# wget http://ijg.org/files/jpegsrc.v9a.tar.gz
# wget http://sourceforge.net/projects/libpng/files/libpng15/1.5.10/libpng-1.5.10.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.35.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.5.4.tar.gz; tar zxvf gd-2.0.35.tar.gz; tar zxvf jpegsrc.v9a.tar.gz; tar zxvf libpng-1.5.10.tar.gz; tar zxvf imap-2007f.tar.gz; tar zxvf pcre-8.35.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.5.10
# cp scripts/makefile.linux Makefile
# make clean;make -j4;make install
# cd /usr/local/src/etc/freetype-2.5.4
# make clean;./configure –prefix=/usr/local/freetype;make -j4;make install
# cd /usr/local/src/etc/gd/2.0.35
# 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.35
# 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;

iconv 컴파일 설치시 에러

./configure
이상없이 컴파일 실행 후
make 실행시 아래와 같은 에러 발생 하였다.

gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c careadlinkat.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c malloca.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\”\” -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBIConV=1 -DDEPENDS_ON_LIBINTL=1 -O2 -march=native -c progname.c
In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/usr/src/libiconv-1.14/srclib’
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/libiconv-1.14/srclib’
make: *** [all] Error 2
다음과 같이
srclib/stdio.h 파일 1010줄을 다음과 같이 + 부분을 추가하여 수정한다.

+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, “gets is a security hole – use fgets instead”);
+#endif
#endif

# 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.1.tar.gz
# wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
# tar zxvf apr-1.5.1.tar.gz
# cd /usr/local/src/apr-1.5.1
# ./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
*** httpd 2.4.10 설치 ***

cd /usr/local/src
wget http://mirror.apache-kr.org//httpd/httpd-2.4.10.tar.gz
tar zxvf httpd-2.4.10.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.10
./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-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-proxy=no \
–enable-proxy-connect=no \
–enable-proxy-ftp=no \
–enable-proxy-http=no \
–enable-proxy-fcgi=no \
–enable-proxy-scgi=no \
–enable-proxy-fdpass=no \
–enable-proxy-ajp=no \
–enable-proxy-balancer=no \
–enable-proxy-express=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 를 사용할 수 없다.
## Proxy를 사용할 수 없다.
## 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.15/source/mariadb-10.0.15.tar.gz
# tar zxvf mariadb-10.0.15.tar.gz
# cd mariadb-10.0.15

# 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 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

# cd /usr/local/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(‘new_password’) 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.4 설치 및 설정 ***

# cd /usr/local/src
# wget http://kr1.php.net/get/php-5.6.4.tar.gz/from/this/mirror
# tar zxvf php-5.6.4.tar.gz
# cd php-5.6.4

# ./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 = 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

자주 살펴보는 파일은 심볼릭 링크를 설정해서 /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
@ 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, mod_security, phpMyAdmin, Mod_Cband, arpwatch, Webalizer, ClamAV, mod_evasive, chkrootkit, 등등…
보안관련 및 서버튜닝은 별도 포스팅을 참조 하시기 바랍니다.
http://nanoomi.org/bbs/board.php?bo_table=03_3

 

nanoomi / 2015년 2월 20일 / 미분류 / 0 Comments

안녕하세요!

나누미의 자잘한 일상에 오신것을 환영 합니다.

그누프레스를 테스트 하려고 WP를 설치 했지만 떡본김에 제사 지낸다고

블로그를 시작해 볼까 합니다만, 뭘로 채울지 난감하네요…..ㅠㅠ

뭔가 하다보면 잘 되겠죠. 천천히 슬슬 시작해 볼께요..하하~

nanoomi / 2015년 2월 9일 / 미분류 / 0 Comments