centos7配置nginx服务

centos7和centos6.5因为在用法上还有有点区别的,所以自定义服务的话,也是有点区别。

作者查找了基于centos6.5的服务的配置方法,发现没办法适用于centos7.

centos7配置nginx服务

1、cd /etc/init.d //这下面存放的都是系统的服务 只要在这篇配置了服务,就可以使用【service 服务名 动作】来操作一个服务
2、vi nginx //新建nginx服务文件
3、将下面作者分享的脚本粘贴到这个新建的文件里头。
######注意直接复制会出现文件头几行部分内容缺失,请仔细检查
4、保存文件(esc-->:-->wq!)
5、systemctl daemon-reload //重新加载系统服务
6、chmod 755 nginx //给服务文件赋权
7、chkconfig --add nginx //设置该服务开机自启(可省略)
8、选择运行如下几个服务里头的方法:
  1)service nginx start //启动ng
  2) service nginx stop  //停止ng
  3) service nginx reload //重新加载ng配置文件
  4) service nginx restart//重启ng

下面是作者经过实验后,可以成功配置centos7-nginx服务的脚本文件:

#! /bin/bash
#chkconfig: - 85 15
PATH=/env/nginx
DESC="NGINX"
NAME=nginx
DAEMON=$PATH/$NAME
CONFIGFILE=$PATH/$NAME.conf
PIDFILE=$PATH/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE
if [ $? -eq 0 ];then
 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] started successfully"
else
 echo -n "nginx already running"
fi
echo -e "."
}
do_stop() {
$DAEMON -s stop
if [ $? -eq 0 ];then
 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] stoped successfully"
else
 echo -n "nginx not running"
fi
echo -e "."
}
do_reload() {
$DAEMON -s reload
if [ $? -eq 0 ];then
 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] reload successfully"
else
 echo -n "nginx can't reload"
fi
echo -e "."
}
case "$1" in
start)
echo -n "Starting $DESC: "
do_start
;;
stop)
echo -n "Stopping $DESC: "
do_stop
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
;;
*)
echo "UNVALID OPERATION:  Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

讲解

#! /bin/bash //指此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径,区别#!/bin/sh
#chkconfig: - 85 15 //chkconfig命令用来更新、查询、修改不同运行级上的系统服务,-表示关闭所有level, 85启动顺序,15关闭顺序
PATH=/env/nginx //通过源码安装的nginx的根目录
DESC="NGINX" //描述,根据喜好来取
NAME=nginx   //nginx的可执行文件名称
DAEMON=$PATH/$NAME //nginx可执行文件全路径(安装时候指定的)
CONFIGFILE=$PATH/$NAME.conf //nginx.conf配置文件全路径(安装时候指定的)
PIDFILE=$PATH/$NAME.pid  //nginx.pid文件全路径(安装时候指定的):存储进程号文件 启动nginx时候创建,停掉nginx时候删除
SCRIPTNAME=/etc/init.d/$NAME //nginx系统服务文件位置
set -e  //当命令以非零状态退出时,则退出shell。主要作用是,当脚本执行出现意料之外的情况时,立即退出,避免错误被忽略,导致最终结果不正确
[ -x "$DAEMON" ] || exit 0 //-x filename 如果 filename可执行,则为真

do_start() {
$DAEMON -c $CONFIGFILE //启动nginx,启动格式是官方提供的,代表以指定的配置文件启动nginx
if [ $? -eq 0 ];then   //判断执行成功否,0成功,非0失败,$?多指上面命令的返回结果或者状态

 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] started successfully"
else
 echo -n "nginx already running"
fi
echo -e "."
}
do_stop() {
$DAEMON -s stop  //停掉nginx
if [ $? -eq 0 ];then
 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] stoped successfully"
else
 echo -n "nginx not running"
fi
echo -e "."
}
do_reload() {
$DAEMON -s reload //重新加载nginx,让配置文件生效
if [ $? -eq 0 ];then
 echo -n "nginx-pid["
 echo -n $PIDFILE
 echo -n "] reload successfully"
else
 echo -n "nginx can't reload"
fi
echo -e "."
}
case "$1" in   //$+数字 一般是位置参数的用法。$1 获取第一个参数,$2 获取第二个参数......依此类推,一共可以直接获取9个参数(称为位置参数)。$0用于获取脚本名称。相应地,如果 $+数字 用在函数里,那么表示获取函数的传入参数,$0表示函数名
start)
echo -n "Starting $DESC: "
do_start
;;
stop)
echo -n "Stopping $DESC: "
do_stop
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
;;
*)
echo "UNVALID OPERATION:  Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

拓展

1、case

case 菜单选择打印
语法:
case var in     var变量
    patten 1)   匹配模式1 a|b|c  |和or类似
    command...  需要执行的命令
    ;;      命令执行完毕
    patten 2)
    command...
    ;;
    *)      默认值,没有匹配的模式
    command...  
    ;;
esac            代表case语句的结束

2、echo

# 该命令的一般格式为: echo [ -n ] 字符串
其中选项-n表示输出文字后不换行(默认换行);字符串能加引号,也能不加引号。
 选项:
    -n 不换行输出
    -e 启用反斜线转义解释
    -E 禁用反斜线转义解释(默认)

3、常用表达式

文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于

字符串变量表达式
If  [ $a = $b ]                 如果string1等于string2,则为真
                                字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]   如果string1不等于string2,则为真       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 为空,则为真
if  [ $sting ]                  如果string 非空,返回0 (和-n类似) 

    逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]               如果不存在目录$num

    逻辑与 –a                   条件表达式的并列
if [ 表达式1  –a  表达式2 ]

    逻辑或 -o                   条件表达式的或
if [ 表达式1  –o 表达式2 ]

4、if else if else

if ....; then
....
elif ....; then
....
else
....
fi
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真

含条件选择的shell脚本 对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。
基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

5、&&和||的使用

&&运算符:
 
command1  && command2
 
&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。 
语法格式如下:
 
    command1 && command2 [&& command3 ...]
 
1 命令之间使用 && 连接,实现逻辑与的功能。
2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
 
示例 1
malihou@ubuntu:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt && echo "success"
 
示例 1 中的命令首先从 ~/Desktop 目录复制 1.txt 文件到 ~ 目录;执行成功后,使用 rm 删除源文件;如果删除成功则输出提示信息。
 
||运算符:
command1 || command2
 
||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。
1 命令之间使用 || 连接,实现逻辑或的功能。
2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。


你可能感兴趣的:(nginx)