`

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配置文件修改保存,自动加载重启,并检查配置文件是否修改成功。 Windows下使用nginx,启动之后,再修改配置文件,无需命令重新加载,修改保存配置文件,实时更新nginx重启。

    修改ingress-nginx-controller的pod中nginx.conf的中的参数

    4. 重启 Nginx 服务器:使用 `nginx -s reload` 命令来重启 Nginx 服务器,以便生效新的配置。 5. 验证配置:使用 `nginx -T` 命令来验证 Nginx.conf 文件的配置是否正确。 常用 Nginx.conf 参数 以下是 Nginx....

    Linux系统安装Nginx的安装教程描述,命令

    Linux系统安装Nginx的安装教程描述...Linux系统安装Nginx需要安装依赖包、下载并解压安装包、安装Nginx、启动Nginx服务、配置Nginx服务、重启Nginx服务和访问服务器IP查看。这些步骤都是确保Nginx服务生效的必要条件。

    Nginx 服务器重启关闭重新加载命令

    nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文件 nginx -t 测试nginx配置文件是否正确 检查正确性时,出现: nginx: the configuration file /home/kratos/local/nginx/conf/nginx...

    nginx最新版安装包

    最新版nginx,了解一下。yum install -y nginx systemctl start nginx...直接修改vim /etc/selinux/config找到SELINUX=enforcing修改为SELINUX=disable ,重启reboot或者setenforce 0 (该命令使用后不用重启也可以生效)

    NGINX下配置404错误页面的方法分享

    更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 ) 中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 = http://www.xxx.com/404.html 4.更改后重启nginx,...

    nginx config reverse proxy for windows.pdf

    在配置完成后,需要重启 Nginx 服务,以便生效新的配置。 反向代理的作用: 1. 提高了网络安全性:反向代理可以隐藏内部服务器的 IP 地址,保护服务器免受攻击。 2. 提高了负载均衡能力:反向代理可以将客户端的...

    Nginx搭建https服务器1

    然后,我们可以重启Nginx来使配置生效。 四、让浏览器信任自己颁发的证书 在浏览器中,我们需要将生成的证书导入到系统的证书管理器中。我们可以按照以下步骤进行操作: 控制面板 -> Internet 选项 -> 内容 -> ...

    nginx支持.htaccess伪静态rewrite的方法.docx

    重启 Nginx 服务,以便生效新的配置文件。 使用 Nginx 支持 .htaccess 伪静态 Rewrite 的方法可以实现 URL 重写,提高网站的访问速度和用户体验。但是,需要注意 .htaccess 文件的安全性,避免敏感信息泄露。

    nginx不支持apk ipa文件下载的设置方法

    如果想下载后缀直接就是apk ipa的,可以修改 /usr/local/nginx/conf目录下的mime.types 增加如下配置,重启nginx生效 代码如下: application/vnd.android.package-archive apk; application/iphone pxl ipa; 您...

    nginx禁止某个IP访问站点的设置方法

    重启一下nginx的服务:/usr/local/nginx/sbin/nginx -s reload 就可以生效了。 blocksip.conf:的格式还有许多种,可以配置只允许的IP访问或者IP段访问: deny IP; allow IP; # block all ips deny all; # allow all...

    Vue打包部署到Nginx时,css样式不生效的解决方式

    主要介绍了Vue打包部署到Nginx时,css样式不生效的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    阿里云centOs安装Ftp Jdk Tomcat Nginx Mysql Oracle

    * 让/etc/profile文件修改后立即生效:`. /etc/profile` * 测试:`java –version` 三、Nginx安装 * 安装PCRE正则表达式库:`yum install -y pcre-devel` * 安装编译环境:`yum install gcc gcc-c++ ncurses-devel...

    Web APP 如何实现类似Nginx反向代理转发功能-zhangyannan1

    Web APP 实现类似 Nginx 反向代理转发功能 Web APP 如何实现类似 Nginx 反向代理转发功能是指在 Web 应用程序中实现反向代理转发的功能,以便将用户的请求转发到其他服务器或应用程序上。反向代理转发是一种常用的...

    详解Ngigx+Tomcat配置动静分离,负载均衡

    由于公司使用过Ngnix,对于刚接触Nginx来说,... nginx -s reload 改变配置文件的时候,重启nginx工作进程,来时配置文件生效  nginx -s reopen 打开日志文件 3. Nginx配置 下面配置综合了网上的资料,记下,防止自己

    nginx/apache/php隐藏http头部版本信息的实现方法

    1、nginx隐藏头部版本信息方法  编辑nginx.conf配置文件,在http{}内增加如下一行 ... …… } 编辑php-fpm配置文件,fastcgi.conf或fcgi.conf 找到: ...重启nginx服务生效 代码如下:[root@xmydlinu

    cas 自签名证书制作及应用 操作说明及相关配置

    · 使用说明 1、该文档执行的前提:windows、安装openssl工具、下载nginx服务器、安装jdk并配置环境变量 (压缩包 包括了openssl、nginx和相关的配置文件) 2、下载 openssl.cnf文件- ...执行完成后需要重启应用才生效

    ASP.NET Core应用程序部署至生产环境中(CentOS7)

    命令:systemctl restart firewalld(重启防火墙以使配置即时生效) 测试nginx是否可以访问。 配置nginx对ASP.NET Core应用的转发 修改 /etc/nginx/conf.d/default.conf 文件,将文件内容替换为: server { ...

    CentOS 6.3安装配置nginx+php+mysql

    准备篇 1.配置防火墙,开启80端口、3306端口 1 vim /etc/sysconfig/iptables ...service iptables restart #重启防火墙,使配置生效 2.关闭SELINUX(这个和服务器安全相关,先关闭。相关介绍:https:

    nlb负载均衡架设教程

    配置完的网路负载平衡如下图,在这里说一下,并不是配置完成,网络负载平衡就会马上生效,他会有一个配置的过程,真正完成配置的状态如下图 下面我们来测试一下 找一台客户机:长ping 192.168.10.100 然后,我们...

Global site tag (gtag.js) - Google Analytics