GVKun编程网logo

shell编程:利用脚本实现nginx的守护自动重启(nginx shell脚本)

14

在本文中,您将会了解到关于shell编程:利用脚本实现nginx的守护自动重启的新资讯,同时我们还将为您解释nginxshell脚本的相关在本文中,我们将带你探索shell编程:利用脚本实现nginx

在本文中,您将会了解到关于shell编程:利用脚本实现nginx的守护自动重启的新资讯,同时我们还将为您解释nginx shell脚本的相关在本文中,我们将带你探索shell编程:利用脚本实现nginx的守护自动重启的奥秘,分析nginx shell脚本的特点,并给出一些关于centos/rhel下实现nginx自启动脚本实例、Centos下Nginx源码安装与配置并附shell编程实现自动化安装、Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建、Linux Shell编程及自动化运维实现——shell概述及变量的实用技巧。

本文目录一览:

shell编程:利用脚本实现nginx的守护自动重启(nginx shell脚本)

shell编程:利用脚本实现nginx的守护自动重启(nginx shell脚本)

Nginx_daemon.sh

#!/bin/bash
#

this_pid=$$

while true
do
ps -ef | grep Nginx | grep -v grep | grep -v $this_pid &> /dev/null

if [ $? -eq 0 ];then
          echo "Nginx is ok"
          sleep 3
else
          systemctl start Nginx
          echo "Nginx is down,starting it..."
fi
done

执行脚本

后台执行脚本并输出日志到/tmp/Nginx_daemon.out

sh Nginx_daemon.sh > /tmp/Nginx_daemon.out 2>&1 &sh Nginx_daemon.sh &   不指定文件的话为当前目录的nohup.out 文件中)

查看日志

tail -f /tmp/Nginx_daemon.out

查看任务

查看任务。

jobs 

关闭任务

fg %n 

centos/rhel下实现nginx自启动脚本实例

centos/rhel下实现nginx自启动脚本实例

通常在centos、rhel的OS下,我们大多是通过chkconfig来管理服务,比如开机自动启动服务之类。
这里给大家介绍一个很好用的nginx启动脚本。以及简单的使用,如下:

1. 执行如下命令:

vim /etc/init.d/nginxd

2.输入如下内容:

注意:该文件中的如下几个变量,都需要根据你实际的目录来改写。

nginx="/usr/local/nginx/sbin/nginx"  ##nginx的可执行文件路径
lockfile="/var/nginx/nginx.lock"   ##需要先创建/var/nginx目录
NGINX_CONF_FILE="/etc/nginx/nginx.conf" ##需要先创建该配置文件
#!/bin/sh 
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:  - 85 15 
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#        proxy and IMAP/POP3 proxy server 
# processname: nginx 
# Source function library. 
. /etc/rc.d/init.d/functions 
# Source networking configuration. 
. /etc/sysconfig/network 
# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0 
nginx="/usr/local/nginx/sbin/nginx" 
prog=$(basename $nginx) 
sysconfig="/etc/sysconfig/$prog" 
lockfile="/var/nginx/nginx.lock" 
pidfile="/var/nginx/${prog}.pid" 
NGINX_CONF_FILE="/etc/nginx/nginx.conf" 
[ -f $sysconfig ] && . $sysconfig 
start() { 
  [ -x $nginx ] || exit 5 
  [ -f $NGINX_CONF_FILE ] || exit 6 
  echo -n $"Starting $prog: " 
  daemon $nginx -c $NGINX_CONF_FILE 
  retval=$? 
  echo 
  [ $retval -eq 0 ] && touch $lockfile 
  return $retval 
} 
stop() { 
  echo -n $"Stopping $prog: " 
  killproc -p $pidfile $prog 
  retval=$? 
  echo 
  [ $retval -eq 0 ] && rm -f $lockfile 
  return $retval 
} 
restart() { 
  configtest_q || return 6 
  stop 
  start 
} 
reload() { 
  configtest_q || return 6 
  echo -n $"Reloading $prog: " 
  killproc -p $pidfile $prog -HUP 
  echo 
} 
configtest() { 
  $nginx -t -c $NGINX_CONF_FILE 
} 
configtest_q() { 
  $nginx -t -q -c $NGINX_CONF_FILE 
} 
rh_status() { 
  status $prog 
} 
rh_status_q() { 
  rh_status >/dev/null 2>&1 
} 
# Upgrade the binary with no downtime. 
upgrade() { 
  local oldbin_pidfile="${pidfile}.oldbin" 
  configtest_q || return 6 
  echo -n $"Upgrading $prog: " 
  killproc -p $pidfile $prog -USR2 
  retval=$? 
  sleep 1 
  if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]]; then 
    killproc -p $oldbin_pidfile $prog -QUIT 
    success $"$prog online upgrade" 
    echo  
    return 0 
  else 
    failure $"$prog online upgrade" 
    echo 
    return 1 
  fi 
} 
# Tell nginx to reopen logs 
reopen_logs() { 
  configtest_q || return 6 
  echo -n $"Reopening $prog logs: " 
  killproc -p $pidfile $prog -USR1 
  retval=$? 
  echo 
  return $retval 
} 
case "$1" in 
  start) 
    rh_status_q && exit 0 
    $1 
    ;; 
  stop) 
    rh_status_q || exit 0 
    $1 
    ;; 
  restart|configtest|reopen_logs) 
    $1 
    ;; 
  force-reload|upgrade)  
    rh_status_q || exit 7 
    upgrade 
    ;; 
  reload) 
    rh_status_q || exit 7 
    $1 
    ;; 
  status|status_q) 
    rh_$1 
    ;; 
  condrestart|try-restart) 
    rh_status_q || exit 7 
    restart 
    ;; 
  *) 
    echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}" 
    exit 2 
