1 #!/bin/bash
2 PACKAGES="/usr/local/src"
3 APR=apr-1.6.5.tar.gz
4 APR_UTIL=apr-util-1.6.1.tar.gz
5 HTTPD=httpd-2.4.39.tar.gz
6 D_PATH="/usr/local"
7 S_PATH="/usr/src"
8 MYSQL=mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
9 PHP=php-5.6.30.tar.gz
10
11 ###check
12 check(){
13 #必须是root用户才可以
14 [ $UID -ne 0 ]&&echo "need to root is that"&&exit 1
15 #安装依赖
16 yum install -y libtool* &>/dev/null
17 yum install -y expat-devel &>/dev/null
18 yum install -y pcre pcre-devel &>/dev/null
19 yum install -y perl-Module-Install &>/dev/null
20 yum install libxml2-devel bzip2 bzip2-devel libpnglibpng-devel openssl openssl-devel freetype freetype-devel opel-release -y &>/dev/null
21 yum install -y epel-release &>/dev/null
22 yum install -y libmcrypt-devel &>/dev/null
23 if [ $? -eq 0 ];then
24 echo echo "YUM: OK"
25 else
26 echo "YUM: ERROR";exit 1
27 fi
28 }
29 check
30
31 ###apr
32 apr () {
33 if [ -f $PACKAGES/$APR ]; then
34 tar xf $PACKAGES/$APR -C $S_PATH
35
36 if [ -d /usr/src/apr-1.6.5 ] ; then
37 cd /usr/src/apr-1.6.5
38 ./configure --prefix=$D_PATH/apr 1> /dev/null
39 if [ $? -eq 0 ];then
40 make 1> /dev/null
41 if [ $? -eq 0 ];then
42 make install 1>/dev/null
43 if [ $? -ne 0 ];then
44 echo"APR: Make install ERROR EXIT...";exit 1
45 else
46 echo "ok"
47 fi
48 else
49 echo "APR: make ERROR,EXIT...";exit 1
50 fi
51 else
52 echo "APR:Configure ERROR ,EXIT..";exit 1
53 fi
54 else
55 echo "APR: Tar Command ERROR, EXIT. . .";exit 1
56 fi
57 else
58 echo "APR: Not fount $APR ,EIXT. . .";exit 1
59 fi
60 }
61 apr
62
63 ###apr-util
64 apr-util () {
65 if [ -f $PACKAGES/$APR_UTIL ]; then
66 tar xf $PACKAGES/$APR_UTIL -C $S_PATH
67
68 if [ -d /usr/src/apr-util-1.6.1 ] ; then
69 cd /usr/src/apr-util-1.6.1
70 ./configure --prefix=$D_PATH/apr-util --with-apr=$D_PATH/apr 1> /dev/null
71 if [ $? -eq 0 ];then
72 make 1> /dev/null
73 if [ $? -eq 0 ];then
74 make install 1>/dev/null
75 if [ $? -ne 0 ];then
76 echo"APR: Make install ERROR EXIT...";exit 1
77 else
78 echo "ok"
79 fi
80 else
81 echo "APR_UTIL: make ERROR,EXIT...";exit 1
82 fi
83 else
84 echo "APR_UTIL:Configure ERROR ,EXIT..";exit 1
85 fi
86 else
87 echo "APR_UTIL: Tar Command ERROR, EXIT. . .";exit 1
88 fi
89 else
90 echo "APR_UTIL: Not fount $APR_UTIL ,EIXT. . .";exit 1
91 fi
92 }
93 apr-util
94
95 ###httpd
96 httpd () {
97 if [ -f $PACKAGES/$HTTPD ]; then
98 tar xf $PACKAGES/$HTTPD -C $S_PATH
99
100 if [ -d /usr/src/httpd-2.4.39 ] ; then
101 cd /usr/src/httpd-2.4.39
102 if [ $? -eq 0 ];then
103 ./configure --prefix=$D_PATH/apache2.4 --with-apr=$D_PATH/apr --with-apr-util=$D_PATH/apr-util --enable-so --enable-mods-shared=most 1> /dev/null
104 make 1> /dev/null
105 if [ $? -eq 0 ];then
106 make install 1>/dev/null
107 if [ $? -ne 0 ];then
108 echo"HTTPD: Make install ERROR EXIT...";exit 1
109 else
110 echo "ok"
111 fi
112 else
113 echo "HTTPD: make ERROR,EXIT...";exit 1
114 fi
115 else
116 echo "HTTPD:Configure ERROR ,EXIT..";exit 1
117 fi
118 else
119 echo "HTTPD: Tar Command ERROR, EXIT. . .";exit 1
120 fi
121 else
122 echo "HTTPD: Not fount $APR_UTIL ,EIXT. . .";exit 1
123 fi
124 }
125 httpd
126
127 ###mysql
128
129 mysql () {
130 if [ -f $PACKAGES/$MYSQL ]; then
131 tar xf $PACKAGES/$MYSQL -C $S_PATH
132 if [ -d $S_PATH/ ]; then
133 mv $S_PATH/mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql
134 cd /usr/local/mysql
135 useradd -s /sbin/nologin mysql
136 mkdir -p /data/mysql
137 chown -R mysql:mysql /data/mysql
138 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
139 cp support-files/my-default.cnf /etc/my.cnf
140 sed -i '/mysqld/a\basedir = /usr/local/mysql' /etc/my.cnf;
141 sed -i '/mysqld/a\datadir = /data/mysql' /etc/my.cnf;
142 sed -i '/mysqld/a\port = 3306' /etc/my.cnf;
143 sed -i '/mysqld/a\server_id = 128' /etc/my.cnf;
144 sed -i '/mysqld/a\socket = /tmp/mysql.sock' /etc/my.cnf;
145 cp support-files/mysql.server /etc/init.d/mysqld
146 sed -i 's/^basedir=//' /etc/init.d/mysqld
147 sed -i 's/^datadir=//' /etc/init.d/mysqld
148 sed -i '/overwritten by settings in the MySQL configuration files/a\basedir=/usr/local/mysql' /etc/init.d/mysqld
149 sed -i '/overwritten by settings in the MySQL configuration files/a\datadir=/data/mysql' /etc/init.d/mysqld
150 chkconfig --add mysqld
151 chkconfig mysqld on
152 service mysqld start
153 else
154 echo "MYSQSL: Configure ERROR , EIXT..." ;exit 1
155 fi
156 else
157 echo "MYSQSL: Tar Command ERROR , EIXT..." ;exit 1
158 fi
159 }
160 mysql
161
162 ##php
163 php () {
164 if [ -f $PACKAGES/$PHP ]; then
165 tar xf $PACKAGES/$PHP -C $S_PATH
166
167 if [ -d /usr/src/php-5.6.30 ] ; then
168 cd /usr/src/php-5.6.30
169 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif 1>/dev/null
170 if [ $? -eq 0 ];then
171 make 1> /dev/null
172 if [ $? -eq 0 ];then
173 make install 1>/dev/null
174 if [ $? -ne 0 ];then
175 echo"APR: Make install ERROR EXIT...";exit 1
176 else
177 cp php.ini-production $D_PATH/php/etc/php.ini
178 sed -i s'/#ServerName/ServerName/' /usr/local/apache2.4/conf/httpd.conf
179 sed -i s'/Require all denied/Require all granted/' /usr/local/apache2.4/conf/httpd.conf
180 sed -i '/AddType application/x-gzip/a\AddType application/x-httpd-php .php' /usr/local/apache2.4/conf/httpd.conf
181 sed -i 's/DirectoryIndex index.html/DirectoryIndex index.html index.php/' /usr/local/apache2.4/conf/httpd.conf
182 /usr/local/apache2.4/bin/apachectl -t
183 /usr/local/apache2.4/bin/apachectl start
184
185 fi
186 else
187 echo "PHP: make ERROR,EXIT...";exit 1
188 fi
189 else
190 echo "PHP:Configure ERROR ,EXIT..";exit 1
191 fi
192 else
193 echo "PHP: Tar Command ERROR, EXIT. . .";exit 1
194 fi
195 else
196 echo "PHP: Not fount $APR ,EIXT. . .";exit 1
197 fi
198 }
199 php
200
201 vi /usr/local/apache2.4/htdocs/1.php
202 curl localhost/1.php