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

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

[复制链接]

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
发表于 2023-5-23 17:31:14 | 显示全部楼层 |阅读模式
1.启动nginx- b- @: Q4 }. F# K* R2 }& m$ o, d
进入nginx安装目录执行. q2 i& D! y5 j3 u: L
+ i' O3 O2 K/ }( M
./sbin/nginx -c ./conf/nginx.conf
9 X" g: ^* M9 E( [' h0 k. N# M7 }) M, z 2.验证nginx配置文件是否正确
$ K* Q1 @: N" U7 T# ~: k, T6 A9 x! C0 N; }
方法1. 进入nginx安装目录sbin下,输入命令% p" v6 B& f2 t% g9 _

0 N8 Z# v" j; {! O0 x; Q./nginx -t
9 e2 R: H/ d9 C, K( z/ s0 {: A回显test is successful说明配置正确
; M' A$ O$ J1 i+ v4 l1 F' i: m) s+ b) ?+ J2 X
方法2. 在启动nginx命令 -c 前加 -t" S5 |8 F6 S# a. E$ m

# S3 [+ R$ g. f3 Z% ?./sbin/nginx -t -c ./conf/nginx.conf5 V  H  b, P$ w2 n. L
3.停止nginx/ r9 a# k/ Q  U; n: J2 j- x# W
方法1:( L) z3 u3 P. ?/ [* I! K5 H
# a! v: T5 l# g5 U+ ^) \
强制停止:  a  m5 \. F8 e. ^  f

7 h/ Z/ H/ T" t/ D' |./sbin/nginx -s stop
8 w; {, T. N% v9 @2 W( @! M处理完请求后停止:
/ ^7 u7 V4 b  |; v' |3 U/ \1 z1 {* b0 M2 D; {
./sbin/nginx -s quit" x3 c" J. L& g5 n8 b2 Y
方法2:" F: V+ n" O0 j5 r- S$ D0 H$ C

) f- n5 l  {; `9 R: l2 ^  Aps -ef|grep nginx
4 |" {8 Q8 A' d6 X找到对应的nginx进程号$ g$ @6 B( ?1 k: a8 H) Y( {

8 A4 j9 _6 K! A9 P5 C2 j正常停止:$ \% o: {1 c  u/ j9 v. Q
" b1 U3 }9 n5 K& b# c, a
kill -15 进程号/ U2 f$ @9 }* I9 Y. G, X
强制停止:. N1 I% U7 q+ |! E" V

* W7 l& J- k2 d" ikill -9 进程号
0 P8 L) Z- s" d- u8 L4 _. T3 f1 e4.重启新加载nginx配置文件
: m7 j* z0 o1 T% C+ T方法1. 进入nginx安装目录执行# u" f& M7 i- B$ B4 \, }( t

0 c- X! m6 M6 p) g./sbin/nginx -s reload
; {2 e, H, N. R  H2 |2 P% l5 H  k5.重启nginx服务
# _: M  V. {' p4 p6 \) I方法1. 进入nginx安装目录执行; V3 H4 V2 l$ t

) C& s8 b7 d9 s" f& h) g" V5 S0 E9 j/ m4 c./sbin/nginx -s reopen8 y, q9 w# H, ]% X# Y+ l
方法2.查找当前nginx的PID进程号,并kill
  a8 y4 K: S8 v+ Z+ ~& s. n0 [  {3 p) I, S2 A( m
ps -ef|grep nginx
7 i4 p0 l7 N& ]! l找到对应的nginx进程号,进行0 |8 |" ~1 ]$ y- T5 ]* T; u
! I9 ]# i- m& o$ h4 S$ W
kill -HUP 进程号
4 \+ ?, y) M- U* `) w3 t  r: G2 J4 D+ c; M8 T" t
9 [$ C  T2 G+ v
kill -1 进程号- F) R) R* r/ \4 A
实现重启nginx服务
3 j8 v! u2 c. N: L  J- Q7 M
2 I0 n  w# S: X0 P6 a: [2 p( E* ? 6.查看nginx版本信息
. V3 y6 ^% O* z4 g1).只显示版本信息
% f- s1 \( B. N& G, J# E" B: r- [+ i1 Z3 m
进入nginx安装目录执行$ x( x* Z; S& ~) ~- U
" D5 f- \: U8 x+ e
./sbin/nginx -v" ]; m* h  ?- s; J
2)显示版本信息和配置信息
  }3 g2 q+ Q+ L1 s