esac 

保存完毕之后,可以执行以下命令来启动nginx

chmod 777 /etc/init.d/nginxd 
/etc/init.d/nginxd start

3. 配置开机启动

执行以下命令:

chkconfig nginxd on

可以以下命令查看是否成功

chkconfig --list | grep nginxd

您可能感兴趣的文章:
  • shell脚本源码安装nginx的详细过程
  • shell脚本之nginx自动化脚本
  • Linux下安装nginx的实现方法
  • nginx常用命令放入shell脚本详解
  • Shell脚本一键安装Nginx服务自定义Nginx版本

Centos下Nginx源码安装与配置并附shell编程实现自动化安装

Centos下Nginx源码安装与配置并附shell编程实现自动化安装

一、首先安装必要的库
Nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库。选定/usr/local为安装目录,以下具体版本号根据实际改变。
1.安装PCRE库
$ cd /usr/local/
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make
$ make install
2.安装zlib库
@H_301_66@ $ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make
$ make install
3.安装ssl
$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ ./config
$ make
$ make install
二、安装Nginx
$ cd /usr/local/
$ wget http://Nginx.org/download/Nginx-1.12.2.tar.gz
$ tar -zxvf Nginx-1.12.2.tar.gz
$ cd Nginx-1.12.2
$ ./configure --prefix=/usr/local/Nginx
$ make
$ make install
在--prefix后面接以下命令:
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。
--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。
三、shell安装脚本
脚本中可以选定版本号,支持库包是以yum方式在线安装的
#!/bin/bash
# Function: Install Nginx for CentOS7
# Author: Anwar Wong
#Print debug information
 
Nginx_SOFT="Nginx-${Nginx_VER}.tar.gz"
Nginx_DIR="/usr/local/Nginx"
Nginx_YUM="yum install -y"
 
 
echo -e "\033[32m-----------------\033[0m"
exit 0
#Installing dependencies
$Nginx_YUM perl perl-devel pcre pcre-devel openssl openssl-devel
 
wget -c $Nginx_URL/$Nginx_SOFT
cd $Nginx_SRC
 
useradd -s /sbin/nologin www
 
./configure --prefix=$Nginx_DIR/$Nginx_ARG
 
make -j4
 
$Nginx_DIR/sbin/Nginx
 
