如何对nginx开机自启动linux进行配置

一、Linux开机自启动配置文件

Linux系统下,开机自启动需要在/etc/init.d/目录下的脚本文件中配置。这是系统启动时会自动执行的脚本目录,我们可以在该目录下创建适当的脚本,使其达到开机自启动的效果。

首先,在/etc/init.d/目录下创建一个新的nginx脚本:

sudo touch /etc/init.d/nginx

通过编辑器编辑这个脚本文件,填入下面的内容:

#!/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

# 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)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

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 $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
        exit 2
esac
exit $?

在指定完毕后,需要赋予权限:

sudo chmod 755 /etc/init.d/nginx

二、Nginx开机自启动linux

在Nginx脚本文件配置好之后,我们将该脚本注册成为服务,随着服务器的启动而启动。使用如下命令:

sudo chkconfig --add nginx
sudo chkconfig --level 345 nginx on

三、Linux开机自启动项

开机自启动项主要是使用chkconfig命令,使用数字标记开启,则相应的服务会在启动时开启,否则就是关闭。如果只想让某个服务在指定级别下开启或关闭,则必须加上 –list 和 –level 参数指定级别。

在linux系统中,有七个级别:
0:关机
1:单用户模式
2:不完全的多用户模式,不含NFS服务
3:完全的多用户模式
4:系统未使用保留
5:X11控制台模式
6:重启

如果想要让nginx开机自启动,则需要设置在3、4、5级别下开启。在执行如下命令:

sudo chkconfig --add nginx
sudo chkconfig --level 345 nginx on

四、Linux设置nginx开机自启动

在前面的配置中,我们已经配置好了nginx的开机自启动项,但是这只是一部分,需要进一步配置才能实现每次开机自动启动nginx。

编辑/etc/rc.local文件,添加如下内容:

sudo vim /etc/rc.local

将下面的命令添加到里面:

/usr/local/nginx/sbin/nginx

然后,配置文件设置为开机自启动:

sudo chmod +x /etc/rc.local

五、Nginx开机自启动命令

在前面的脚本文件中我们已经定义好了Nginx服务的启动、停止和重启命令,分别为:

/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart

如果我们想要手动启动或停止nginx服务,只需要执行下面的命令即可:

/etc/init.d/nginx start
/etc/init.d/nginx stop

六、Nginx开机自启动脚本

上面提供的是一个完整的nginx开机自启动脚本,我们可以根据自己的需要,来对其进一步的修改。例如,我们可以修改Nginx服务的日志输出地址,从/var/log/nginx/error.log修改为/var/log/nginx/nginx_error.log,同时,我们也可以修改启动命令等。以下是修改过的脚本:

#!/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

# 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)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
PID_FILE="/var/run/nginx.pid"
ERROR_LOG="/var/log/nginx/nginx_error.log"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE -p /usr/local/nginx -g "pid $PID_FILE;" -e $ERROR_LOG
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        start
        ;;
    stop)
        rh_status_q || exit 0
        stop
        ;;
    restart)
        restart
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
        exit 2
esac

exit $?

七、Nginx开机自启动Windows

Nginx在Windows下自启动,需要在服务中进行注册,然后手动启动服务即可。下面是注册服务的步骤:

1、创建nginx.vbs文件,内容如下:

Dim xShell
Set xShell = CreateObject("WScript.Shell")
xShell.Run "cmd.exe /c echo nginx -p F:/webserver/nginx-1.19.8/ -c F:/webserver/nginx-1.19.8/conf/nginx.conf > F:/webserver/nginx-1.19.8/runNginx.bat", 0
Set xShell = nothing

2、将脚本运行:

cscript nginx.vbs

3、打开服务(services.msc),找到Nginx,单击启动。

八、Nginx开机自启动管理员权限

在Windows下,注册服务需要管理员或system权限,否则会提示拒绝访问。可以使用以下命令解决这个问题:

sc.exe create Nginx binPath= "D:\Nginx\nginx.exe" start= auto DisplayName= "Nginx" obj= "NT AUTHORITY\LocalService" password= ""

九、Nginx开机自启动脚本Windows

在Windows下,可以使用如下脚本实现Nginx开机自启动:

@echo off
set NginxPath=D:\webserver\nginx-1.19.4
set log_file_path=%NginxPath%\logs\
set pid_file_path=%NginxPath%\logs\nginx.pid

setlocal
set LOGFILE=%log_file_path%nginx.log
set ERRORFILE=%log_file_path%nginx_error.log

set BIN_PATH=%NginxPath%
set WORKING_PATH=%NginxPath%
set ARGS=-p "%BIN_PATH%" -c conf/nginx.conf

set pID=
tasklist /fi "imagename eq nginx.exe" | find ":" >nul && (
  echo nginx is already running
  goto end
)

echo Starting nginx server [nginx] ...
cd /d %WORKING_PATH%
start nginx.exe %ARGS%
ping -n 2 127.0.0.1 >nul

set /a pID=0
for /f "tokens=2" %%i in ('tasklist /fi "imagename eq nginx.exe" /nh') do set /a pID=%%i
echo ... done [PID: %pID%].

:end

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/256355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:40
下一篇 2024-12-15 12:40

相关推荐

  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27
  • Java如何从Nginx下载文件

    本文将从以下几个方面详细介绍如何使用Java从Nginx下载文件。 一、准备工作 在Java中下载文件需要使用到Apache HttpClient库,这个库是一个基于Java的HT…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • 在Linux上安装JRE并配置环境变量

    本文将从以下几个方面为您详细阐述如何在Linux系统上,通过自己账户安装JRE,并且配置环境变量。 一、安装JRE 在进行安装前,我们需要下载JRE的安装包并解压,可以从官方网站下…

    编程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用于Linux操作系统的一款照片管理器,它支持多种相机及存储设备,并提供了一系列强大的工具,让用户可以方便地浏览、管理、编辑和导出照片。本文将从多个方面对GTKAM进行…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Linux网络连接激活失败原因及解决方法

    一、网卡驱动问题 1、缺少网卡驱动 若使用新的网卡,需要安装对应网卡驱动,否则会导致网络连接激活失败。可通过以下命令查看当前系统中是否存在网卡驱动: lsmod | grep et…

    编程 2025-04-25
  • 如何在Windows/Linux/MacOS下安装Python

    如果你对Python安装一无所知,本文将从多个方面对Python在Windows/Linux/MacOS下的安装做出详细阐述,为初学者提供帮助。 一、Windows下Python的…

    编程 2025-04-25

发表回复

登录后才能评论