MacOS系统升级导致brew发行包Nginx服务Service无法启动或启动失败问题解决(MacOS Ventura 13.3)

该脚本为了解决MacOS系统升级后,通过Homebrew安装的Nginx服务因权限问题无法启动的问题。它提供了一种直接操作Nginx服务进程的快捷方式,包括启动、重启、重载和停止等操作,并进行了配置文件的检查。
摘要由CSDN通过智能技术生成
系统版本:MacOS Ventura 13.3
Nginx服务启动失败问题描述:

MacOS系统升级导致brew发行包Nginx服务Service无法启动或启动失败,提示隐私或权限问题,系统限制root用户运行。

解决方案:

此脚本用于解决MacOS升级新版后,基于Homebrew发行的Nginx包守护服务无法启动运行问题。
此问题一般由MacOS更新的权限隐私策略与nginx守护服务权限冲突导致服务无法启动。该脚本通过直接操作nginx服务进程实现服务的快捷管理,增加常用进程基础检查操作,封装快捷操作脚本。

ljq@GitHub

Homebrew安装nginx:

brew install nginx

macos_nginx_brew_service.sh

#!/usr/bin/env bash
# Author: Jack Liu
# Date Time: 2023-04-07 20:06
# Site: https://github.com/ljq
# Blog: https://www.defense.ink
# Email: ljqlab@163.com
# Description: 🍎 The nginx distribution provided by hombrew daemon service shortcut script.

# help info
USEAGE="[usage]: [-s | s | status] [start | restart | reload | stop] [-h | -help | --help] [-v | -V | --version]"
HELP_INFO=$(cat <<EOF
[help information]

Description: 🍎 
    This script is used to resolve the problem that the Homebrew-based Nginx package 
    daemon service cannot be started after the new version of MacOS is updated. This 
    problem is usually caused by the conflict between the permission privacy policy 
    updated by MacOS and the permission of the nginx daemon service. This script 
    manages the service by directly manipulating the nginx service process.

Command usage:

    -v|-V|version: Show current nginx version information.
    
    -h|-help|--help: Show help info.
    
    -s|s|status: Nginx process status.
    
    start|restart|reload|stop: Service operation.

EOF
)

# set variables
sh_file=$0
argv1=$1
nginx_conf_file=$(brew --prefix)/etc/nginx/nginx.conf
nginx_bin=$(brew --prefix nginx)/bin/nginx

# main

# description
if [ "$argv1" = "" ]; then
	echo -e "[brew's nginx service shortcut script]\n"
fi
# initialization check
if [ ! -x "$(command -v brew)" ]; then
	echo -e "[WARNING] Homebrew is not installed."
	exit
fi
if [ ! -f "$nginx_bin" ]; then
	echo -e "[WARNING] The version of nignx provided by homebrew is not installed."
	exit
fi
if [ ! -f "$nginx_conf_file" ]; then
        echo -e "[WARNING] The nignx.conf file provided by homebrew is not exist."
        exit
fi
# nginx config check
chk_status=$(${nginx_bin} -t 2>&1)
if [[ $chk_status =~ "syntax is ok" ]] && [[ $chk_status =~ "test is successful" ]]; then
	#echo -e "[INFO] The nginx.conf syntax is ok.\n"
	echo ""
else
	echo -e "[ERROR] The nginx.conf syntax is incorrect."
	exit
fi

# exec
case "$argv1" in
	"-v"|"-version"|"--version"|"-V")
	  ${nginx_bin} -V
	  ;;
	"-s"|"s"|"status")
	  serv_process=$(ps -ef | grep nginx | grep -v "grep\|${sh_file}")
	  if [ "$serv_process" = "" ]; then
		echo -e "[NOTICE] Nginx service status is stoped.\n"
	  else
	  	echo -e "[NOTICE] Nginx service status is running.\n"
	  fi
	  ;;
	"start")
	  serv_process=$(ps -ef | grep nginx | grep -v "grep\|${sh_file}")
	  if [ "$serv_process" = "" ]; then
	    echo -e "[NOTICE] Nginx service is starting ...\n"
	    ${nginx_bin} -c $nginx_conf_file
	  else
	  	echo -e "[WARNING] Nginx service is already running. Do not repeat operation.\n"
	  fi
	  ;;
	"restart")
	  echo -e "[NOTICE] Nginx service is restarting ...\n"
	  ${nginx_bin} -s stop
	  ${nginx_bin} -c $nginx_conf_file
	  ;;
	"reload")
	  echo -e "[NOTICE] Nginx service is reloading ...\n"
	  ${nginx_bin} -s reload
	  ;;
	"stop")
	  ${nginx_bin} -s stop
	  echo -e "[NOTICE] Nginx service has stoped.\n"
	  ;;
	"-t")
	  ${nginx_bin} -t
	  ;;
	"-h"|"-help"|"--help")
	  echo -e "${HELP_INFO}\n" 
	  ;;
	*)
	  echo -e "[WARNING] Parameter is invalid or missing. Please run help command: ${sh_file} -h\n"
	  ;;
esac

exit
脚本使用案例
脚本增加可执行权限:
chmod +x macos_nginx_brew_service.sh
查看帮助:
./macos_nginx_brew_service.sh -h
常用操作
# 启动
./macos_nginx_brew_service.sh start
# 重启
./macos_nginx_brew_service.sh restart
# 状态
./macos_nginx_brew_service.sh status
# 重载
./macos_nginx_brew_service.sh reload
# 停止
./macos_nginx_brew_service.sh stop
# nginx 版本
./macos_nginx_brew_service.sh -V


参数说明:
-v|-V|version: Show current nginx version information.

-h|-help|--help: Show help info.

-s|s|status: Nginx process status.

start|restart|reload|stop: Service operation.

macos_nginx_brew_service.sh

ljq@GitHub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jianqiu Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值