CentOS7 64bit+httpd2.4.23+Mariadb10.1.18+php7.0.13 +Zendopcache 소스설치… 정보
CentOS7 64bit+httpd2.4.23+Mariadb10.1.18+php7.0.13 +Zendopcache 소스설치…본문
나누미 서버가 하드 문제로 다운되어 SSD로 교체하고 최신 버전 APM으로 교체하면서 만든 자료 입니다.
보시고 그저 따라하시면 최신버전 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 a2ps acpid alsa-lib 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 crash createrepo crypto-utils cryptsetup-luks cups-libs cvs cyrus-sasl-md5 cyrus-sasl-plain 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 hdparm hesiod hicolor-icon-theme imake iptraf iptstate ipvsadm irqbalance kernel-devel kernel-headers keyutils-libs-devel kpartx krb5-devel krb5-workstation ksh 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 libcurl-devel libdaemon libevent libfontenc libgomp 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 ntp ntsysv numactl oddjob openssh-clients openssl-devel pam-devel pam_krb5 pam_pkcs11 pango parted parted-devel patch pax pciutils pcsc-lite perl perl-Archive-Tar 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-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 quota rdate rdist rmt rpcbind rpm-build rsh rsync rusers rwho samba samba-client samba-common 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 vim-common vim-enhanced vsftpd wget words xinetd xorg-x11-proto-devel yp-tools ypbind ypserv zip zlib-devel GConf2 ImageMagick ImageMagick-perl avahi-libs bwidget crda cryptsetup-luks-libs cups 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 html2ps hunspell iw jasper-libs kpathsea 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 libxcb libxcb-devel lm_sensors-libs mesa-dri-drivers mozilla-filesystem mpfr netpbm-progs 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 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-fonts texlive-texmf-latex 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 gdbm zlib curl openssl bzip2-devel bison system-config-securitylevel readline-devel cmake lynx php-snmp gd-devel glibc-* net-tools nano
@ 방화벽 설정
방화벽 정지
# systemctl mask firewalld
# systemctl stop firewalld
iptables 기본으로 사용할수 있게 설정
# systemctl enable iptables
iptables 서비스 시작
# systemctl start iptables
정상작동 확인
# iptables -nL
@ 기타 모듈 설치
# cd /usr/local/src
# mkdir etc
# cd etc
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.6.2.tar.gz
# wget https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.1.tar.gz
# wget http://ijg.org/files/jpegsrc.v9b.tar.gz
# wget http://sourceforge.net/projects/libpng/files/libpng16/1.6.21/libpng-1.6.21.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.38.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.2.tar.gz; tar zxvf libgd-2.1.1.tar.gz; tar zxvf jpegsrc.v9b.tar.gz; tar zxvf libpng-1.6.21.tar.gz; tar zxvf imap-2007f.tar.gz; tar zxvf pcre-8.38.tar.gz; tar zxvf libmcrypt-2.5.8.tar.gz; tar zxvf libiconv-1.14.tar.gz
# cd /usr/local/src/etc/jpeg-9b;./configure --prefix=/usr/local/jpeg --enable-shared --enable-static;make clean;make -j4; make install;
# cd /usr/local/src/etc/libpng-1.6.21
# cp scripts/makefile.linux Makefile
# make clean;make -j4;make install
# cd /usr/local/src/etc/freetype-2.6.2
# 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
# vi Makefile
Makefile을 오픈하여 EXTRACFLAGS= 를 EXTRACFLAGS=-fPIC 로 수정 하고 :wq를 이용해 저장 합니다.
# 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.38
# 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
/usr/local/src/etc/libiconv-1.14/srclib/stdio.in.h 파일 698줄을 다음과 같이
+#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 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
# 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
*** httpd 2.4.23 설치 ***
# cd /usr/local/src
# wget http://apache.arvixe.com/httpd/httpd-2.4.23.tar.gz
# tar zxvf httpd-2.4.23.tar.gz
prefork 설정시
# vi /usr/local/src/httpd-2.4.23/server/mpm/prefork/prefork.c (73번 라인)
DEFAULT_SERVER_LIMIT의 상수값을 1024로 수정.
worker 설정시
# vi /usr/local/src/httpd-2.4.23/server/mpm/worker/worker.c (84번 라인)
DEFAULT_SERVER_LIMIT의 상수값을 64로 수정.
event 설정시
# vi /usr/local/src/httpd-2.4.23/server/mpm/event/event.c
DEFAULT_SERVER_LIMIT의 상수값을 64로 수정.
# cd httpd-2.4.23
# ./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
# 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 http://php.net/distributions/php-5.6.27.tar.gz
# tar zxvf php-7.0.13.tar.gz
# cd php-7.0.13
# ./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-imap=/usr/local/imap \
--with-imap-ssl \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli=/usr/local/mariadb/bin/mysql_config \
--with-openssl \
--with-pdo-mysql=/usr/local/mariadb \
--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,exec,passthru,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source 또는
자주 살펴보는 파일은 심볼릭 링크를 설정해서 /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-20151012/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
2
댓글 12개
센토 써야 하나? 우분투 쓰고 싶은데요.. 정말 고민인데요? ㅎㅎ
고맙습니다. 선배님.. 꾸벅
어느것이든 하나만 파다보면 다른것도 자연스럽게 알수 있답니다.....ㅎㅎ
하지만 최근, 서버는 센토라는 대세도 있더라고요. ㅠㅠ
선배님 말씀 지당하시다 저도 생각합니다.
어떤 분야를 전공하던. 하나를 파다보면
다른 것도 자연스럽게 된다는 말씀 급 동의합니당!!
감사합니다.
ftp도 별도 설치해서 설정해야 되는거죠?
저상태에서 SFTP와 SSH를 사용 하시면 됩니다.
그런데 알려주신데로 진행하다 보니 libmcrypt-2.5.8.tar.gz 파일이 압축이 안풀리는데
이유가 궁금하네요. 혹시 힌트라도 알 수 있을까요.
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[root@150-95-139-77 etc]# tar zxvf libmcrypt-2.5.8.tar.gz
라고 나오네요. ㅎㅎ ㅠㅠ
그냥 yum으로
#yum -y install libmcrypt
이렇게 설치해도 문제 없을까요? ㅎ
정상적으로 다운로드가 안되면 포맷이 안맞다고 나오기도 하거든요.
yum -y install libmcrypt 는 설치가 안되는걸로 압니다.
다른 repo를 설치하고 해야 할것으로 기억이 되네요.
다시한번 도전해봐야겠습니다. repo라는게 뭔지 처음 들었네요 ㅎㅎ ^^
답변 고맙습니다.
시간이 되면 아파치님 코드와 비교해서 합쳐진 것을 만들어 봐야 겠습니다. (나중에 찾기 편하게 여기에 달아 놓습니다.)
단지 아파치가 아니고 Nginx 라서
전 그냥 아파치 소스 설치하고 만들어둔 스크립터로 설치 한답니다....ㅎㅎ