朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是个井,每个程序员有必要自己挖一口的了。所以想着自己写个自动化安装lnmp的脚本lnmp_auto。
1
2
3
4
5
<code>if</code> <code>[</code><code>$UID</code> <code>-ne 0 ]</code>
<code>then</code>
<code> </code><code>echo</code> <code>"Error: You must be root to run the script!"</code>
<code> </code><code>exit</code> <code>1</code>
<code>fi</code>
有很多种方法,但是如果要输出最简单明了的估计是这种方法了:
<code>MACHINE_LONG_BIT=$(getconf LONG_BIT)</code>
6
7
8
9
10
11
12
13
<code>if</code> <code>grep -q mysql /etc/group</code>
<code> </code><code>echo</code> <code>"mysql group exists"</code>
<code>else</code>
<code> </code><code>groupadd mysql</code>
<code>if</code> <code>groups mysql | grep -q -E</code><code>' mysql(\s|$)'</code>
<code> </code><code>echo</code> <code>"mysql user exists"</code>
<code> </code><code>useradd -r -g mysql mysql</code>
<code>FILELIST=`ls</code><code>$BINARY_MYSQL_PATH</code><code>/bin`</code>
<code>for</code> <code>FILENAME in</code><code>$FILELIST</code>
<code>do</code>
<code> </code><code>ln -sn --force</code><code>$BINARY_MYSQL_PATH</code><code>/bin/</code><code>$FILENAME</code> <code>/bin/</code><code>$FILENAME</code>
<code>done</code>
我们一般使用sed "s/XXXX/OOOO/" file来做替换
但是如果XXXX中包含/并且还有可能包含变量的话,就需要将/符号替换成:了
<code>sed -i</code><code>"s:/usr/local/mysql/data:${BINARY_MYSQL_PATH}/data:"</code> <code>mysql.server.init</code>
在shell中注释一行代码是#,那么注释一段代码就需要使用:<<BLOCK
<code>:<<BLOCK</code>
<code>BINARY_MYSQL_PATH=</code><code>"$ROOT_PATH"</code><code>/binary/mysql</code>
<code>if</code> <code>[ ! -d</code><code>"$BINARY_MYSQL_PATH"</code> <code>]</code>
<code> </code><code>mkdir</code> <code>-p</code><code>$BINARY_MYSQL_PATH</code>
<code>BLOCK</code>
使用read命令将输出记录到一个变量中
<code>checkinstall=</code><code>"n"</code>
<code>read -p</code><code>"Are you sure want to install php into service?(y/n):"</code> <code>checkinstall</code>
<code>if</code> <code>[</code><code>$checkinstall</code><code>=</code><code>"y"</code> <code>]</code>
<code>…</code>
<code>sed -i</code><code>"s/enforcing/disabled/"</code> <code>/etc/selinux/config</code>
这里的i参数就是在当前文件直接做替换,如果觉得不保险可以先做备份
这里不是获取当前的路径(当前路径直接使用pwd就可以获取),比如我在/home/yejianfeng,运行sh lnmp_auto/lnmp_auto.sh,如何获取到lnmp_auto.sh的文件夹路径/home/yejianfeng/lnmp_auto/
本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3364682.html,如需转载请自行联系原作者