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

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

[复制链接]

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx# G+ x8 x4 C0 z( B
进入nginx安装目录执行% p2 p' a; G% x6 Z7 z+ a

  i; e% I: C2 e./sbin/nginx -c ./conf/nginx.conf
- T# j; G/ S2 H$ W) t! V: N& U 2.验证nginx配置文件是否正确0 k0 L6 l/ T1 Q( N6 P( ]
. g6 o1 `0 a! p( R; l  X
方法1. 进入nginx安装目录sbin下,输入命令! E  ]! W& q, L" f+ @9 v' g

+ v! }3 T4 p' m, N' M./nginx -t
7 \% ~. g6 I) Z! b4 d回显test is successful说明配置正确
4 `; u5 r  c. h6 o. g7 N7 P6 {( R& W" V: x  d: o1 K( Y$ N
方法2. 在启动nginx命令 -c 前加 -t! f  x0 \# P, p1 }$ q

; v4 q- t6 @* b5 a, G2 M  V./sbin/nginx -t -c ./conf/nginx.conf- g- {6 ?. M3 e
3.停止nginx+ P4 C! T) ~$ B" O' `- r; S7 j( V( ]
方法1:0 y& a  j4 i7 |* f9 m# [
1 n8 O0 P/ m, S: I5 T
强制停止:( N/ N$ G# r2 |8 N; N9 g. P3 P

% |  Z- ?7 P8 I( `# T7 p$ M./sbin/nginx -s stop
7 D" Q: P. R0 V2 g% N处理完请求后停止:
! B! Y# G* d. |& o* Q* Z1 l
4 j! Q  ~' f- U* o7 s+ l4 m( b./sbin/nginx -s quit$ p4 j6 B3 h  n7 c- E
方法2:0 U4 n. I9 c4 s: }

1 z9 R, P; [/ n" ^4 pps -ef|grep nginx
/ T( o. h" X3 O/ z& \找到对应的nginx进程号6 b# s% ?# n" @1 W8 V/ _

% g. K8 V' ]+ a" }; Q0 c正常停止:/ k, E+ K0 l% B
. Q/ t6 ]9 ?) ]* H/ s; Q% ?
kill -15 进程号2 k4 l9 R; D! M( R# P
强制停止:
# ]2 I3 q, F- ?, n( a. M, h5 e2 a1 {
kill -9 进程号: M1 Y" E* S$ Z* z9 ]% ?
4.重启新加载nginx配置文件
2 Q4 v8 R- \: E2 e4 U$ y6 |方法1. 进入nginx安装目录执行: S6 F6 u8 c* i

  C% l: f$ f' o8 A- z( _. d./sbin/nginx -s reload
. N5 o0 Q; N8 I" V5.重启nginx服务
/ J5 u& z* B* X* m4 |% y0 s1 R方法1. 进入nginx安装目录执行
) c  l8 v' t3 k/ t$ ?" U9 x$ _; K
./sbin/nginx -s reopen
" C1 f) U# n* n, j0 o 方法2.查找当前nginx的PID进程号,并kill
- M/ }' Q* b* Z: P& x) _8 x! u( I% C
+ o. l) w1 ^" L( V/ g* ^ps -ef|grep nginx& M2 u# `# Y( \& K" X
找到对应的nginx进程号,进行
' [( {4 _  N2 g
; C  y: r4 r  O6 B( q% B! J  H' ?kill -HUP 进程号8 r( ^$ s# s- A, X8 K
) l. D7 j8 y' X3 k
# L5 X# C% ^* z: v8 [+ e
kill -1 进程号$ q* t' _* S* [# m& P0 q- K
实现重启nginx服务
1 D1 d8 p8 o' ^
- U) I/ B/ {1 k( a: Y 6.查看nginx版本信息" n- r! z, ^6 N( [3 _7 \2 D
1).只显示版本信息. G* b* r) _( F9 X, a
- N3 u; p7 `, S0 ^9 p/ S
进入nginx安装目录执行) Z6 ]; M2 N' l* T0 x5 l
2 U+ H8 T2 ?+ @+ V/ }- t3 P, P3 i
./sbin/nginx -v
  n! v9 ~* h% a& u4 s 2)显示版本信息和配置信息
7 y. e, L, y6 w$ j8 R# K! x2 V; C8 }2 y- Q, R8 q: V4 b
进入nginx安装目录执行5 P7 c' s! S" W3 h8 Q8 T* e1 f
2 V1 U- K' ]4 J6 v$ ]$ w- F
./sbin/nginx -v
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动  S; H0 F) B! L4 z
#1.直接启动1 a7 E; C. B3 ^6 K, c8 n4 F, e  u: \
#进入nginx目录,执行启动命令
/ e: u9 E7 O' b) @  p. `* d# tcd /usr/local/nginx/sbin7 J" \1 C+ E, X9 Z% {/ N) y
./nginx; d( C3 F1 l6 S4 [) B4 M# {7 m; \
# 或者直接
5 y6 s% ]; K' r( t/usr/local/nginx/sbin/nginx* q: H. @" Z# j# w. j+ x
#2.指定配置文件方式启动1 d1 u, p" E$ u; k5 q- B% G
#进入nginx目录,执行启动命令
* T) Z1 B4 r& j( T* ~cd /usr/local/nginx/sbin$ C+ U  |5 ]7 `: _* _
./nginx -c /usr/local/nginx/conf/nginx.conf) A; k1 ^3 E; V8 o! [
#或者) j: S; }- K5 u" Q
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf; o# {& i% y2 Q8 d4 A. _( R+ i
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件3 G$ |  [( c# S2 g$ i& @% _$ @

4 D. E: H5 L4 u( _#进入nginx目录: X/ k' L+ V7 d- f$ f
cd /usr/local/nginx/sbin  I& A' B- L  _  H
#检查配置文件是否有语法操作
0 I+ A5 A. |+ {. y, F, a./nginx -t. ?# v, J% S% G" n4 n7 c% O8 n
# 或者显示指定配置文件/ h  o4 ?- ^( b, D4 R, g; b
./nginx -t -c /usr/local/nginx/conf/nginx.conf
& G, _* t* _! l
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置) h5 @) x* P* s4 y) d* `

# q) e* U9 V% q$ ]9 j9 V- }+ l% x#进入nginx目录
  K' K7 a  I, U5 ~- x, z/ t5 jcd /usr/local/nginx/sbin
) S/ U: L( k3 j/ U+ x1 Z#执行重载命令8 L, @( Y. j* `6 K, a2 o
./nginx -s reload
8 q. z7 f% B) @7 J6 o1 p6 A8 G- W" l0 a
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。
, s" f$ o4 o, Q9 ^nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件( {! P1 Q* n% u* N
, s0 h% v& s* I# o4 V
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响). M/ g) o" s" i. C+ O% _. A  \
Nginx启动新的worker进程,采用新的配置文件* m' F, ?$ ~$ B/ v/ D' h$ Y8 Q
Nginx将新的请求分配新的worker进程
5 Z4 g! w9 [  k! c2 ~Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
; Q% t, }3 R) B4 [& q重复上面过程,知道全部旧的worker进程都被关闭掉。3 _$ ]: z6 b: D2 Y7 C/ n! q
所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx
. d  y0 l, g1 A& w& t" n1 ]4 Y; t) w' z1 ^: M5 b
#进入nginx目录
  g: o( J8 Q; ^- D5 [% zcd /usr/local/nginx/sbin6 g2 O# j3 B, A
# 快速停止nginx; c% Q4 V7 }& I4 ]
./nginx -s stop
/ H* a, a) A0 u. a) @9 j% x5 i# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx* e/ Y6 f7 T% G. S
./nginx -s quit7 f; o; v# H7 P" Z6 N
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件& Q( J5 v. L" g0 k  E4 {. y
- r- C' ^( ]4 t' f6 ^& t
#进入nginx目录
8 r* D0 L$ |5 v0 z3 V& hcd /usr/local/nginx/sbin
8 m+ K9 f3 Z& Z. G1 t$ D# 重新打开日志文件5 d% [4 o4 s0 O( w2 c. U/ r
./nginx -s reopen
0 N% A! H  o# G
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。) f7 f$ l; u4 W; ]! c
当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。. ?' ?* o; n- e7 [2 S
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。* O3 Y% B2 X+ Z, {. Y
一般我们需要两步:
# ]" P2 {8 ~( h& r% [8 m* z
# d( m8 ^7 d6 s  H) y移走文件并重命名) H, T  k7 K7 ?; |6 c
利用 nginx 的 reopen 功能,完成新日志文件的生成。
; R, s- g0 |. l( P. y参考地址,感谢博主分享
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx
. j( R% |- Q) G0 s3 u2 E/ r1 H/ Q+ V$ y& F/ s9 M7 `/ |; I1 v: a
# 查看进程号,下图  master的为主进程号
6 A1 T0 Y4 j) B1 X8 r7 j" @ps -ef | grep nginx7 a1 ?% S* P/ s$ b
#从容停止Nginx
! m1 ?  A: L0 ]# H7 [kill -QUIT 主进程号* B  f! E- l1 @" S# `8 \
#快速停止Nginx1 m3 i. O4 q% x1 @; S9 P0 B
kill -TERM 主进程号# h" l7 K0 E, q- d( r' p
#强制停止Nginx3 n! y5 A" h1 X% u' w, z
pkill -9 nginx
" m& \" Z; b  G( `* r) e#平滑重启nginx:: t" d4 S- Y) K" ~; E/ Z
kill -HUP 主进程号
; G  s# X5 g5 ?* S% z( O
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

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

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

1、启动:) N& U" {. N$ l" J
% ]5 K1 i4 x: n( D2 J
C:\server\nginx-1.0.2>start nginx
8 ^+ t0 m6 B% |$ L
6 u& G. h; G/ W, @8 Y( t0 H$ W6 `, s7 h$ t4 O& u
+ y" F& ?! h1 S# w1 s
C:\server\nginx-1.0.2>nginx.exe+ Y, z) z- Q  U* b: y

, U1 Y9 i, l6 N4 C注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。  l) y" o9 I9 ^7 b" k: w$ x

: P, a" {, H: C7 H! k  F如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf8 y' @! G1 [4 }  g5 D
* e* Z! F$ o  I5 |3 ^. A% y( w
2、停止:
# h- d: q9 I$ G! v- E! p8 P/ U3 U* z$ q4 N% T# m$ x2 L8 _
C:\server\nginx-1.0.2>nginx.exe -s stop& k2 a# N% m% F! V- n
7 ~' W+ L9 {: O' t

8 _9 t$ o  A2 Q# n+ p" }" g: C( I8 U
C:\server\nginx-1.0.2>nginx.exe -s quit7 t" h# Z0 U  H5 n" f
. w6 @) G( {: _$ B+ f+ g; C/ [7 P
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。8 q4 J0 Y8 j4 d: N: {3 b

3 y: u8 [- U' p$ E执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe4 d( b4 t8 T4 n$ c
  \) k  j" ]' R' }. s8 B& j3 [6 e
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用( X7 [8 ]/ k  J. _1 e' G/ X
" ~1 R8 b0 R" Y) s, c
taskkill /f /im nginx.exe > null 杀死nginx进程& k. X+ X0 T; V# D5 ]8 `

' O+ S! \. P; j' j8 w3、重新载入Nginx:7 Q2 |2 t0 C" \: n9 i& P) S& M% ?
# b9 q' Z9 a! w4 s9 d, w
C:\server\nginx-1.0.2>nginx.exe -s reload. v: b# P6 @1 _* H! [# k1 Z/ Q

9 U; s( f" L* U/ H, @3 y0 n当配置信息修改,需要重新载入这些配置时使用此命令。1 L' c) k' |9 ?4 i3 g8 d, @
* N/ ?0 E" j5 U9 K8 ?, G7 S
4、重新打开日志文件:6 ?: N$ f" X2 r) [: ^$ ^

/ B5 z( y* p6 y7 q! N, `% KC:\server\nginx-1.0.2>nginx.exe -s reopen: P; c5 ^# ~: E
5 q4 W  G! Z4 K4 J/ ~3 A1 w8 k
5、查看Nginx版本:) d7 H0 v7 S' s" I; Q$ W9 {- y# C! N
9 O' ^" |: r6 R' _5 B: Z5 s. i
C:\server\nginx-1.0.2>nginx -v
3 G& @, @% c) V! g& G' C
! m# n9 N- Z% y0 `2 }2 ynginx: nginx version: nginx/1.0.29 M- P0 _/ a+ x

' u$ z1 x: R9 T# G6 R  T
$ {6 K; |+ S$ }) i( k0 b9 X9 ?9 G5 B0 X' M, H" p5 q2 X
C:\server\nginx-1.0.2>nginx -V
/ g( Q3 s" u: S' n- s8 I. o6 z/ G/ G
nginx: nginx version: nginx/1.0.26 U2 Z0 z6 W1 w, ?" X! x
5 n* f" `+ Y, T, S% j9 t7 ?
nginx: TLS SNI support enabled
; W8 {% K1 @) f" X- e2 l3 j8 Q) i
' ]( x/ S4 L" h2 X4 c# j# s( v) B* G" anginx: 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$ g; X5 X/ q/ W' `5 _( ~, i
8 e# E4 |, S. l5 c- S
注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。
  d+ L' E& I7 {" r/ W0 H. |* X+ b4 I$ d- {/ ~/ V3 ~3 B

: l; E- E+ A9 x6、测试或载入指定配置文件:8 w; ^5 W6 `$ {* w
, N) c1 t+ s7 G) y
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:+ ]* S( w5 b. ^# d4 N) e
+ e8 l* D: E& T7 R; J
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf# d+ J$ _" A0 v: M
* N# c/ {, U% E. _- d
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok, K/ K& y0 o; h8 Y6 O+ h( V+ o
) B5 _! m# Q: }  A) @+ S7 H
nginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful  j" \+ ^) _/ n, [; B

" m: \0 x( z0 q0 _  d% I载入指定配置文件
# V! ]0 t* H; \7 `, c
% _& A! x7 j; m8 AC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf
; T* c5 R- w8 Y0 q# p  u4 m1 W: B2 W7 v) S$ J5 Q
回复

使用道具 举报

314

主题

478

回帖

2960

积分

管理员

积分
2960
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
( C* }% V+ l# m- d* @# O 在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx
2 C. m  C1 S" A( P) j# ] start nginx : 启动nginx  n5 v, \. ?6 i6 }: g8 K# x# V
nginx -s reload  :修改配置后重新加载生效
( V5 O8 R* y" b0 Z: S% c8 ] nginx -s reopen  :重新打开日志文件; r8 l1 _  J; a5 y
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
2 g2 S; |. p# g3 H8 g1 `1 `       关闭nginx:
  V& L) A5 F; m& e nginx -s stop  :快速停止nginx$ G* A4 {4 Z: d( [) T
nginx -s quit  :完整有序的停止nginx. T# k: y  P% G% }/ W9 N
如果遇到报错:9 ~' @' _' Z2 {' M+ t# D6 f
bash: nginx: command not found& g, K% u+ n/ x8 l1 [
有可能是你再linux命令行环境下运行了windows命令,% r; Q$ H! j' @$ i: h5 V' d
如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload5 w0 d2 c1 b* a+ |5 g& v+ O5 Y- v
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-5 01:53 , Processed in 0.081000 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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