天天看點

shell腳本:一鍵安裝LAMP、LNMP腳本

曆時三天邊寫邊測試,終于完成目前最長代碼的腳本,總共253行,在2台機器安裝LAMP,LNMP都順利通過,腳本可做為生産環境使用。

腳本需要注意的地方:

1:腳本适用于centos系統6.5以上,幹淨系統;如安裝過其他環境需要修改腳本内容;

2:腳本适用于:apache 2.4.x 版本;mysql5.5.x以上版本;php5.5.x以上版本;

3:mysql 、php、 apache、 nginx 安裝包事先要下載下傳到/usr/local/src目錄下,如名字不對需要更改腳本裡的軟體包名稱;

腳本安裝的版本為以下,如需其他名稱,請自行修改軟體安裝包名稱和對應的目錄名即可;

httpd-2.4.7.tar.gz 、mysql-5.6.25.tar.gz 、nginx-1.6.2.tar.gz、 php-5.6.8.tar.gz

4:腳本沒有增加判斷,設定的環境為幹淨系統;

腳本内容如下:

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

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

<code>#!/bin/bash</code>

<code>#written by mofansheng @2015-11-06</code>

<code>#one key install LAMP or LNMP scripts; apply to apache 2.4.x,mysql 5.6.x,nginx 1.6.x;</code>

<code>. </code><code>/etc/init</code><code>.d</code><code>/functions</code>

<code>#check the results of the command execution</code>

<code>function</code> <code>check_ok(){</code>

<code>  </code><code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ]</code>

<code>   </code><code>then</code>

<code>     </code><code>continue</code>

<code>  </code><code>else</code>

<code>     </code><code>echo</code> <code>"please check error"</code>

<code>     </code><code>exit</code>

<code>  </code><code>fi</code>

<code>}</code>

