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