朋友找我在一台机器上帮忙安装下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. Number Range 管理之并行缓冲

    Number Range 管理之并行缓冲: 常用的事务代码SNRO,SM56还有一些业务专用的号码管理,可以在SPRO中查找: SNRO :Number Range 管理 一般的操作是维护号码范围.如 ...

  2. [leetcode]Maximum Product Subarray @ Python

    原题地址:https://oj.leetcode.com/problems/maximum-product-subarray/ 解题思路:主要需要考虑负负得正这种情况,比如之前的最小值是一个负数,再乘 ...

  3. 加快Bitmap的访问速度

    引言 在对Bitmap图片操作的时候,有时需要用到获取或设置像素颜色方法:GetPixel 和 SetPixel, 如果直接对这两个方法进行操作的话速度很慢,这里我们可以通过把数据提取出来操作,然后操 ...

  4. 修改maven一更新jre就变成1.5版本

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...

  5. 用户管理 之 Linux 用户(user)和用户组(group)管理概述

    一.理解Linux的单用户多任务,多用户多任务概念:Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们以 ...

  6. [CoreOS 转载] CoreOS实践指南(五):分布式数据存储Etcd(上)

    转载:http://www.csdn.net/article/2015-01-22/2823659 摘要:在“漫步云端:CoreOS实践指南”系列的前几篇,分别介绍了如何架设CoreOS集群,系统服务 ...

  7. How to set colors of HTML tables

    There is a simple way to set the color of tables: use the bgcolor attribute of tag <table>.   ...

  8. No Assistant Results

    由于修改一些文件名字等会导致这个不工作. "Organizer" / "Projects" / 选择你的项目.  "Delete" .

  9. Kruskal算法java版

    /** * sample Kruskal.java Description: * kruskal算法的思想是找最小边,且每次找到的边不会和以找出来的边形成环路,利用一个一维数组group存放当前顶点所 ...

  10. HTML5新特性之跨文档消息传输

    1.同域限制 所谓“同域限制”是指,出于安全考虑,浏览器只允许脚本与同样协议.同样域名.同样端口的地址进行通信. 2.window.postMessage方法 浏览器限制不同窗口(包括iFrame窗口 ...