<code>function</code> <code>yum_update(){</code>

<code> </code><code>#set yum repos</code>

<code> </code><code>echo</code> <code>"===update yum repos,it will take serval mintinues==="</code>

<code> </code><code>yum </code><code>install</code> <code>wget -y</code>

<code> </code><code>mv</code> <code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo.bak</code>

<code> </code><code>wget -O </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo http:</code><code>//mirrors</code><code>.aliyun.com</code><code>/repo/Centos-6</code><code>.repo &amp;&gt;</code><code>/dev/null</code>

<code> </code><code>wget -O </code><code>/etc/yum</code><code>.repos.d</code><code>/epel</code><code>.repo http:</code><code>//mirrors</code><code>.aliyun.com</code><code>/repo/epel-6</code><code>.repo &amp;&gt;</code><code>/dev/null</code>

<code> </code><code>yum clean all &amp;&gt;</code><code>/dev/null</code>

<code> </code><code>yum makecache &amp;&gt;</code><code>/dev/null</code>

<code> </code><code>check_ok</code>

<code> </code><code>action  </code><code>"yum repos update is ok"</code> <code>/bin/true</code>

<code>function</code> <code>yum_depend(){</code>

<code>   </code><code>#install dependencies packages</code>

<code>   </code><code>yum </code><code>install</code> <code>wget gcc gcc-c++ </code><code>make</code> <code>re2c curl curl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel libmcrypt libmcrypt-devel zlib zlib-devel openssl openssl-devel freetype freetype-devel gd gd-devel perl perl-devel ncurses ncurses-devel bison bison-devel libtool gettext gettext-devel cmake </code><code>bzip2</code> <code>bzip2</code><code>-devel pcre pcre-devel -y</code>

<code>function</code> <code>install_mysql(){</code>

<code> </code><code>echo</code> <code>"mysql5.6.25 will be installed,please be patient"</code>

<code> </code><code>cd</code> <code>/usr/local/src</code>

<code> </code><code>tar</code> <code>-zxf mysql-5.6.25.</code><code>tar</code><code>.gz</code>

<code> </code><code>cd</code> <code>mysql-5.6.25</code>

<code> </code><code>cmake -DCMAKE_INSTALL_PREFIX=</code><code>/usr/local/mysql</code> <code>-DMYSQL_DATADIR=</code><code>/data/mysql</code> <code>-DMYSQL_UNIX_ADDR=</code><code>/usr/local/mysql/mysql</code><code>.sock -DSYSCONFDIR=</code><code>/etc</code> <code>-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci</code>

<code> </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code> </code> 

<code> </code><code>useradd</code> <code>-M -s </code><code>/sbin/nologin</code> <code>mysql</code>

<code> </code><code>mkdir</code> <code>-p </code><code>/data/mysql</code>

<code> </code><code>chown</code> <code>-R mysql:mysql </code><code>/data/mysql/</code>

<code> </code><code>chown</code> <code>-R mysql:mysql </code><code>/usr/local/mysql/</code>

<code> </code><code>cd</code> <code>/usr/local/mysql/scripts/</code>

<code> </code><code>.</code><code>/mysql_install_db</code> <code>--basedir=</code><code>/usr/local/mysql/</code> <code>--datadir=</code><code>/data/mysql/</code> <code>--user=mysql</code>

<code> </code><code>/bin/cp</code> <code>/usr/local/mysql/my</code><code>.cnf </code><code>/etc/my</code><code>.cnf</code>

<code> </code><code>sed</code> <code>-i </code><code>'/^\[mysqld\]$/a\user = mysql\ndatadir = /data/mysql\ndefault_storage_engine = InnoDB\n'</code> <code>/etc/my</code><code>.cnf</code>

<code> </code><code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>

<code> </code><code>sed</code> <code>-i </code><code>'s#^datadir=#datadir=/data/mysql#'</code> <code>/etc/init</code><code>.d</code><code>/mysqld</code>

<code> </code><code>sed</code> <code>-i </code><code>'s#^basedir=#basedir=/usr/local/mysql#'</code> <code>/etc/init</code><code>.d</code><code>/mysqld</code>

<code> </code><code>service mysqld start</code>

<code> </code><code>chkconfig --add mysqld</code>

<code> </code><code>chkconfig mysqld on</code>

<code> </code><code>iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT</code>

<code> </code><code>/etc/init</code><code>.d</code><code>/iptables</code> <code>save</code>

<code> </code><code>echo</code> <code>"export PATH=$PATH:/usr/local/mysql/bin"</code> <code>&gt;&gt;</code><code>/etc/profile</code>

<code> </code><code>source</code> <code>/etc/profile</code>

<code>function</code> <code>install_apache(){</code>

<code> </code><code>echo</code> <code>"apache2.4.7 will be installed,please be patient"</code>

<code> </code><code>wget http:</code><code>//mirrors</code><code>.cnnic.cn</code><code>/apache/apr/apr-1</code><code>.5.2.</code><code>tar</code><code>.gz</code>

<code> </code><code>wget http:</code><code>//mirrors</code><code>.cnnic.cn</code><code>/apache/apr/apr-util-1</code><code>.5.4.</code><code>tar</code><code>.gz</code>

<code> </code><code>tar</code> <code>zxf apr-1.5.2.</code><code>tar</code><code>.gz</code>

<code> </code><code>cd</code> <code>apr-1.5.2</code>

<code> </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/apr</code>

<code> </code><code>tar</code> <code>zxf apr-util-1.5.4.</code><code>tar</code><code>.gz</code>

<code> </code><code>cd</code> <code>apr-util-1.5.4</code>

<code> </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/apr-util</code> <code>--with-apr=</code><code>/usr/local/apr</code>

<code> </code><code>tar</code> <code>zxf httpd-2.4.7.</code><code>tar</code><code>.gz</code>

<code> </code><code>/bin/cp</code> <code>-r apr-1.5.2 </code><code>/usr/local/src/httpd-2</code><code>.4.7</code><code>/srclib/apr</code>

<code> </code><code>/bin/cp</code> <code>-r apr-util-1.5.4 </code><code>/usr/local/src/httpd-2</code><code>.4.7</code><code>/srclib/apr-util</code>

<code> </code><code>cd</code> <code>httpd-2.4.7</code>

<code> </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/apache2</code> <code>--with-apr=</code><code>/usr/local/apr</code> <code>--with-apr-util=</code><code>/usr/local/apr-util/</code> <code>--with-pcre --</code><code>enable</code><code>-mods-shared=most --</code><code>enable</code><code>-so --with-included-apr</code>

<code> </code><code>echo</code> <code>"export PATH=$PATH:/usr/local/apache2/bin"</code> <code>&gt;&gt;</code><code>/etc/profile</code>

<code> </code><code>iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</code>

<code> </code><code>/usr/local/apache2/bin/apachectl</code>

<code>function</code> <code>install_php(){</code>

<code> </code><code>echo</code> <code>"php5.6.8 will be installed,please be patient"</code>

<code> </code><code>tar</code> <code>zxf php-5.6.8.</code><code>tar</code><code>.gz</code>

<code> </code><code>cd</code> <code>php-5.6.8</code>

<code> </code><code>.</code><code>/configure</code>   <code>--prefix=</code><code>/usr/local/php</code>   <code>--with-apxs2=</code><code>/usr/local/apache2/bin/apxs</code>   <code>--with-config-</code><code>file</code><code>-path=</code><code>/usr/local/php/etc</code>   <code>--with-mysql=</code><code>/usr/local/mysql</code>   <code>--with-libxml-</code><code>dir</code>   <code>--with-gd   --with-jpeg-</code><code>dir</code>   <code>--with-png-</code><code>dir</code>   <code>--with-freetype-</code><code>dir</code>   <code>--with-iconv-</code><code>dir</code>   <code>--with-zlib-</code><code>dir</code>   <code>--with-bz2   --with-openssl   --with-mcrypt   --</code><code>enable</code><code>-soap   --</code><code>enable</code><code>-gd-native-ttf   --</code><code>enable</code><code>-mbstring   --</code><code>enable</code><code>-sockets   --</code><code>enable</code><code>-exif   --disable-ipv6</code>

<code> </code><code>cp</code> <code>/usr/local/src/php-5</code><code>.6.8</code><code>/php</code><code>.ini-production </code><code>/usr/local/php/etc/php</code><code>.ini</code>

<code> </code><code>sed</code> <code>-i </code><code>'s#^;date.timezone =#date.timezone=Asia/Shanghai#'</code> <code>/usr/local/php/etc/php</code><code>.ini</code>

<code>function</code> <code>set_lamp(){</code>

<code> </code><code>sed</code> <code>-i </code><code>'/AddType application\/x-gzip .gz .tgz/a\    AddType application/x-httpd-php .php\n'</code> <code>/usr/local/apache2/conf/httpd</code><code>.conf</code>

<code> </code><code>sed</code> <code>-i </code><code>'s#index.html#index.html index.php#'</code> <code>/usr/local/apache2/conf/httpd</code><code>.conf</code>

<code> </code><code>sed</code> <code>-i </code><code>'/#ServerName www.example.com:80/a\ServerName localhost:80\n'</code> <code>/usr/local/apache2/conf/httpd</code><code>.conf</code>

<code>cat</code> <code>&gt;&gt;</code><code>/usr/local/apache2/htdocs/test</code><code>.php&lt;&lt;EOF</code>

<code>&lt;?php</code>

<code>echo</code> <code>"PHP is OK\n"</code><code>;</code>

<code>?&gt;</code>

<code>EOF</code>

<code> </code><code>/usr/local/apache2/bin/apachectl</code> <code>graceful</code>

<code> </code><code>curl localhost</code><code>/test</code><code>.php</code>

<code> </code><code>action </code><code>"LAMP is install success"</code> <code>/bin/true</code>

<code>function</code> <code>install_phpfpm(){</code>

<code> </code><code>useradd</code> <code>-s </code><code>/sbin/nologin</code> <code>php-fpm</code>

<code> </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/php-fpm</code> <code>--with-config-</code><code>file</code><code>-path=</code><code>/usr/local/php-fpm/etc</code> <code>--</code><code>enable</code><code>-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-libxml-</code><code>dir</code> <code>--with-gd --with-jpeg-</code><code>dir</code> <code>--with-png-</code><code>dir</code> <code>--with-freetype-</code><code>dir</code> <code>--with-iconv-</code><code>dir</code> <code>--with-zlib-</code><code>dir</code> <code>--with-mcrypt --</code><code>enable</code><code>-soap --</code><code>enable</code><code>-gd-native-ttf --</code><code>enable</code><code>-</code><code>ftp</code> <code>--</code><code>enable</code><code>-exif --disable-ipv6 --with-pear --with-curl --</code><code>enable</code><code>-bcmath --</code><code>enable</code><code>-mbstring --</code><code>enable</code><code>-sockets --with-gettext</code>

<code> </code><code>cp</code> <code>/usr/local/src/php-5</code><code>.6.8</code><code>/php</code><code>.ini-production </code><code>/usr/local/php-fpm/etc/php</code><code>.ini</code>

<code> </code><code>sed</code> <code>-i </code><code>'s#^;date.timezone =#date.timezone=Asia/Shanghai#'</code> <code>/usr/local/php-fpm/etc/php</code><code>.ini</code>

<code> </code><code>cd</code> <code>/usr/local/php-fpm/etc/</code>

<code> </code><code>mv</code> <code>php-fpm.conf.default php-fpm.conf</code>

<code> </code><code>cp</code> <code>/usr/local/src/php-5</code><code>.6.8</code><code>/sapi/fpm/init</code><code>.d.php-fpm </code><code>/etc/init</code><code>.d</code><code>/php-fpm</code>

<code> </code><code>chmod</code> <code>755 </code><code>/etc/init</code><code>.d</code><code>/php-fpm</code>

<code> </code><code>chkconfig --add php-fpm</code>

<code> </code><code>chkconfig php-fpm on</code>

<code> </code><code>service php-fpm start</code>

<code>function</code> <code>install_nginx(){</code>

<code> </code><code>echo</code> <code>"nginx1.6.2 will be installed,please be patient"</code>

<code> </code><code>tar</code> <code>zxf nginx-1.6.2.</code><code>tar</code><code>.gz</code>

<code> </code><code>cd</code> <code>nginx-1.6.2</code>

<code> </code><code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/nginx</code> <code>--with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module</code>

<code> </code><code>/usr/local/nginx/sbin/nginx</code>

<code>function</code> <code>set_lnmp(){</code>

<code> </code><code>sed</code> <code>-i </code><code>'56a\location ~ \.php$ {\n\    root           html;\n\    fastcgi_pass   127.0.0.1:9000;\n\    fastcgi_index  index.php;\n\    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;\n\    include        fastcgi_params;\n\}\n'</code> <code>/usr/local/nginx/conf/nginx</code><code>.conf</code>

<code> </code><code>/usr/local/nginx/sbin/nginx</code> <code>-s reload</code>

<code> </code><code>echo</code> <code>-e </code><code>'&lt;?php\n echo "nginx and PHP is OK";\n?&gt;\n'</code> <code>&gt;</code><code>/usr/local/nginx/html/index</code><code>.php</code>

<code> </code><code>curl localhost</code><code>/index</code><code>.php</code>

<code> </code><code>action </code><code>"LNMP is install success"</code> <code>/bin/true</code>

<code>function</code> <code>install_lamp(){</code>

<code> </code><code>echo</code> <code>"apache 2.4.7 mysql 5.6.24 php5.6.8 will be installed"</code>

<code> </code><code>echo</code> <code>"===update yum repos and install dependecies packages,it will take serval mintinues==="</code>

<code> </code><code>yum_update</code>

<code> </code><code>yum_depend</code>

<code> </code><code>install_mysql</code>

<code> </code><code>install_apache</code>

<code> </code><code>install_php</code>

<code> </code><code>set_lamp</code>

<code>function</code> <code>install_lnmp(){</code>

<code> </code><code>echo</code> <code>"nginx1.6.2 mysql 5.6.24 php5.6.8 will be installed"</code>

<code> </code><code>install_phpfpm</code>

<code> </code><code>install_nginx</code>

<code> </code><code>set_lnmp</code>

<code>cat</code> <code>&lt;&lt;EOF</code>

<code>    </code><code>1:[</code><code>install</code> <code>LAMP]</code>

<code>    </code><code>2:[</code><code>install</code> <code>LNMP]</code>

<code>    </code><code>3:[</code><code>exit</code><code>]</code>

<code>read</code> <code>-t 10 -p </code><code>"please input the num you want:"</code> <code>input</code>

<code>case</code> <code>${input} </code><code>in</code>

<code> </code><code>1)</code>

<code> </code><code>install_lamp</code>

<code> </code><code>;;</code>

<code> </code><code>2)</code>

<code> </code><code>install_lnmp</code>

<code> </code><code>3)</code>

<code> </code><code>exit</code>

<code> </code><code>*)</code>

<code> </code><code>printf</code> <code>"You must input only in {1|2|3}\n"</code>

<code>esac</code>

<b></b>

<b>本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1711851,如需轉載請自行聯系原作者</b>