ps -ef |grep Nginx
四、启动
$ /usr/local/Nginx/sbin/Nginx
检查是否启动成功:
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to Nginx! 则表示 Nginx 已经安装并运行成功。
部分命令如下:
重启:
$ /usr/local/Nginx/sbin/Nginx –s reload
停止:
$ /usr/local/Nginx/sbin/Nginx –s stop
测试配置文件是否正常:
$ /usr/local/Nginx/sbin/Nginx –t
强制关闭:
$ pkill Nginx
 
-----------未完待续-------------

总结

以上是小编为你收集整理的Centos下Nginx源码安装与配置并附shell编程实现自动化安装全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建

Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建

Dockerfile  文件构建docker镜像



FROM centos MAINTAINER zh********h.cn RUN rm -f /etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/nginx.conf WORKDIR / RUN mkdir data ADD nginx.repo /etc/yum.repos.d RUN yum install nginx -y RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN rm -rf /etc/nginx/conf.d/default.conf ADD pre.weifeng.conf /etc/nginx/conf.d/ COPY build /data/build RUN useradd -s /sbin/nologin -M www EXPOSE 443 EXPOSE 80 CMD ["nginx"]

  

nginx  配置文件    

cat pre.weifeng.conf 

server {
  
        listen       443;
        server_name  localhost;


        location / {
            try_files $uri /index.html;
            root   /data/build;
            index  index.html index.htm;
        }


       error_page 404 /404.html;
       error_page 404 = https://pre.weifeng.cn/index.html;


       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     {
        access_log off;
        expires 10d;
        root   /data/build;
     }

       location ~ \.(js|css)
    {
       access_log off;
       expires 10d;
       root   /data/build;
    }

    }



server {
        listen       80;
        server_name   pre.weifeng.cn;
        return 301 https://pre.weifeng.cn$request_uri;

}

  

shell  脚本实现jenkins上自动构建阿里云k8s上应用

#!/bin/bash

source /etc/profile

cd /mnt/workspace/official-ui-pre/

npm i && npm run build 

rm -rf /mnt/workspace/official-ui-pre/dockerfile/build


cd /mnt/workspace/official-ui-pre/dockerfile

mv  ../build  .

sudo docker build -t pre-official-ui -f Dockerfile.pre .

sudo docker login --username=***** -p ******* registry-vpc.cn-hangzhou.aliyuncs.com

sudo docker tag pre-official-ui registry-vpc.cn-hangzhou.aliyuncs.com/weifeng-system/pre-official-ui

sudo docker push  registry-vpc.cn-hangzhou.aliyuncs.com/weifeng-system/pre-official-ui

curl https://cs.console.aliyun.com/hook/trigger?*****************U0pM7Vd60sO3BESRlnjd46F7_wlxcXPKjS8t7k

if [ $? -eq 0 ]; then
   echo -e "\033[32m[ the application official-ui-pre successfully deployed  ]\033[0m"

else
    echo -e "\033[31m\033[01m[ the application official-ui-pre deploy failed  ]\033[0m"

fi

  

 

第二种方式:

 

dockefile:

FROM nginx:1.15.10-alpine
COPY dist /usr/share/nginx/html

  

执行Shell :

SERVICE_NAME=dev-platform-nginx
TAG=0.1.${BUILD_NUMBER}

REGISTRY=registry-vpc.cn-hangzhou.aliyuncs.com
REGISTRY_NAMESPACE=weifeng

IMAGE=$REGISTRY/$REGISTRY_NAMESPACE/$SERVICE_NAME:$TAG


npm i && npm run build


docker build -t  $IMAGE .
docker push      $IMAGE

kubectl set image -n weifeng-test deployment/$SERVICE_NAME $SERVICE_NAME=$IMAGE

  

nginx.conf ,   和nginx 配置文件通过阿里云k8s 配置项挂载方式进行配置。 

 

Linux Shell编程及自动化运维实现——shell概述及变量

Linux Shell编程及自动化运维实现——shell概述及变量

shell简介

在这里插入图片描述

SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称;Shell是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;

Shell 的作用:
自动化批量系统初始化程序 、批量软件部署程序
应用管理程序 、日志分析处理程序
自动化备份恢复程序、自动化管理程序、自动化信息采集及监控程序
小游戏、排序算法实现等,同样还能基于业务需求

  • SHELL执行方式
