朋友找我在一台机器上帮忙安装下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. 测试markdown发布

  2. WPF UI虚拟化

    ComboBox

  3. SVO实时全局光照:Sparse Voxel Octree based Global Illumination (SVO GI)

    功能已实现,初步集成进来,暂未进行重度优化.但GI的效果已很明显.这里特地给出了开启实时GI前后的效果对比,比对场景如下:1.只有直接光照(方向光源)的场景.2在直接光照(方向光源)基础上开启了实时G ...

  4. SQL Server への接続を許可するファイアーウォール設定

    netsh advfirewall firewall add rule name="SQL Server Browser" protocol=UDP dir=in localpor ...

  5. Java IO--压缩流

    压缩流: 压缩流的实现: zipEntry: 在实例化ZipEntry的时候,要设置名称,此名称实际上就是压缩文件中的每一个元素的名称. ZipOutputStream: import java.io ...

  6. DotNetBar RibbonControl控件office2007风格

    在使用DotNetBar RibbonControl控件的时候如果想吧效果做成下图这种效果 把主窗体继承Office2007RibbonForm 然后要删除删除styleManager1 才会出现上图 ...

  7. Backbone之旅——Model篇

    Backbone作为前端的MVC框架,把后端的设计思想带到前端,使前端代码更加清晰.可维护性大大提高 Backbone依赖于underscore.js和jquery,所以在使用backbone的时候一 ...

  8. 三种ViewController跳转的异同

    - (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag comple ...

  9. 天朝专用- 配置pypi镜像

    使用python者,需要经常安装模块,可是身在天朝.pypi.python.org 站点稳定性相当差,为了很更好的使用pip安装模块. 请使用镜像. mac/linux 环境 在用户当前目录下 如没有 ...

  10. java之对象转型2

    public class TestCasting2{ public static void main(String args[]){ TestCasting2 test2= new TestCasti ...