shell脚本一键安装启动nginx
通过这篇文章,可以学习到基本的shell命令,可以编写简单的脚本
使用方法
前提:前提是设备可以连通网络,并且有yum环境。
先给脚本执行权限:chmod +x nginx.sh
后面可以加要安装的目录,默认安装到当前目录,也可以指定绝对路径或安装路径
例如:./nginx.sh /home/env/nginx
注意传的路径一定要合法
脚本编写
nginx.sh
#!/bin/bash
path=$1
# 提取第一个字符
first_char=${path:0:1}
#判断是否传参
if [ $# == 0 ]; then
path=$(pwd)
echo "没有指定参数路径,默认安装到当前目录:$path"
#安装到当前路径
elif [ $path = "./" ] || [ $path = "." ]; then
path=$(pwd)
echo "设置安装到当前路径$path"
#如果第一个参数的第一个字符不是/,说明参数是相对路径,就拼接绝对路径
elif [ "$first_char" != "/" ]; then
path=$(pwd)/$path
echo "设置了相对路径,安装到路径安:$path"
#排除上面的情况之后,传的参数为绝对路径
elif [ "$1" ]; then
echo "设置安装路径为:$path"
fi
echo "下载nginx源码包"
wget http://nginx.org/download/nginx-1.20.1.tar.gz
echo "正在解压"
tar -zxf nginx-1.20.1.tar.gz
echo "正在安装c/c++的编译器"
yum install gcc
yum install gcc-c++
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
cd nginx-1.20.1
echo "正在配置编译顺序与安装路径"
./configure --prefix=$path
echo "正在编译安装"
make&&make install
echo "删除压缩包"
cd ..
rm -rf nginx-1.20.1
rm -rf nginx-1.20.1.tar.gz
cd $path/sbin
echo "nginx版本为:"
version=`./nginx -v`
#启动nginx
./nginx
echo "容器已启动,当前nginx版本为$version"
如果在执行脚本的过程中遇到问题,可以参考以下解决方案
常见问题
回车符(坏的解释器)
bash: ./nginx.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
如图:
出现以上问题的原因是直接从其他地方复制粘贴脚本,然而其他地方是有回车符号的,因此在linux中执行脚本会出现上面的错误
使用以下命令可以解决:
sed -i 's/\r$//' nginx.sh
这将删除脚本中的回车符,使其在Linux系统上正常运行。然后你可以重新运行脚本
未预期的文件结尾
产生原因:
原因一:
脚本编写语法有问题,也会出现这个错误
原因二:
windows系统下,每行的结尾为
\r\n
(回车 换行)
linux系统下,每行的结尾为\n
(换行)
max系统下 每行的结尾为\r
(回车)
解决方案:
将linux中的sh文件下载到windows,然后直接在里面编写自己的shell脚本,然后再上传至linux运行即可解决