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