$ e: U% a; W' d进入nginx安装目录执行8 q* S/ a5 c1 W! |* K3 Y: a4 Q  G7 |

  K/ P/ Y; l5 A! i. L1 f0 t./sbin/nginx -v
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:32:35 | 显示全部楼层
#启动8 x  t- Q1 u5 ], _( h
#1.直接启动2 G' f% T6 ^& J% r' k$ T1 P% w
#进入nginx目录,执行启动命令; _7 v! t9 b" F/ q
cd /usr/local/nginx/sbin
0 C/ y  f0 x( F* O  z' L7 y./nginx
% ~" C- h2 J6 B" Q* O% m# 或者直接
$ E7 v, L' r6 o, |/usr/local/nginx/sbin/nginx3 o3 |* `3 t% g( ?8 p" Z
#2.指定配置文件方式启动
9 \( z+ c/ `! R, U#进入nginx目录,执行启动命令. @3 G" K4 H- I5 M: S/ V
cd /usr/local/nginx/sbin) h9 ?0 }0 V& m
./nginx -c /usr/local/nginx/conf/nginx.conf5 h' [! Y3 ~* M1 r* C4 [, k: j
#或者
. v9 L1 S. W7 f/ U/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf- \% M2 O7 ~. Q7 \
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:33:07 | 显示全部楼层
检查ngnix配置文件
/ k& A6 h+ r# m, s3 @* E2 w% v/ f; ^/ Q
#进入nginx目录
) B0 c5 ^' C8 R+ d% Mcd /usr/local/nginx/sbin
1 F; ~' U/ @+ M, ~5 ]3 I- L( l$ {#检查配置文件是否有语法操作
& I' `2 `0 [7 k$ `./nginx -t
, h* I' }# S. o/ C$ D+ D, W# 或者显示指定配置文件3 g4 [. V1 h1 C! K
./nginx -t -c /usr/local/nginx/conf/nginx.conf+ T& U2 i  u! H0 Y# o7 b0 l
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:33:51 | 显示全部楼层
平滑的重启,修改配置后,重新加载配置# Y/ b; F! d% R  z" e1 k1 w0 p

+ }% [% e. A. _3 b4 q( W#进入nginx目录* E, e. \. Q0 D7 h% {9 j
cd /usr/local/nginx/sbin
$ F* |  _3 ]: O( K  t3 Y7 z#执行重载命令& U6 v/ N2 G. e) L; Q: }
./nginx -s reload5 _- X7 Z% @& \7 _: }- m% g- u* ~

- ]' V1 f5 G$ m8 }; _) u8 R8 gnginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制。$ B* T  L- w0 H/ V0 P. c
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
  ~0 f3 v* [% g! O* p# w/ Q  {# U( Q
Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)5 n. {1 e) |4 \8 F( U+ X# q
Nginx启动新的worker进程,采用新的配置文件) x/ [( z$ k; y$ c8 O
Nginx将新的请求分配新的worker进程& O1 C( u4 X. N6 q. T* y5 I
Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
2 }- _0 Q- H+ S  u9 ?重复上面过程,知道全部旧的worker进程都被关闭掉。
: }8 w/ ]8 @' L! {# J所以,重启之后,master的进程号不变,worker的进程号会改变。
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:34:10 | 显示全部楼层
关闭nginx9 A& m; A7 ?& K1 P" W

* d) X4 A  ?! r- K0 `#进入nginx目录
2 Z5 i: x) P% R, ?( f$ f; F9 ?cd /usr/local/nginx/sbin
, c& o8 q8 e, W2 U! c4 n4 G9 W# 快速停止nginx
+ F1 \% d; l; I/ E6 ~& y  H+ i./nginx -s stop1 H0 k3 g, L4 @8 l
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
- R7 G) v9 m; ~3 v3 ~./nginx -s quit
& y% \  |/ [6 y( V) i. W
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:34:32 | 显示全部楼层
reopen重新打开日志文件) Q$ P/ E+ {. k! j) {
. V  K) \' O9 N+ `7 e# @
#进入nginx目录
. H6 L+ t$ o9 O% V& W+ |cd /usr/local/nginx/sbin' q. s( i. W" K& P7 ^- }  n. d
# 重新打开日志文件
+ Q& O2 ^* e- \3 Y2 K1 M3 m7 l./nginx -s reopen
+ i* N9 _$ b- t9 g) u' C
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:34:53 | 显示全部楼层
当需要切割 nginx 日志文件时,我们需要用到 nginx -s reopen 命令,用来完成新日志的生成。
# D* W: B- G2 |2 }" }9 M. w+ [' I, l当日志文件太大时,一般我们是按天切割文件,也就是按天做个分类,每天的日志放在一个文件中,并用日期命令,方便日后查找。( h( c+ u  x( K& a  ?
但时我们简单的把文件移动并重新命令是无法及时生效的,因为在 linux 下的文件句柄,文件在被打开的情况下 mv 移走文件,操作这个文件的进程还是有这个文件的信息,原进程还是读写原来的文件,简单的 mv 无法生效也就无法完成我们想要的文件分隔。5 m. f9 O9 |8 S% [  G/ Q: x
一般我们需要两步:/ g" F" k7 P- _7 k3 \, w/ ?4 Y. l& K+ O

6 Q, y7 ~0 T5 p移走文件并重命名
4 H8 d8 e, S# t9 m7 J. M利用 nginx 的 reopen 功能,完成新日志文件的生成。
- J6 P9 h* O% b2 Q参考地址,感谢博主分享
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:35:39 | 显示全部楼层
其他命令重启、关闭nginx. w% ]- X4 g. O% R8 y/ Z7 X

