朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是个井,每个程序员有必要自己挖一口的了。所以想着自己写个自动化安装lnmp的脚本lnmp_auto。

源代码在github上:https://github.com/jianfengye/lnmp_auto

本文记录下写的过程中遇到的几个shell问题:

如何判断当前用户是否是root用户

if [ $UID -ne 0 ]
then
echo "Error: You must be root to run the script!"
exit 1
fi

如何判断机器是64位还是32位

有很多种方法,但是如果要输出最简单明了的估计是这种方法了:

MACHINE_LONG_BIT=$(getconf LONG_BIT)

如何判断一个组存在,并且这个组内有某个用户

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

如何将一个目录内的所有文件批量软连接到另外一个目录内

     FILELIST=`ls $BINARY_MYSQL_PATH/bin`
for FILENAME in $FILELIST
do
ln -sn --force $BINARY_MYSQL_PATH/bin/$FILENAME /bin/$FILENAME
done

在sed中要替换的正则包含/符号和变量$XXX怎么办

我们一般使用sed "s/XXXX/OOOO/" file来做替换

但是如果XXXX中包含/并且还有可能包含变量的话,就需要将/符号替换成:了

sed -i "s:/usr/local/mysql/data:${BINARY_MYSQL_PATH}/data:" mysql.server.init

如何注释一段代码

在shell中注释一行代码是#,那么注释一段代码就需要使用:<<BLOCK

:<<BLOCK
BINARY_MYSQL_PATH="$ROOT_PATH"/binary/mysql
if [ ! -d "$BINARY_MYSQL_PATH" ]
then
mkdir -p $BINARY_MYSQL_PATH
fi
BLOCK

shell如何进行交互

使用read命令将输出记录到一个变量中

checkinstall="n"
read -p "Are you sure want to install php into service?(y/n):" checkinstall
if [ $checkinstall="y" ]
then

fi

如何关闭selinux

sed -i "s/enforcing/disabled/" /etc/selinux/config

这里的i参数就是在当前文件直接做替换,如果觉得不保险可以先做备份

如何获取运行shell的shell文件夹路径

这里不是获取当前的路径(当前路径直接使用pwd就可以获取),比如我在/home/yejianfeng,运行sh lnmp_auto/lnmp_auto.sh,如何获取到lnmp_auto.sh的文件夹路径/home/yejianfeng/lnmp_auto/

$(cd "$(dirname "$0")"; pwd) 

lnmp_auto:自动化安装lnmp环境脚本的更多相关文章

  1. 【转】lnmp_auto:自动化安装lnmp环境脚本

    原文链接: lnmp_auto:自动化安装lnmp环境脚本  这哥们整理的这篇博文很好  转载分享 博文转载如下: 源代码在github上:https://github.com/jianfengye/ ...

  2. Shell脚本一键安装LNMP环境

    https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则 ...

  3. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  4. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  5. Centos 6.8编译安装LNMP环境

    Centos 6.8编译安装LNMP环境 参考资料: http://www.jb51.net/article/107429.htm https://phperzh.com/articles/1360 ...

  6. 阿里云Ubuntu安装LNMP环境之PHP7

    在QQ群很多朋友问阿里云服务器怎么安装LNMP环境,怎么把项目放到服务器上面去,在这里,我就从头开始教大家怎么在阿里云服务器安装LNMP环境. 在这之前,我们先要知道什么是LNMP. L: 表示的是L ...

  7. 阿里云Ubuntu安装LNMP环境之Mysql

    在QQ群很多朋友问阿里云服务器怎么安装LNMP环境,怎么把项目放到服务器上面去,在这里,我就从头开始教大家怎么在阿里云服务器安装LNMP环境. 在这之前,我们先要知道什么是LNMP. L: 表示的是L ...

  8. 阿里云Ubuntu安装LNMP环境之Nginx

    在QQ群很多朋友问阿里云服务器怎么安装LNMP环境,怎么把项目放到服务器上面去,在这里,我就从头开始教大家怎么在阿里云服务器安装LNMP环境. 在这之前,我们先要知道什么是LNMP. L: 表示的是L ...

  9. CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)

    记录下在CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)过程笔记. 工具 VMware版本号 : 12.0.0 CentOS版本 : 7.0 一.修改 ...

随机推荐

  1. 管理windows防火墙

    1.导出防火墙规则 netsh advfirewall export "c:\advfirewall.wfw" 2.禁用防火墙 netsh firewall set opmode ...

  2. 闲聊Redshift与日本CG行业的近况

    最近不少朋友跟我说Redshift如何如何,恰巧我目前工作的工作室花费了巨资购买了Redshift和Quadro M4000,妄图在艺术家工作站上做一个新的动画项目,把渲染时间控制在15分钟以下.结果 ...

  3. ImageEdit 加载图片

    从本地加载图片 <dxe:ImageEdit Name="iePortrait" Height="120" Width="100" S ...

  4. 如何增强 Linux 系统的安全性,第一部分: Linux 安全模块(LSM)简介

    http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代 ...

  5. CSS层叠样式表的层叠是什么意思(转自知乎)

    转自知乎上的回答:http://www.zhihu.com/question/20077745 解答一: 层叠指的是样式的优先级,当产生冲突时以优先级高的为准.1. 开发者样式>读者样式> ...

  6. jenkins svn E175002错误

    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dsvnkit.http.sslProtocols='SSLv3' -Dsvnkit.http ...

  7. Make it run, make it right, make it fast

    如果问我工作十多年后相比刚毕业参加的时候,学到了哪些重要的经验,那么"Make it work, make it right, make it fast"一定是其中最重要的经验之一 ...

  8. 菜鸟教程之工具使用(十)——用BlazeMeter录制JMeter测试脚本

    工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...

  9. Linux实现ftp账号同时访问两个目录方法

    在做项目时,客户需要FTP同时访问两个目录,要清楚,在建FTP时,都是一个用户对应一个目录,当FTP用户登录后,就只访问当前目录,如果需要访问到其他目录,得另想办法.刚开始以为使用链接可以实现这个功能 ...

  10. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...