`

Nginx 重启 nginx 停止 修改配置后生效

阅读更多
Nginx的rpm包自己打的
搜到别人说

某网民 写道
ps aux| grep nginx找到nginx的进程号

kill -HUP xxxx(进程号)

于是,我就想那就这样呗:

ps ax |grep mongrel | awk '{print $1}' |xargs kill -HUP


其中HUP是重新载入配置

后来,又看到一些

简单说就是
killall -HUP nginx


nginx是超级稳定的服务器,一般不会因为超载问题而需要重启,重启的目的一般都是修改配置文件后需要加载一下。

最开始的时候,我是用最直接的重启方式

killall -9 nginx;/data/nginx/sbin/nginx


如果机器比较慢,kill进程时一瞬间杀不完,再执行一次即可。这种重启方式不是特别安全,如果配置有误,则会重启失败,需要重新修改配置文件然后再启动,期间会消耗一点时间。不过对于目前普遍还是不怎么严格的http界而言,这点时间还不至于产生太大损失,只要不是在关键时刻搞出来就好。如果希望沿用这种重启办法,我提议还是先好好测试吧。

后来我在nginx.net上看到了一种更奇妙的重启
kill -HUP $pid($pid就是nginx master进程的进程号)


我一般这样用

kill -HUP `cat /data/nginx/logs/nginx.pid`


这种方式的好处是实现“平滑重启”,在ps -aux中可以看到,nginx首先启动新进程,旧的进程仍然提供服务,在一段时间后,旧的进程服务结束就自动关闭,剩下新进程继续服务。但是这种方式也是有缺点的,如果配置文件有误,或者资源冲突,则重启失效,但nginx并没有任何的提示!这就会时常发现改动的配置文件没有生效,又比较难找到问题。

所以,最后杂和了一下问题,弄了一个nginx.sh,这个版本的nginx.sh还是没有解决kill -HUP的资源冲突的问题,但解决了配置文件的问题。资源冲突的比如80端口被占用、日志文件目录没有创建这种的,我再想想办法。

#!/bin/sh

BASE_DIR='/data/'

${BASE_DIR}nginx/sbin/nginx -t -c ${BASE_DIR}nginx/conf/nginx.conf >& ${BASE_DIR}nginx/logs/nginx.start

info=`cat ${BASE_DIR}nginx/logs/nginx.start`

if [ `echo $info | grep -c "syntax is ok" ` -eq 1 ]; then

if [ `ps aux|grep "nginx"|grep -c "master"` == 1 ]; then
kill -HUP `cat ${BASE_DIR}nginx/logs/nginx.pid`
echo "ok"
else
killall -9 nginx
sleep 1
${BASE_DIR}nginx/sbin/nginx
fi

else

echo "######## error: ########"
cat ${BASE_DIR}nginx/logs/nginx.start

fi

---------------------------------------------

kill -HUP `cat /data/nginx/logs/nginx.pid`


这句话比较长,不容易记住,现在发现一种更为简洁的办法:

killall -HUP nginx


killall会将HUP指令传到所有的nginx进程里,包括master和worker,但是worker进程并不认识HUP指令,所以事实上只有master进程获取了HUP,并执行重启。

于是乎,nginx的kill指令:

kill -USR1
kill -QUIT
......


都可以用killall简化执行。

#
# Spec File for Nginx
#

# Setup Subversion
%define _svn_root %_topdir/SOURCES/
%define _svn_src 'https://10.0.0.33/svn/realview/trunk/'
%define _unpackaged_files_terminate_build 0


Summary: RealWorx software application
Name: nginx
Version: 0.7.64
Release: 1
License: commercial
Group: Applications/Communications
Distribution: 
Vendor:
Packager: 
BuildRoot: %{_topdir}/tmp/%{name}-%{version}-%{release}

Source0: nginx-0.7.64.tar.gz
Source1: ngx_http_auth_pam_module-1.1.tar.gz
BuildArch: noarch

#Requires: 

%description

%prep
#realview dose not start with user realwork, so it doest check the user and usergroup.
#if ! /usr/bin/id realworx &>/dev/null; then
#  /usr/sbin/useradd -s /bin/bash -c "Realworx application user" -M realworx || \
#    %logmsg "Unexpected error adding user \"realworx\"."
#fi
#
#if ! /usr/sbin/groupmod realworx &>/dev/null; then
#  /usr/sbin/groupadd realworx
#  /usr/sbin/usermod -g realworx realworx || \
#    %logmsg "Failed to change default group for user \"realworx\" to group \"realworx\"."
#fi



#cd %{_svn_root}
echo "prep"
#%setup -q
%setup -q -b 0 -b 1
#make soft ln to source code under build path.
#mkdir -p %{_topdir}/BUILD/%{name}-%{version}
#lndir -silent %{_svn_root}  %{_topdir}/BUILD/%{name}-%{version}
#mkdir -p %{_topdir}/BUILD/ngx_http_auth_pam_module-1.1
#lndir -silent %_topdir/SOURCES/ngx_http_auth_pam_module-1.1 %{_topdir}/BUILD/ngx_http_auth_pam_module-1.1

%build
echo Building %{name}-%{version}-%{release}
./configure --add-module=../ngx_http_auth_pam_module-1.1
#./configure  --prefix=%{buildroot} --bindir=%{buildroot}/sunrise/bin
make

%install
make install DESTDIR=%{buildroot}

%files
%dir %{_prefix}/local/nginx
%config(noreplace) %{_prefix}/local/nginx/conf/nginx.conf
%{_prefix}/local/nginx/conf/fastcgi_params
%{_prefix}/local/nginx/conf/fastcgi_params.default
%{_prefix}/local/nginx/conf/koi-utf
%{_prefix}/local/nginx/conf/koi-win
%{_prefix}/local/nginx/conf/mime.types
%{_prefix}/local/nginx/conf/mime.types.default
%{_prefix}/local/nginx/conf/nginx.conf.default
%{_prefix}/local/nginx/conf/win-utf
%{_prefix}/local/nginx/html/50x.html
%{_prefix}/local/nginx/html/index.html
%{_prefix}/local/nginx/sbin/nginx
%{_prefix}/local/nginx/sbin/nginx.old
%exclude %{_prefix}/src/*
%exclude %{_prefix}/lib/*

%changelog
分享到:
评论

相关推荐

    Windows平台,Nginx配置文件修改自动加载重启

    如果加载失败,通常是因为配置文件有语法错误,此时`nginx-conf-watcher`可能会尝试自动重启Nginx服务。 5. **监控日志**:为了跟踪监控过程和错误,可以查看`nginx-conf-watcher`的日志输出,通常会显示在命令行...

    nginx转发sftp、ftp的配置

    完成上述配置后,需要重启Nginx服务以使新的配置生效。 - 使用以下命令重启Nginx: ``` systemctl restart nginx ``` 3. **验证配置** - 可以通过telnet或者其它工具进行测试,确认是否成功转发到了指定的...

    02nginx动态配置.zip

    然后重启Nginx以使更改生效。 ### 4. Nginx动态配置 动态配置是指在不重启Nginx服务的情况下,更新部分配置并立即生效。这通常通过以下两种方式实现: - **负载均衡器**: 如果配置了负载均衡,可以添加或删除后端...

    nginx_https+tomcat_http配置.docx

    - 保存所有更改后,重启Nginx服务。 #### 二、Linux环境下Nginx与Tomcat HTTPS至HTTP反向代理配置 对于Linux环境下的Nginx安装与配置,步骤大致相同,但存在以下几点不同之处: - **安装Nginx** - 使用包管理器...

    nginx的各项详细配置-超多注释

    Nginx重启与配置检查 - `nginx -t`: 检查配置文件语法是否正确。 - `nginx -s reload`: 重新加载配置文件,不中断现有连接。 - `service nginx restart`: 重启Nginx服务。 综上所述,Nginx的配置文件"nginx.conf...

    linux下nginx安装、配置实战

    记得重启Nginx使配置生效: ```bash sudo service nginx restart ``` 在配置过程中,你可能会遇到权限问题。Nginx默认运行在`www-data`用户下,所以你需要确保Nginx有读取网站文件的权限。例如,可以将文件所有者...

    修改Nginx默认主页.txt

    修改完配置文件后,需要重启 Nginx 服务使更改生效。可以通过运行命令 `sudo systemctl restart nginx` 来完成此操作。 #### 6. 与Samba服务集成 如果已经在系统中安装了 Samba,并且希望将 `/home/www` 目录共享...

    Nginx与Nginx-GridFS的安装与配置

    5. **重启Nginx**:保存配置文件后,重启Nginx使新配置生效。 ``` sudo /usr/local/nginx/sbin/nginx -s reload ``` 现在,Nginx已经配置好与MongoDB的GridFS进行交互。Web应用可以通过`...

    nginx配置.zip

    - **重启与重载**:配置变动后,需要通过`nginx -s reload`命令重载配置,或者`systemctl restart nginx`重启服务以使更改生效。 - **错误检查**:使用`nginx -t`命令检查配置文件的语法是否正确。 6. **与Java...

    nginx配置tcp转发(nginx通过白名单访问)

    完成配置后,记得重启Nginx服务使配置生效: ```bash sudo systemctl restart nginx ``` 在实际运维中,我们可能还需要考虑其他高级配置,如健康检查、连接复用、日志记录等。Nginx的TCP代理转发功能提供了丰富的...

    windows下nginx配置https以及同一个端口监听多个网站即监听多个虚拟主机

    保存`nginx.conf`的修改,然后重启Nginx服务,让新的配置生效。在命令行中,可以使用`nginx -s reload`命令平滑重启。 6. 验证配置: 访问`site1.com`和`site2.com`,查看HTTPS是否正常工作,同时确认是否能正确...

    nginx和PHP配置

    4. **重启Nginx服务**: 使用命令`sudo service nginx restart`或`sudo systemctl restart nginx`重启Nginx服务,使配置生效。 5. **验证配置**: 创建一个简单的HTML文件(如1.html),放置于设置的静态文件目录下,...

    Web应用安全:Nginx禁止目录列出配置.pptx

    修改配置后,别忘了保存更改并重启Nginx服务,让新的配置生效。在Linux系统中,可以使用以下命令来重启Nginx: ```bash sudo systemctl restart nginx ``` 或者,如果你的系统使用的是其他服务管理工具(如init或...

    nginx 限制ip、并发量、连接数等配置

    完成配置修改后,需要重新加载或重启Nginx以使更改生效: ```bash sudo nginx -t # 检查配置文件是否有语法错误 sudo nginx -s reload # 重新加载配置 # 或者 sudo service nginx restart # 重启Nginx服务 ``` ...

    Nginx+tomcat配置集群负载均衡实例

    最后,完成配置后,记得测试Nginx配置的正确性(`nginx -t`),然后重启Nginx服务使更改生效。这样,你就成功地构建了一个使用Nginx+Tomcat的集群负载均衡实例,实现了动静分离,提升了系统的响应速度和可靠性。 这...

    nginx外网访问内网站点配置操作

    配置完成后,需要执行sudonginx -t来测试nginx配置文件是否有误,如果没有问题,再执行sudonginx -s reload来重载配置文件,使修改生效。 3. 处理可能出现的错误。如果在重启nginx时遇到错误nginx:[error] invalid ...

    NGINX-配置手册

    - 通过`nginx-service.exe restart`命令重启服务使更改生效。 #### 六、总结 通过上述步骤,我们可以有效地配置NGINX以实现对Tomcat应用服务器的负载均衡。需要注意的是,实际部署过程中还需根据具体环境调整配置...

    nginx如何配置代理转发

    配置修改完成后,需要重新加载或重启Nginx使改动生效。在大多数Linux系统上,这可以通过`sudo systemctl reload nginx`或`sudo service nginx restart`完成。 5. **监控与调试**: 使用`nginx -t`命令检查配置...

    docker里面nginx目录挂载启动失败

    `--restart=always`确保容器在退出后总是自动重启,这样即使容器因故停止,也会立即重新启动。`--privileged=true`则给予容器最高级别的权限,使其能够访问和操作宿主机上的设备,这对于解决某些需要特殊权限的挂载...

    Windows下Nginx配置SSL实现Https访问(包含证书生成)

    ### Windows 下 Nginx 配置 SSL 实现 ...最后,重启 Nginx 服务使配置生效。 通过上述步骤,你可以在 Windows 环境下成功地为 Nginx 配置 SSL,实现 HTTPS 访问。这不仅增强了网站的安全性,还提高了用户的信任度。

Global site tag (gtag.js) - Google Analytics