apache-2.2.sh 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. # http://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. Install_Apache-2-2()
  11. {
  12. cd $oneinstack_dir/src
  13. src_url=http://mirrors.linuxeye.com/apache/httpd/httpd-$apache_2_version.tar.gz && Download_src
  14. id -u $run_user >/dev/null 2>&1
  15. [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user
  16. tar xzf httpd-$apache_2_version.tar.gz
  17. cd httpd-$apache_2_version
  18. [ ! -d "$apache_install_dir" ] && mkdir -p $apache_install_dir
  19. [ "$ZendGuardLoader_yn" == 'y' -o "$ionCube_yn" == 'y' ] && MPM=prefork || MPM=worker
  20. ./configure --prefix=$apache_install_dir --enable-headers --enable-deflate --enable-mime-magic --enable-so --enable-rewrite --enable-ssl --with-ssl --enable-expires --enable-static-support --enable-suexec --disable-userdir --with-included-apr --with-mpm=$MPM --disable-userdir
  21. make && make install
  22. if [ -e "$apache_install_dir/conf/httpd.conf" ];then
  23. echo "${CSUCCESS}Apache install successfully! ${CEND}"
  24. cd ..
  25. rm -rf httpd-$apache_2_version
  26. else
  27. rm -rf $apache_install_dir
  28. echo "${CFAILURE}Apache install failed, Please contact the author! ${CEND}"
  29. kill -9 $$
  30. fi
  31. [ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$apache_install_dir/bin:\$PATH" >> /etc/profile
  32. [ -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
  33. . /etc/profile
  34. /bin/cp $apache_install_dir/bin/apachectl /etc/init.d/httpd
  35. sed -i '2a # chkconfig: - 85 15' /etc/init.d/httpd
  36. sed -i '3a # description: Apache is a World Wide Web server. It is used to serve' /etc/init.d/httpd
  37. chmod +x /etc/init.d/httpd
  38. OS_CentOS='chkconfig --add httpd \n
  39. chkconfig httpd on'
  40. OS_Debian_Ubuntu='update-rc.d httpd defaults'
  41. OS_command
  42. sed -i "s@^User daemon@User $run_user@" $apache_install_dir/conf/httpd.conf
  43. sed -i "s@^Group daemon@Group $run_user@" $apache_install_dir/conf/httpd.conf
  44. if [ "$Nginx_version" == '3' -a ! -e "$web_install_dir/sbin/nginx" ];then
  45. sed -i 's/^#ServerName www.example.com:80/ServerName 0.0.0.0:80/' $apache_install_dir/conf/httpd.conf
  46. TMP_PORT=80
  47. TMP_IP=$IPADDR
  48. elif [ "$Nginx_version" == '1' -o "$Nginx_version" == '2' -o -e "$web_install_dir/sbin/nginx" ];then
  49. sed -i 's/^#ServerName www.example.com:80/ServerName 127.0.0.1:88/' $apache_install_dir/conf/httpd.conf
  50. sed -i 's@^Listen.*@Listen 127.0.0.1:88@' $apache_install_dir/conf/httpd.conf
  51. TMP_PORT=88
  52. TMP_IP=127.0.0.1
  53. fi
  54. 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
  55. sed -i "s@#AddHandler cgi-script .cgi@AddHandler cgi-script .cgi .pl@" $apache_install_dir/conf/httpd.conf
  56. sed -i 's@^#LoadModule rewrite_module@LoadModule rewrite_module@' $apache_install_dir/conf/httpd.conf
  57. sed -i 's@^#LoadModule\(.*\)mod_deflate.so@LoadModule\1mod_deflate.so@' $apache_install_dir/conf/httpd.conf
  58. sed -i 's@DirectoryIndex index.html@DirectoryIndex index.html index.php@' $apache_install_dir/conf/httpd.conf
  59. sed -i "s@^DocumentRoot.*@DocumentRoot \"$wwwroot_dir/default\"@" $apache_install_dir/conf/httpd.conf
  60. sed -i "s@^<Directory \"$apache_install_dir/htdocs\">@<Directory \"$wwwroot_dir/default\">@" $apache_install_dir/conf/httpd.conf
  61. sed -i "s@^#Include conf/extra/httpd-mpm.conf@Include conf/extra/httpd-mpm.conf@" $apache_install_dir/conf/httpd.conf
  62. #logrotate apache log
  63. cat > /etc/logrotate.d/apache << EOF
  64. $wwwlogs_dir/*apache.log {
  65. daily
  66. rotate 5
  67. missingok
  68. dateext
  69. compress
  70. notifempty
  71. sharedscripts
  72. postrotate
  73. [ -f $apache_install_dir/logs/httpd.pid ] && kill -USR1 \`cat $apache_install_dir/logs/httpd.pid\`
  74. endscript
  75. }
  76. EOF
  77. mkdir $apache_install_dir/conf/vhost
  78. cat >> $apache_install_dir/conf/vhost/0.conf << EOF
  79. NameVirtualHost *:$TMP_PORT
  80. <VirtualHost *:$TMP_PORT>
  81. ServerAdmin admin@linuxeye.com
  82. DocumentRoot "$wwwroot_dir/default"
  83. ServerName $TMP_IP
  84. ErrorLog "$wwwlogs_dir/error_apache.log"
  85. CustomLog "$wwwlogs_dir/access_apache.log" common
  86. <Directory "$wwwroot_dir/default">
  87. SetOutputFilter DEFLATE
  88. Options FollowSymLinks ExecCGI
  89. AllowOverride All
  90. Order allow,deny
  91. Allow from all
  92. DirectoryIndex index.html index.php
  93. </Directory>
  94. </VirtualHost>
  95. EOF
  96. cat >> $apache_install_dir/conf/httpd.conf <<EOF
  97. ServerTokens ProductOnly
  98. ServerSignature Off
  99. AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
  100. DeflateCompressionLevel 6
  101. SetOutputFilter DEFLATE
  102. Include conf/vhost/*.conf
  103. EOF
  104. if [ "$Nginx_version" != '3' -o -e "$web_install_dir/sbin/nginx" ];then
  105. src_url=http://mirrors.linuxeye.com/oneinstack/src/mod_remoteip.c && Download_src
  106. $apache_install_dir/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c
  107. cat > $apache_install_dir/conf/extra/httpd-remoteip.conf << EOF
  108. LoadModule remoteip_module modules/mod_remoteip.so
  109. RemoteIPHeader X-Forwarded-For
  110. RemoteIPInternalProxy 127.0.0.1
  111. EOF
  112. 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
  113. fi
  114. service httpd start
  115. cd ..
  116. }