找回密码
 立即注册
查看: 1964|回复: 9

Nginx启动,重启以及基本命令

[复制链接]

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx" |% M/ W7 T6 A3 c8 T8 b
进入nginx安装目录执行3 F4 L3 |# `" O) y8 ?* a
1 |6 y3 j( j. t4 A7 b7 e
./sbin/nginx -c ./conf/nginx.conf, a0 [0 _. Y4 h8 ^. w. d0 [
2.验证nginx配置文件是否正确$ y; Y6 B; w! r
$ W% `1 e9 K! W# i9 T; L% L
方法1. 进入nginx安装目录sbin下,输入命令$ _, ?; r$ {9 w5 Y! N2 X
+ S/ Q6 O) h$ j7 R2 T1 A
./nginx -t* ]/ f9 M' @* n" L( |& `% w
回显test is successful说明配置正确
2 a4 }3 X) ^- T8 m, _% P- T* h8 X( T. S: d( _
方法2. 在启动nginx命令 -c 前加 -t" v7 S( x* |, Z- h

7 Q% k! m2 x4 G  j! t, W8 v./sbin/nginx -t -c ./conf/nginx.conf
5 j. n  u5 C# |( k* A1 q, _/ w3.停止nginx
9 f8 |8 J- g. m9 f9 }方法1:6 {( w5 J% ^+ H! U0 t

, U: m: o' z3 Q: O5 K- t# B强制停止:6 F$ ?0 z2 J9 F4 s

, E2 D( d% I; d./sbin/nginx -s stop' X2 i( }- V4 z$ f
处理完请求后停止:
) U9 r& p7 q7 F8 B
* ^( o# S) f. a: z" S' j$ U./sbin/nginx -s quit5 u9 K/ A/ a( H* R' C9 ~8 Q2 Y5 i
方法2:
6 d$ ^% A" x- R/ @2 W1 i; g, g2 J" Y" `+ \- L# B3 U6 x
ps -ef|grep nginx
$ M# b( s4 |2 _/ i找到对应的nginx进程号
. }- C' J* Z  @6 o5 S* ^: l
  q& E6 L* u$ e* S  b% G2 F正常停止:8 b8 _3 x0 I0 ~5 p6 ~' m8 ^

; i/ \: v6 e' v/ t8 G# P% _kill -15 进程号8 U! X- H4 P2 h
强制停止:7 e8 J; T7 R& e+ F4 o4 e2 O

8 ~; X* G0 n2 X$ Q& d/ ikill -9 进程号9 p  }  D9 H9 N$ _1 _4 @7 t7 F0 c
4.重启新加载nginx配置文件. V: E1 l& u8 R) E. V# u2 V# l1 ?
方法1. 进入nginx安装目录执行
( c8 ?( D: Z2 Y  b2 t* G0 D0 L2 T5 i( u  w( a: `
./sbin/nginx -s reload4 c9 z0 K& Y1 a! B# _
5.重启nginx服务: e" c; R1 }8 r
方法1. 进入nginx安装目录执行
% }0 h* w: Y( V7 o7 T0 g' S& o8 e6 v& Y' Z. t' T
./sbin/nginx -s reopen+ ]: B& A2 l9 j* o
方法2.查找当前nginx的PID进程号,并kill, O: _8 |+ z8 I& Y8 H

# L' \5 @, K9 J3 V$ |# nps -ef|grep nginx
/ }. l- O* {* ?* D; x找到对应的nginx进程号,进行! g2 f  Q2 L. y: ~7 {; |
, J5 e* O* h& y5 B' T
kill -HUP 进程号  g, A5 f7 d/ `: d8 z  Q2 Z( E
. l0 @; }) }( t( W3 E' U
( l1 m* ^/ I. G+ k4 N7 _9 k. f
kill -1 进程号& |) x& G1 G0 I7 y8 a- q, D
实现重启nginx服务
6 b. v4 v: A. Q7 K- ]0 x
* s# E/ F# f1 N/ j- M 6.查看nginx版本信息; h8 ~( I6 r& u* L: J- d
1).只显示版本信息. ?* N- U: X9 o
8 j: Y7 {' z4 m+ e0 m% g
进入nginx安装目录执行3 h# l: _  v, W# _5 T/ c8 T
) P+ a: r, g" Z1 y: l
./sbin/nginx -v
' `: @$ K, O6 |& W- F 2)显示版本信息和配置信息
0 ?9 @, r! S; U( Z
5 {# i0 j* Q! l, z7 z) b4 j: _进入nginx安装目录执行/ e* }3 ^8 F9 h( T

( k2 _! Y" L: @./sbin/nginx -v
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动0 P( a# z6 ]6 y  {
#1.直接启动
/ ^  g: S2 j$ Z#进入nginx目录,执行启动命令
: k5 T/ a: e, W/ zcd /usr/local/nginx/sbin3 v7 n# V" g) L
./nginx! {, Z; q3 F% U$ g8 u
# 或者直接
% e+ J# w4 H9 p: t. M) H& F/usr/local/nginx/sbin/nginx
% o* w, O' W. U  l7 |) q! t#2.指定配置文件方式启动
6 I, n, Z' U8 |0 V5 `#进入nginx目录,执行启动命令
4 s$ \( f3 b+ `) |; v  a: Scd /usr/local/nginx/sbin
4 {( n) D( V: f./nginx -c /usr/local/nginx/conf/nginx.conf
, x" H: F, e) ~/ e7 \; p; S#或者6 F: F+ p! A9 r  R" q
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf4 a( l% T; T6 V9 z% l! v# R% b* I, i
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件- m% \; F: p- c3 R
7 b  g, ?4 q2 B: j1 E9 e
#进入nginx目录
. a7 c! h( N, @" h1 j  H" o# jcd /usr/local/nginx/sbin
5 z/ b8 |0 c2 P( z4 A' N. S#检查配置文件是否有语法操作
( A. o5 w5 U% Z./nginx -t* M  R5 x: e& R) X* ^
# 或者显示指定配置文件
- W8 P# Z; E# U5 K9 ^./nginx -t -c /usr/local/nginx/conf/nginx.conf
" B2 g  ~, r  x# k( N, l
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置+ ~6 D, ?! i! K7 X$ ?; T
" Y# C- C6 j7 ^! t; B
#进入nginx目录
0 G2 }6 i; |+ \cd /usr/local/nginx/sbin
2 H2 e2 ]. k3 V  _7 s#执行重载命令8 W7 R. C% V! X8 I2 f1 q
./nginx -s reload8 c  \6 ^. H8 t- o$ O& A/ V1 Z  t

! p; i- H% C- i# Hnginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
% {% s% ^3 R" Q5 `nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件5 P$ D. `7 ?8 @  d
& ?% x7 F, h* g2 J9 h" r
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
/ N" |2 ]+ T% |Nginx启动新的worker进程,采用新的配置文件' C$ m  O& G0 H
Nginx将新的请求分配新的worker进程! f: l. S4 ]7 ?4 N8 u1 K
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程% X: N- W" G. R+ c' r  N
重复上面过程,知道全部旧的worker进程都被关闭掉。
) b3 ^) j9 T7 V$ V$ k$ W, }, ?4 g所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx6 a2 u# L$ a( K0 B, y

, N5 N( U7 A- Z% T+ `- @( o& _#进入nginx目录  m/ M; Z* G* E: ~
cd /usr/local/nginx/sbin8 c/ M$ B, V# U- d# J: [" R/ h# e  o
# 快速停止nginx, y% ?2 L7 R& y2 g# u
./nginx -s stop
, s* i$ m; W. k! o: @% @# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
! i5 Y) y9 m& K, b- E, A% R1 z./nginx -s quit
2 I$ h4 [9 }9 @6 `  G3 d) q- T# G  ]
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件
) ~( I% j4 m& B; ]5 o+ s: l% }; X( y- e( c: X2 _
#进入nginx目录6 {  K8 Y* R+ B, b+ W" N
cd /usr/local/nginx/sbin
+ a. a9 A3 W! n: ?9 `# 重新打开日志文件/ Z  l' u# t% s2 r/ U
./nginx -s reopen* p( b  s+ `; y8 H5 x
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
0 h2 o) k0 ]# T4 ]# S" f0 s当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。5 y2 Z" d+ F, w# y! P: Z* n) ^
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。4 S* v" }) J, l% K% E4 f
一般我们需要两步:
0 g4 {, Z* S6 D, d6 \
' _6 g0 y8 i( H8 _0 G7 o  I! Y+ f移走文件并重命名
4 G. ]. D7 i, b9 r7 J6 I利用 nginx 的 reopen 功能,完成新日志文件的生成。
  n# P* L# \# r( P/ ^参考地址,感谢博主分享
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
* u5 R( _) [8 }5 b3 s7 J" c4 |' b, o6 o5 q4 _$ I( p% B$ W
# 查看进程号,下图  master的为主进程号9 g5 m& ?" i7 D- u
ps -ef | grep nginx
) y. t; [3 }: R5 x#从容停止Nginx. @$ z3 Y; W, y$ F; c2 Y3 O
kill -QUIT 主进程号8 q! [* P3 O9 A5 f' `1 z( @" v
#快速停止Nginx
+ Y9 }# S4 R5 Y, Kkill -TERM 主进程号
5 m2 H' d( G0 V: t- }: X#强制停止Nginx9 m/ D( u4 n9 Y' E
pkill -9 nginx4 I/ G) O; D' H9 x
#平滑重启nginx:
. C7 z9 U+ w" G3 v8 tkill -HUP 主进程号! K6 |; u7 \* D) W7 a# Q
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:36:23 | 显示全部楼层

Windows下Nginx的启动、停止等命令

1、启动:
) \3 u6 r8 q% J+ Q3 h: Z5 o) \
; c: ^/ D4 p+ h! t  UC:\server\nginx-1.0.2>start nginx, ~  N, |, M6 F, I0 U+ @/ C
$ v/ V# w, ?  ]0 u+ E" p! j
6 N9 V+ x4 x% ]3 k2 Y. n$ n3 F
( w% _. m7 p# U
C:\server\nginx-1.0.2>nginx.exe! G1 [: W' @2 G
  x6 O& d/ A2 c3 u. ]) K
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。9 R/ i  z8 r/ V6 \

- n" m' s9 m& x- X如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf
3 D1 W3 Q* Z, e, T" F
4 Y! K8 q1 J$ i" b. \0 o) e4 |" Z  F2、停止:
. X  P' m, K( H4 f9 ]1 p4 z* u5 N1 [8 O) t  X
C:\server\nginx-1.0.2>nginx.exe -s stop9 p0 ~1 o/ ?/ y# f
% r% b/ }# q- F
1 ]7 e7 E0 i9 [  S& ^3 }
' s3 ^) X) r. \5 `4 \. j
C:\server\nginx-1.0.2>nginx.exe -s quit% \3 t3 t! U; a7 v. y
% H& Y6 ^( n& u
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
' S4 E5 q4 U2 I( D
: c- G8 v: u' j5 p! z4 R& R执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe+ F# v! |( F7 A

0 y0 @6 V8 R# X& I5 @9 C% R4 S还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用
$ k$ W% r, u: C9 N# m
/ |$ ~8 h1 @8 qtaskkill /f /im nginx.exe > null 杀死nginx进程; }: f$ w" B$ V: |* R% n; u
% {+ @# C7 N# a. C1 i4 R7 i
3、重新载入Nginx:, r+ ?& \" ~3 b) R1 V$ l

1 s/ T$ u7 f  k0 O& B2 O' f0 Y  oC:\server\nginx-1.0.2>nginx.exe -s reload
/ e- x# T9 L( c, C) w- }$ M- m
' Q- U  k$ M# _6 o- ?+ U当配置信息修改,需要重新载入这些配置时使用此命令。( k' H% v: {+ C3 K$ d  ]
0 I& p" B% C6 a
4、重新打开日志文件:' I  I+ E* X5 \2 n5 [/ G: A, t
" V$ g2 V5 A; I
C:\server\nginx-1.0.2>nginx.exe -s reopen9 T3 i/ l- ~- O, z
# p2 f$ R; j6 M! R4 t  {" ~/ C
5、查看Nginx版本:$ X0 i7 R' v6 p3 O) n
: N2 t4 y" h5 }8 z5 d
C:\server\nginx-1.0.2>nginx -v: G+ I: y$ z5 q# z

- R4 S9 V* ~: k) G- _- n, q% [nginx: nginx version: nginx/1.0.2: U+ D! s6 u! v
/ Z+ a1 N- s0 C  y2 Y" |8 {
" s" x1 A' a$ E9 ~0 L. U/ a. k

* {) k6 ~; Y0 D+ A$ _. n4 bC:\server\nginx-1.0.2>nginx -V3 h, U) i# L. |/ N( M
2 T% u: ]0 |1 K  M' Y
nginx: nginx version: nginx/1.0.2
# o1 e! m/ @9 M" z1 l6 ?* k6 R8 v! u2 z
nginx: TLS SNI support enabled7 f" z" A, w0 G7 K

+ \5 `) _- O; [% x2 Z' I! U. \nginx: configure arguments: --builddir=objs.msvc8 --crossbuild=win32 --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs.msvc8/lib/pcre-7.9 --with-zlib=objs.msvc8/lib/zlib-1.2.3 --with-select_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-mail --with-ipv6 --with-openssl=objs.msvc8/lib/openssl-0.9.8r --with-openssl-opt=enable-tlsext --with-http_ssl_module --with-mail_ssl_module; \) W! f# C8 ~+ `% z& @
: M7 H# c; D% R  X2 x* Y# W
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。  ~0 b# u2 Y% ^. {
" }9 J% R8 |0 j" R. U: z) M

! x# F! L  Y% j: |5 J/ B0 U6、测试或载入指定配置文件:
$ _- b9 y* \- H: T6 h5 X" [9 y
8 p8 F: Y' ~+ v8 ^4 Q注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
7 b1 d+ |% L" X2 U9 D: A' j1 p
* n5 a$ Z& W9 S+ [+ N$ cC:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf
, j1 q4 u0 k/ w, ^1 i
4 m: _+ Y( @; r! l5 R8 {nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok2 B# v8 ^+ m, K5 [/ V

3 ^9 K& i' e1 q4 Unginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
7 J* D* v3 I& N! d
. R2 A: \# M( V0 H' m8 P  i+ i. W载入指定配置文件3 p7 v( ?! i: c) \

& X0 ~* B8 l) Y& e$ H/ CC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf4 P' N! d9 D: ?2 c( Q

8 i6 I% h! [" K$ S! o# _/ b
回复

使用道具 举报

330

主题

510

回帖

3314

积分

管理员

积分
3314
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
+ y  f( s9 L1 i* o% p# l 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
- }4 Z( G7 P; K1 a  ` start nginx : 启动nginx9 T/ i# Y' Q7 w' ]# n/ l. }$ A7 o2 O
nginx -s reload  :修改配置后重新加载生效
1 k, k) h7 p! h. T, e& @8 _ nginx -s reopen  :重新打开日志文件/ {3 U9 T) u1 g. u, g
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确  m8 u2 }; ?/ k. H1 L' w7 t) P9 F
       关闭nginx:
% U5 p* D) F7 H9 Z) k5 T6 A nginx -s stop  :快速停止nginx
  b5 `1 x) G$ a9 o( c" r nginx -s quit  :完整有序的停止nginx/ O& ]6 y, c, \. w9 }! S, c. ^
如果遇到报错:
8 m4 A. o/ F. C3 N5 Q: w  k: U bash: nginx: command not found
& ^2 s  i$ j; Z# a+ c9 \8 k, m6 ~, H 有可能是你再linux命令行环境下运行了windows命令,
1 x& K( f9 }9 Z+ c$ a" H 如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload4 Z7 i+ J2 u' o% U1 @
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|通达产控投资 ( 粤ICP备2023021749号-1|粤公网安备 44030402006137号 )

GMT+8, 2025-10-25 10:39 , Processed in 0.092573 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表