ÃֽŠ°Ô½Ã±Û(OS/WAS)
2018.03.22 / 16:19

CentOS 7 Apache 2.4.23 ÄÄÆÄÀÏ ¼³Ä¡

ÈÞ°í
Ãßõ ¼ö 200

- ¸®´ª½º ¹öÀüÀ» È®ÀΠÇÕ´Ï´Ù.

[root@localhost ~]# cat /proc/version
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015

[root@localhost ~]# ip addr | grep "inet "
    inet 127.0.0.1/8 scope host lo
    inet xxx.xxx.xxx.xxx/26 brd xxx.xxx.xxx.xxx scope global eth0


- Apache ¼³Ä¡ ÆÐÅ°Áö Á¤º¸¸¦ È®ÀΠÇÕ´Ï´Ù.

  • Apache HTTP Server
Apache httpd 2.4.23

  • APR(Apache Portable Runtime)
APR 1.5.2 
APR-util 1.5.4 

ÅèĹÀº ¶Ù¾î³­ È®À强, ¼º´É ¹× ±âº» ¼­¹ö ±â¼ú·Î ´õ ³ªÀº ÅëÇÕÀ» Á¦°øÇϱâ À§ÇØ Apache Portable Runtime¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÆÆÄÄ¡ Æ÷ÅÍºí ·±Å¸ÀÓÀº ¾ÆÆÄÄ¡ HTTP ¼­¹ö 2.x.ÀÇ ÇÙ½ÉÀ̸ç ÈÞ´ë¿ë ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ÀÌ·± APRÀº °í±Þ IO ±â´É(¿¹:sendfile, epoll and OpenSSL µî)¿¡ ´ëÇÑ Á¢±ÙÀ» Æ÷ÇÔÇÏ¿© OS ¼öÁØÀÇ ±â´É (³­¼ö »ý¼º, ½Ã½ºÅÛ »óÅÂ), ±×¸®°í ±âº» ÇÁ·Î¼¼½º ó¸®(°øÀ¯ ¸Þ¸ð¸®, NT ÆÄÀÌÇÁ¿Í À¯´Ð½º ¼ÒÄÏ) µî ¸¹Àº ¿ëµµ·Î »ç¿ëµÇ°í ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ ±â´ÉÀº ÀϹÝÀûÀÎ ¸ñÀûÀÇ À¥ ¼­¹ö¸¦ ÅèĹÀ» ÀÌ¿ëÇϵµ·Ï Çϸç, ´Ù¸¥ ±âº» À¥ ±â¼ú°ú ÈξÀ ´õ ÅëÇÕÀ» °¡´ÉÇÏ°Ô ÇÏ°í, Àü¹ÝÀûÀÎ ÀÚ¹Ù°¡ ´Ü¼øÈ÷ ¹é¿£µå¿¡ ÁÖ·ÂÇÑ ±â¼úº¸´Ù Àüü º»°ÝÀûÀÎ À¥¼­¹ö Ç÷§ÆûÀ¸·Î ÈξÀ ´õ ¼º°øÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾î ÁÝ´Ï´Ù.

  • PCRE(Perl Compatible Regular Expressions) - Perl ȣȯ Á¤±Ô Ç¥Çö½Äµé
pcre-8.37 
          
PCRE ¶óÀ̺귯¸®´Â Perl 5 °°Àº ±¸¹®°ú Àǹ̸¦ »ç¿ëÇÏ¿© Á¤±Ô½Ä ÆÐÅÏ ÀÏÄ¡¸¦ ±¸ÇöÇÏ´Â ÇÔ¼öÀÇ ÁýÇÕÀÌ´Ù. PCRE´Â ÀÚü native API »Ó¸¸ ¾Æ´Ï¶ó POSIX Á¤±Ô½Ä API¿¡ ´ëÀÀÇÏ´Â ·¡ÆÛ ÇÔ¼öÀÇ ÁýÇÕµµ Æ÷ÇÔÇÏ°í ÀÖ´Ù. PCRE ¶óÀ̺귯¸®´Â ½ÉÁö¾î proprietary software °³¹ß¿¡ »ç¿ëµÇ¾îµµ ¹«·áÀÌ´Ù.
PCRE´Â ¿ø·¡ Exim MTA(EximÀº Mail Transfer AgentÀÇ ÇÑ Á¾·ù)¸¦ À§ÇØ ¸¸µé¾îÁ³À¸³ª, ¿äÁò¿¡´Â Apache, PHP, KDE µîÀ» Æ÷ÇÔÇÑ À¯¸íÇÑ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡¼­ »ç¿ëµÇ°í ÀÖ´Ù. PCRE´Â ¾ÖÇûçÀÇ »çÆĸ®¿Í °°Àº ¸î¸îÀÇ Àß ¾Ë·ÁÁø »ç¿ë Á¦Ç°¿¡¼­ ±× ¹æ¹ýÀ» ã±âµµ Çß´Ù.
PCRE¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ÇÁ·ÎÁ§Æ®´Â ´ÙÀ½°ú °°´Ù.
Chicken, Ferite, Onyx µî...
Perl 5ÀÇ »ç¿ë¹ý(¶Ç´Â ¹®¹ý)°ú À¯»çÇÏ°Ô ¸¸µé¾î Á³°í, ÀÚÁ¦ APIµµ ÀÖ°í, POSIX¿ÍÀÇ È£È¯¼ºµµ ÁÁ°í, ½ÉÁö¾î ¼ÒÀ¯±ÇÀ» ÁÖÀåÇÒ ¼ö ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡µµ ¹«·á·Î »ç¿ëÇÒ ¼ö ÀÖ°í, ¿ø·¡´Â ¸ÞÀÏ Àü¼Û ¿¡ÀÌÀüÆ® ¿ëÀ¸·Î ¸¸µé¾ú´Âµ¥ Àå¾ÈÀÇ È­Á¦°¡ µÇ¾î ÁÖ¿Á°°Àº ¿ÀÇÁ ¼Ò½º ÇÁ·ÎÁ§Æ®¿¡¼­ µÎ·çµÎ·ç »ç¿ëµÇ°í ÀÖÀ¸¸ç, ¾ÖÇûçÀÇ »çÆĸ®¿Í °°ÀÌ ¾öû À¯¸íÇÑ »ó¿ë Á¦Ç°¿¡µµ »ç¿ëµÇ°í ÀÖ´Ù°í ÇÑ´Ù
 



- Apache ¼³Ä¡ Àü ±âÁ¸ ¼³Ä¡ È®ÀΠÇÕ´Ï´Ù. - YUM

[root@localhost ~]# yum list httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.daumkakao.com
 * extras: ftp.daumkakao.com
 * updates: mirror.premi.st
Available Packages --> ¼³Ä¡°¡´ÉÇÑ ÆäÅ°Áö¸¸ Á¸Àç, Áï ¼³Ä¡µÈ ÆÐÅ°Áö ¹ÌÁ¸Àç
httpd.x86_64                           2.4.6-40.el7.centos.4                           updates
[root@localhost ~]#
[root@localhost ~]# yum list apache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.daumkakao.com
 * extras: ftp.daumkakao.com
 * updates: mirror.premi.st
Error: No matching Packages to list


- Apache ¼³Ä¡ Àü ±âÁ¸ ¼³Ä¡ È®ÀΠÇÕ´Ï´Ù. - RPM

[root@localhost ~]# rpm -qa | grep apache
[root@localhost ~]# rpm -qa | grep httpd
[root@localhost ~]#


- ¼³Ä¡ Àü ÇÊ¿ä ÆÐÅ°Áö¸¦ ¼³Ä¡ ÇÕ´Ï´Ù. - yum update

[root@localhost ~]# yum update

[root@localhost ~]# yum groupinstall "Development Tools"

[root@localhost ~]# yum install libxml2-devel.x86_64 openssl-devel.x86_64 pcre-devel.x86_64 curl-devel libjpeg-devel libpng-devel.x86_64 freetype-devel.x86_64 libmcrypt libmcrypt-devel mhash.x86_64 mhash-devel.x86_64 php-mysql.x86_64 mysql-devel.x86_64 bzip2-devel.x86_64 aspell-devel.x86_64 libtidy.x86_64 libtidy-devel.x86_64 libxslt.x86_64 libxslt-devel.x86_64 glibc-utils.x86_64 libtool-ltdl-devel.x86_64[root@localhost ~]# yum install libxml2-devel.x86_64 openssl-devel.x86_64 pcre-devel.x86_64 curl-devel libjpeg-devel libpng-devel.x86_64 freetype-devel.x86_64 libmcrypt libmcrypt-devel mhash.x86_64 mhash-devel.x86_64 php-mysql.x86_64 mysql-devel.x86_64 bzip2-devel.x86_64 aspell-devel.x86_64 libtidy.x86_64 libtidy-devel.x86_64 libxslt.x86_64 libxslt-devel.x86_64 glibc-utils.x86_64 libtool-ltdl-devel.x86_64 zlib-devel openssl-devel gcc gcc-c++
* ÇÏÀ̶óÀÌÆ® ºÎºÐÀº ÃßÈÄ Ãß°¡µÊ* httpd-devel Àº apache¸¦ compile·Î ¼³Ä¡ ÇÒ°ÍÀ̹ǷΠÁ¦¿ÜÇÏ¿´½À´Ï´Ù.



- ¼³Ä¡ ÆÐÅ°Áö ÀϺΠȮÀΠÇÕ´Ï´Ù.

[root@localhost ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost ~]# g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost ~]# perl --version

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 29 registered patches, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

[root@localhost ~]#



- ¼³Ä¡

  • wgetÀ» ¼³Ä¡ ÇÕ´Ï´Ù.

[root@localhost src]# rpm -qa | grep wget
[root@localhost src]# yum -y install wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.daumkakao.com
 * extras: ftp.daumkakao.com
 * updates: mirror.navercorp.com
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-10.el7_0.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================
 Package           Arch                Version                        Repository         Size
==============================================================================================
Installing:
 wget              x86_64              1.14-10.el7_0.1                base              545 k

Transaction Summary
==============================================================================================
Install  1 Package

Total download size: 545 k
Installed size: 2.0 M
Downloading packages:
wget-1.14-10.el7_0.1.x86_64.rpm                                        | 545 kB  00:00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : wget-1.14-10.el7_0.1.x86_64                                                1/1
  Verifying  : wget-1.14-10.el7_0.1.x86_64                                                1/1

Installed:
  wget.x86_64 0:1.14-10.el7_0.1

Complete!
[root@localhost src]#

  • Apache ´Ù¿î·Îµå ¹× ¾ÐÃà ÇØÁ¦ ÇÕ´Ï´Ù.

[root@localhost src]# cd /usr/local/src/
[root@localhost src]# wget http://apache.tt.co.kr//httpd/httpd-2.4.23.tar.gz
[root@localhost src]# tar xzf httpd-2.4.23.tar.gz
[root@localhost src]# ls -al
ÇÕ°è 8220
drwxr-xr-x.  3 root root       51  8¿ù 24 14:55 .
drwxr-xr-x. 12 root root     4096  8¿ù 24 10:19 ..
drwxr-xr-x. 11  501 games    4096  7¿ù  1 02:15 httpd-2.4.23
-rw-r--r--.  1 root root  8406575  7¿ù  5 04:50 httpd-2.4.23.tar.gz

  • APR(Apache Portable Runtime) ¸ðµâÀ» ¼³Ä¡ ÇÕ´Ï´Ù.

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
[root@localhost src]# tar xzf apr-1.5.2.tar.gz
[root@localhost src]# cd apr-1.5.2
[root@localhost apr-1.5.2]# ./configure -> 1Â÷ ½Ã±â ¿¡·¯ ¹ß»ý
[root@localhost apr-1.5.2]# cp -arp libtool libtoolT
[root@localhost apr-1.5.2]# ./configure
[root@localhost apr-1.5.2]# make
[root@localhost apr-1.5.2]# make install

  • APR-util 1.5.4 ¸ðµâÀ» ¼³Ä¡ ÇÕ´Ï´Ù.

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://mirror.apache-kr.org/apr/apr-util-1.5.4.tar.gz
[root@localhost src]# tar xzf apr-util-1.5.4.tar.gz
[root@localhost src]# cd apr-util-1.5.4
[root@localhost apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/
[root@localhost apr-util-1.5.4]# make
[root@localhost apr-util-1.5.4]# make install

  • PCRE ¸ðµâÀ» ¼³Ä¡ ÇÕ´Ï´Ù.

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
[root@localhost src]# tar xzf pcre-8.37.tar.gz
[root@localhost src]# cd pcre-8.37
[root@localhost pcre-8.37]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre-8.37]# make
[root@localhost pcre-8.37]# make install

  • ¾ÆÆÄÄ¡ À¥¼­¹ö ¼Ò½º ÄÄÆÄÀÏ Àü ÀÛ¾÷

[root@localhost src]# cd /usr/local/src
[root@localhost src]# mv apr-1.5.2 httpd-2.4.23/srclib/apr
[root@localhost src]# mv apr-util-1.5.4 httpd-2.4.23/srclib/apr-util

-- ¾Æ·¡ µÎÁÙÀº configure ÈÄ make ½Ã ÇØ´ç °æ·Î¸¦ ãÁö ¸øÇÏ´Â ¿À·ù ¹ß»ýÇÏ¿© ¸µÅ©¸¦ »ý¼ºÇÕ´Ï´Ù. --> ¹ÌÁøÇàÈÄ Å×½ºÆ® Çغ¾½Ã´Ù. --> ¼º°ø --> ¿øÀÎ:±âÁ¸ httpd-develÀÇ yum ¼³Ä¡·Î httpd ÀÇÁ¸¼º ÀÖ´Â ¸ðµâµéÀÌ ¼³Ä¡µÇ¸é¼­ Ãæµ¹ÀÌ ÀÖ¾ú´ø°ÍÀ¸·Î ÆǴܵÊ.
[root@localhost src]# ln -s /usr/local/src/httpd-2.4.23/srclib/apr-util /usr/local/src/apr-util-1.5.4
[root@localhost src]# ln -s /usr/local/src/httpd-2.4.23/srclib/apr /usr/local/src/apr-1.5.2

  • ¾ÆÆÄÄ¡ À¥¼­¹ö ¼Ò½º ÄÄÆÄÀÏÀ» ÇÕ´Ï´Ù.

[root@localhost src]# cd /usr/local/src
[root@localhost src]# cd httpd-2.4.23
[root@localhost httpd-2.4.23] # ./configure --enable-module=so --enable-mods-shared=most --enable-maintainer-mode --enable-deflate --enable-headers --enable-rewrite --enable-ssl --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balance --with-included-apr --with-pcre=/usr/local/pcre --prefix=/usr/local/apache2
[root@localhost httpd-2.4.23] # make
[root@localhost httpd-2.4.23] # make install



- ¼³Á¤ÆÄÀÏ ¼öÁ¤ ÇÕ´Ï´Ù.

ServerName ¼öÁ¤ ÇÕ´Ï´Ù.
LoadModule unique_id_module moudles/mod_unique_id.so ÁÖ¼® 󸮠ÇÕ´Ï´Ù.

[root@localhost httpd-2.4.23]#  vi /usr/local/apache2/conf/httpd.conf
. . .
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
ServerName localhost

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other

. . .

LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
. . .



- ¹æÈ­º® Æ÷Æ® ¿­±â : http://ironpapa.tistory.com/52 

[root@localhost src]# firewall-cmd --get-active-zones
public
  interfaces: eth0
[root@localhost src]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@localhost src]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@localhost src]# firewall-cmd --reload
success
[root@localhost src]#


- ¾ÆÆÄÄ¡ À¥ ¼­¹ö¸¦ ¼­ºñ½º¿¡ µî·Ï ¹× ½ÇÇà ÇÕ´Ï´Ù.

[root@localhost src]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
[root@localhost src]# vi /etc/init.d/httpd

  #!/bin/sh
  # chkconfig: 2345 90 90
  # description: init file for Apache server daemon
  # processname: /usr/local/apache2/bin/apachectl
  # config: /usr/local/apache2/conf/httpd.conf
  # pidfile: /usr/local/apache2/logs/httpd.pid
  #
[root@localhost src]# service httpd start 


- Apache ¼³Ä¡¸¦ È®ÀΠÇÕ´Ï´Ù.

À¥ºê¶ó¿ìÀú¿¡ ÇØ´ç IP ·Î Á¢¼ÓÈÄ ÆäÀÌÁö È®ÀÎ ÈÄ : http://xxx.xxx.xxx.xxx/ 
[root@localhost src]# vi /usr/local/apache2/htdocs/index.html

It works!




Ãâó: http://subinpapa.tistory.com/41 [subinpapa space]