5 N8 f7 M' m# l8 U+ k# 查看进程号,下图  master的为主进程号. E' Z' s6 }( s4 P4 J1 e) {
ps -ef | grep nginx
# k5 J1 L0 O: F( ^9 S5 Z#从容停止Nginx
0 C  E' a4 u. ~! O  _& @kill -QUIT 主进程号
; y1 H% R7 C  l- L+ h#快速停止Nginx
" Z9 h0 p4 p7 b" g" _- Okill -TERM 主进程号$ v9 s5 O) W7 c3 }# i5 t$ p
#强制停止Nginx
- j2 J. b& I2 |* }, R( x' M) E/ gpkill -9 nginx4 R- A4 s2 z6 ]# C- Q
#平滑重启nginx:
7 W6 R% e5 n' O7 \0 E0 R5 s! Q6 ^kill -HUP 主进程号1 l. O% r6 t2 Y
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

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

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

1、启动:+ r% b  H! M* @4 [

$ |6 X2 F+ @" N& uC:\server\nginx-1.0.2>start nginx
" Q( x" W& }4 Y3 r; w+ {. N7 J
- A& x( A1 g+ E2 \+ K

! M) d# g, O  H& K/ P8 jC:\server\nginx-1.0.2>nginx.exe8 v1 \, P# k) f6 r" W
( z( F* G- t7 [( C
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。: y7 |$ @* z5 w: K) h
5 K# L" l" W8 x% v# K& C" t
如果需要特殊设置nginx的配置文件路径,可以这样执行start nginx -c conf/nginx.conf9 p4 |: Q6 S) p( f3 e8 D2 B% q  w0 a
( m8 }  r' \: b5 c6 E* H
2、停止:+ y$ W7 u1 [) {0 C9 M( S
# T4 |: d- \# E% N- d6 X) E- D8 m
C:\server\nginx-1.0.2>nginx.exe -s stop
' W* T3 m: |% x" P
; `7 Y; e; B$ _* L% \) V. W3 |/ b* ?
2 |; `" J. _, h) H5 C8 j
C:\server\nginx-1.0.2>nginx.exe -s quit
$ s: u  e: H  M8 m; B+ [
' s4 r: }/ U, r& O" ?$ ?注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
5 l" e( Z# Z0 s- s; {1 U2 W0 }6 @+ a6 t7 E* B
执行 nginx.exe -s stop或者quit命令是不是不能删除进程?查看进程开了一堆nignx.exe
7 i+ K- a" l- P5 C" \/ D8 [: Y* k( {9 w' [% N/ l% W# R3 K
还有80端口在Listening,并且浏览器F5刷新还能访问页面,可能nginx.exe版本或系统的原因,用
9 W$ z9 z+ C* h7 c! Y% |6 ~3 v; A# y. Q2 P' y7 O
taskkill /f /im nginx.exe > null 杀死nginx进程/ G2 U- _& O& s: q
, N8 E: w! u2 @- q  D% M/ f# u
3、重新载入Nginx:
% v; w8 M* A5 N- w' U4 y3 G. z  a& Z; n
C:\server\nginx-1.0.2>nginx.exe -s reload
: L0 F! O! w# k) T4 n! f0 E5 F( V& |: Q0 V; o
当配置信息修改,需要重新载入这些配置时使用此命令。
( H( |) R8 r# ?& I$ |$ S: v8 f4 I- u" I1 l2 M" i. \
4、重新打开日志文件:3 c/ L, N4 }3 B0 c6 |, t! }

. K  `$ }7 f' Y' BC:\server\nginx-1.0.2>nginx.exe -s reopen% ~) d5 R* B5 T' _/ p6 i& }
8 G1 m  Z7 V0 Y# T% q; ?
5、查看Nginx版本:) r$ ^8 \; w0 m- U# G( [# x: s* S

! i: @& q' \6 V2 {4 O- cC:\server\nginx-1.0.2>nginx -v
4 ~& R! E6 Q  v; [3 D2 o' c) @+ Y- Z) L+ I- s3 S5 l
nginx: nginx version: nginx/1.0.2+ {& J$ Q" e) i4 e
) }$ M% w* Y% G" ]9 ]4 p5 T6 J# j

; h$ p7 `/ j! B! F8 B/ _9 `: W$ r, z  h
C:\server\nginx-1.0.2>nginx -V$ F+ A! s3 Z! J# r  }4 c7 j' m; [
& X  L) N7 c/ ~! o2 t, e
nginx: nginx version: nginx/1.0.2
3 o7 I& ?& Q: Y# e' q( ~( h5 X, |) T" @  D9 g6 X
nginx: TLS SNI support enabled
; ^' K  I8 i' d4 W: V3 n+ H2 B4 h( u5 n6 o% e/ K& _
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
" s- @- \% U9 q
( ~; v3 o6 k5 b" D注:v只是简单显示版本信息,V不但显示版本信息,还显示配置参数信息。4 {  J  J" p. h4 y* W" |% h  D

- H4 C, L8 d8 ^5 E: L) n/ w* }$ z* Q# N; V
6、测试或载入指定配置文件:. I' B" P1 g! N* o
8 y4 M% r# \: i$ b; S
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
% W5 @9 L+ j: V3 x7 v3 s9 {% J7 |1 d! Z  Q
C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf0 N- c) s* H  k! Z
5 w! [. h! K% N2 n- D  e6 }& Q
nginx: the configuration file C:\server\nginx-1.0.2/conf/default.conf syntax isok
- n0 G3 @$ O6 q( v+ ?2 h: B
/ K7 N; t$ Y  \2 }3 rnginx: configuration file C:\server\nginx-1.0.2/conf/default.conf test is successful
; g) a* }% `  p/ G- u3 y/ \
7 b# I1 P" r8 y; X载入指定配置文件" u% v+ E4 |) Y3 M$ `

. c& x  v7 U/ oC:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf: F% }! S& b0 G. `) u
! G6 ?8 l/ J8 }' p
回复

使用道具 举报

318

主题

482

回帖

3094

积分

管理员

积分
3094
QQ
 楼主| 发表于 2023-5-23 17:38:36 | 显示全部楼层
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程! A& y! e1 ^- l1 N4 d4 U) _
在nginx.exe目录,打开命令行工具,用命令 启动/关闭/重启nginx 6 k+ h/ w$ K$ h  \, L
start nginx : 启动nginx7 o; c" o$ r  |0 x9 o
nginx -s reload  :修改配置后重新加载生效' ~5 v7 X& g* [4 D1 ^7 ^- d
nginx -s reopen  :重新打开日志文件9 K5 ~& j0 J/ l+ ]; q4 l: Z
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
8 k- p8 f6 q, }% M" z1 q# x       关闭nginx:
+ g% Q1 k8 E; J# \+ x: G nginx -s stop  :快速停止nginx) T3 \3 Z* J1 f0 Z$ C! ]6 z" b5 }9 ~
nginx -s quit  :完整有序的停止nginx3 ~6 @6 l8 l; r; C8 y
如果遇到报错:4 h# p$ \7 k# L9 X/ \* ^; s  G
bash: nginx: command not found
- k4 M. T1 j' [" c0 ]* t2 F; J 有可能是你再linux命令行环境下运行了windows命令,
/ Z# l$ K7 f! R) S1 y1 J/ A 如果你之前是允许 nginx -s reload报错, 试下 ./nginx -s reload5 W( Z& j" _. C1 q5 j
或者 用windows系统自带命令行工具运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-7 17:49 , Processed in 0.088449 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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