1:bash   bash.sh
2:sh   bash.sh
3:.  bash.sh
4: source bash.sh

区别在于
1和2的方式,是子shell
3和4的方式,是本shell

shell变量

shell 变量:用一个固定的字符串去表示不固定的内容,便于修改。
变量的类型
自定义变量

  • 自定义变量(示例:ping01.sh引入变量)

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名; "set"可以查看所有变量(包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前shell中有效

如使用变量:

#!/bin/bash
ip=192.168.100.10
ping -c1 $ip &>/dev/null  && echo $ip  up ||   echo "$ip down"

变量赋值(定义变量):

显式赋值
变量名=变量值
示例:

ip1=192.168.1.251
school="BeiJing 1000phone"
today1=`date +%F`
oday2=$(date +%F)

read 读入变量值
read 变量名
read -p "提示信息: " 变量名
read -t 5 -p "提示信息: " 变量名 //-t 等待5秒,后超时
read -n 2 变量名 //-n 只记录几个字符
read -p “请输入您测试的IP地址:” ip

ping -c1 $ip &>/dev/null && echo " i p u p " ∣ ∣ e c h o " ip up" || echo " ipup"echo"ip
down"

引用符号

" " 弱引用
’ ’ 强引用
优先执行

  • 环境变量

定义环境变量: 方法一 export back_dir2=/home/backup
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效 !!!

位置变量和预定义变量
命令 参数1 参数2 参数3 …9以后特殊定义
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} …

预先定义过的变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功

如:

# vim test.sh
#!/usr/bin/bash

echo “第2个位置参数是$2”
echo “第1个位置参数是$1”
echo “第4个位置参数是$4”

echo “所有参数是: $*”
echo “所有参数是: $@”
echo “参数的个数是: $#”
echo “当前进程的PID是: $$”

echo ‘$1=’$1
echo ‘$2=’$2
echo ‘$3=’ 3 e c h o ′ 3 echo '' 3echo*=’ ∗ e c h o ′ * echo '' echo@=’ @ e c h o ′ @ echo '' @echo#=’KaTeX parse error: Expected ''EOF'', got ''#'' at position 1: #̲ echo '' = ′ ='' =$

shell中 ∗ 与 *与 @的区别

∗ 所 有 的 位 置 参 数 , 被 作 为 一 个 单 词 . 注 意 : " * 所有的位置参数,被作为一个单词. 注意:" .:"*“必须被”“引用.
@ 与 @ 与 @*同义,但是每个参数都是一个独立的”“引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:”$@"必须被引用.

$@ $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 “2 3” 4 来发现差异

没有括起来的情况是 @ 和 @和 @*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 “2 3” 4 来发现差异

  • 变量的运算
  • 整数运算
    方法一:expr
    expr 1 + 2
    expr $num1 + $num2 + - * / %
    +加
    -减
    *乘
    /除
    %取余

方法二:$(())
echo ( ( (( ((num1+$num2)) + - * / %
echo $((num1+num2))
echo $((5-3*2))
echo $(((5-3)*2))
echo ( ( 2 ∗ ∗ 3 ) ) / / ( 幂 ) 2 的 3 次 方 s u m = ((2**3)) //(幂)2的3次方 sum= ((23))//23sum=((1+2)); echo $sum

方法三:$[]
echo $[5+2] + - * / %
echo $[5**2]

方法四:let 表达式
let sum=2+3; echo $sum
let i++; echo $i

  • 小数运算

echo “2*4” |bc bc:交互运算器
echo “2^4” |bc
echo “scale=2;6/4” |bc bc:交互运算器
awk ‘BEGIN{print 1/2}’
echo “print 5.0/2” |python

今天关于shell编程:利用脚本实现nginx的守护自动重启nginx shell脚本的介绍到此结束,谢谢您的阅读,有关centos/rhel下实现nginx自启动脚本实例、Centos下Nginx源码安装与配置并附shell编程实现自动化安装、Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建、Linux Shell编程及自动化运维实现——shell概述及变量等更多相关知识的信息可以在本站进行查询。

本文标签: