1
0

apache-2.4.sh 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. Install_Apache24() {
  11. pushd ${oneinstack_dir}/src
  12. tar xzf pcre-$pcre_version.tar.gz
  13. pushd pcre-$pcre_version
  14. ./configure
  15. make -j ${THREAD} && make install
  16. popd
  17. id -u $run_user >/dev/null 2>&1
  18. [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user
  19. tar xzf httpd-$apache24_version.tar.gz
  20. tar xzf apr-$apr_version.tar.gz
  21. tar xzf apr-util-$apr_util_version.tar.gz
  22. pushd httpd-$apache24_version
  23. [ ! -d "$apache_install_dir" ] && mkdir -p $apache_install_dir
  24. /bin/cp -R ../apr-$apr_version ./srclib/apr
  25. /bin/cp -R ../apr-util-$apr_util_version ./srclib/apr-util
  26. LDFLAGS=-ldl ./configure --prefix=$apache_install_dir --with-mpm=prefork --with-included-apr --enable-headers --enable-deflate --enable-so --enable-dav --enable-rewrite --enable-ssl --with-ssl --enable-expires --enable-static-support --enable-suexec --enable-modules=all --enable-mods-shared=all
  27. make -j ${THREAD} && make install
  28. unset LDFLAGS
  29. if [ -e "$apache_install_dir/conf/httpd.conf" ]; then
  30. echo "${CSUCCESS}Apache installed successfully! ${CEND}"
  31. popd
  32. rm -rf httpd-$apache24_version
  33. else
  34. rm -rf $apache_install_dir
  35. echo "${CFAILURE}Apache install failed, Please contact the author! ${CEND}"
  36. kill -9 $$
  37. fi
  38. [ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$apache_install_dir/bin:\$PATH" >> /etc/profile
  39. [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep $apache_install_dir /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=$apache_install_dir/bin:\1@" /etc/profile
  40. . /etc/profile
  41. /bin/cp $apache_install_dir/bin/apachectl /etc/init.d/httpd
  42. sed -i '2a # chkconfig: - 85 15' /etc/init.d/httpd
  43. sed -i '3a # description: Apache is a World Wide Web server. It is used to serve' /etc/init.d/httpd
  44. chmod +x /etc/init.d/httpd
  45. [ "$OS" == 'CentOS' ] && { chkconfig --add httpd; chkconfig httpd on; }
  46. [[ $OS =~ ^Ubuntu$|^Debian$ ]] && update-rc.d httpd defaults
  47. sed -i "s@^User daemon@User $run_user@" $apache_install_dir/conf/httpd.conf
  48. sed -i "s@^Group daemon@Group $run_user@" $apache_install_dir/conf/httpd.conf
  49. if [ "$Nginx_version" == '4' -a ! -e "$web_install_dir/sbin/nginx" ]; then
  50. sed -i 's/^#ServerName www.example.com:80/ServerName 0.0.0.0:80/' $apache_install_dir/conf/httpd.conf
  51. TMP_PORT=80
  52. elif [[ $Nginx_version =~ ^[1-3]$ ]] || [ -e "$web_install_dir/sbin/nginx" ]; then
  53. sed -i 's/^#ServerName www.example.com:80/ServerName 127.0.0.1:88/' $apache_install_dir/conf/httpd.conf
  54. sed -i 's@^Listen.*@Listen 127.0.0.1:88@' $apache_install_dir/conf/httpd.conf
  55. TMP_PORT=88
  56. fi
  57. sed -i "s@AddType\(.*\)Z@AddType\1Z\n AddType application/x-httpd-php .php .phtml\n AddType application/x-httpd-php-source .phps@" $apache_install_dir/conf/httpd.conf
  58. sed -i "s@#AddHandler cgi-script .cgi@AddHandler cgi-script .cgi .pl@" $apache_install_dir/conf/httpd.conf
  59. sed -ri 's@^#(.*mod_suexec.so)@\1@' $apache_install_dir/conf/httpd.conf
  60. sed -ri 's@^#(.*mod_vhost_alias.so)@\1@' $apache_install_dir/conf/httpd.conf
  61. sed -ri 's@^#(.*mod_rewrite.so)@\1@' $apache_install_dir/conf/httpd.conf
  62. sed -ri 's@^#(.*mod_deflate.so)@\1@' $apache_install_dir/conf/httpd.conf
  63. sed -ri 's@^#(.*mod_expires.so)@\1@' $apache_install_dir/conf/httpd.conf
  64. sed -ri 's@^#(.*mod_ssl.so)@\1@' $apache_install_dir/conf/httpd.conf
  65. sed -i 's@DirectoryIndex index.html@DirectoryIndex index.html index.php@' $apache_install_dir/conf/httpd.conf
  66. sed -i "s@^DocumentRoot.*@DocumentRoot \"$wwwroot_dir/default\"@" $apache_install_dir/conf/httpd.conf
  67. sed -i "s@^<Directory \"$apache_install_dir/htdocs\">@<Directory \"$wwwroot_dir/default\">@" $apache_install_dir/conf/httpd.conf
  68. sed -i "s@^#Include conf/extra/httpd-mpm.conf@Include conf/extra/httpd-mpm.conf@" $apache_install_dir/conf/httpd.conf
  69. #logrotate apache log
  70. cat > /etc/logrotate.d/apache << EOF
  71. $wwwlogs_dir/*apache.log {
  72. daily
  73. rotate 5
  74. missingok
  75. dateext
  76. compress
  77. notifempty
  78. sharedscripts
  79. postrotate
  80. [ -e /var/run/httpd.pid ] && kill -USR1 \`cat /var/run/httpd.pid\`
  81. endscript
  82. }
  83. EOF
  84. mkdir $apache_install_dir/conf/vhost
  85. cat > $apache_install_dir/conf/vhost/0.conf << EOF
  86. <VirtualHost *:$TMP_PORT>
  87. ServerAdmin admin@linuxeye.com
  88. DocumentRoot "$wwwroot_dir/default"
  89. ServerName 127.0.0.1
  90. ErrorLog "$wwwlogs_dir/error_apache.log"
  91. CustomLog "$wwwlogs_dir/access_apache.log" common
  92. <Directory "$wwwroot_dir/default">
  93. SetOutputFilter DEFLATE
  94. Options FollowSymLinks ExecCGI
  95. Require all granted
  96. AllowOverride All
  97. Order allow,deny
  98. Allow from all
  99. DirectoryIndex index.html index.php
  100. </Directory>
  101. <Location /server-status>
  102. SetHandler server-status
  103. Order Deny,Allow
  104. Deny from all
  105. Allow from 127.0.0.1
  106. </Location>
  107. </VirtualHost>
  108. EOF
  109. cat >> $apache_install_dir/conf/httpd.conf <<EOF
  110. <IfModule mod_headers.c>
  111. AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
  112. <FilesMatch "\.(js|css|html|htm|png|jpg|swf|pdf|shtml|xml|flv|gif|ico|jpeg)\$">
  113. RequestHeader edit "If-None-Match" "^(.*)-gzip(.*)\$" "\$1\$2"
  114. Header edit "ETag" "^(.*)-gzip(.*)\$" "\$1\$2"
  115. </FilesMatch>
  116. DeflateCompressionLevel 6
  117. SetOutputFilter DEFLATE
  118. </IfModule>
  119. PidFile /var/run/httpd.pid
  120. ServerTokens ProductOnly
  121. ServerSignature Off
  122. Include conf/vhost/*.conf
  123. EOF
  124. if [ "$Nginx_version" != '4' -o -e "$web_install_dir/sbin/nginx" ]; then
  125. cat > $apache_install_dir/conf/extra/httpd-remoteip.conf << EOF
  126. LoadModule remoteip_module modules/mod_remoteip.so
  127. RemoteIPHeader X-Forwarded-For
  128. RemoteIPInternalProxy 127.0.0.1
  129. EOF
  130. sed -i "s@Include conf/extra/httpd-mpm.conf@Include conf/extra/httpd-mpm.conf\nInclude conf/extra/httpd-remoteip.conf@" $apache_install_dir/conf/httpd.conf
  131. sed -i "s@LogFormat \"%h %l@LogFormat \"%h %a %l@g" $apache_install_dir/conf/httpd.conf
  132. fi
  133. ldconfig
  134. service httpd start
  135. popd
  136. }