Nginx是Linux和BSD用户中最受欢迎的web服务器之一,因为它具有丰富的功能指令集和优越的灵活性。如果您是一名Web开发人员,那么您可能正在使用Nginx或Apache服务器。因此,深入了解Nginx如何从命令行工作是很重要的。
幸运的是,您可以通过掌握一些Nginx命令来提高DevOps技能。我们的编辑为您选择了这些经常使用的命令,并为启动Linux管理员提供了全面的讨论。那就请你阅读本文以了解关于这些命令的更多信息。
适用于Linux管理员的Nginx命令
与许多Web服务器不同,Nginx仅使用配置文件处理服务器配置。因此,您可以利用的命令行参数很少。这很有用,因为管理员可以快速找到他们要找的命令。下面是一些广泛使用的Nginx命令,您现在就可以使用它们。
在Linux中安装Nginx Web 服务器
Nginx提供了几种用于不同版本Linux的安装软件包。可以使用软件包管理器直接安装Nginx,如下所示。
- $ sudo apt install nginx # Ubuntu
- $ sudo dnf install nginx # Fedora
- $ sudo yum install epel-release && yum install nginx # RHEL 或 CentOS
也可以从源代码编译Nginx。
1. 启动Nginx服务器
如下所示,启动Nginx Web服务器非常容易。只需使用以下命令之一来调用标准Web服务器。
- sudo service nginx start
发出此命令时,Nginx正在由System V初始化脚本启动。如果您是从基于系统的系统(如Ubuntu Linux 16.04LTS及更高版本)运行Nginx,则需要使用以下命令。
- sudo systemctl start nginx
您应该得到一个响应,显示服务器是否成功启动。另一个简单但有效的方法是使用二进制路径直接调用Nginx,如下所示。
- sudo /usr/bin/nginx
2. 停止Nginx服务器
您也可以使用上面显示的类似方法停止正在运行的Nginx服务器。但是,请记住,当停止正在运行的Nginx服务器时,与之关联的所有系统进程都会被杀死。即使您有活动的连接,它也会终止。
- sudo service nginx stop
该命令将在使用System V初始化脚本的系统中停止Nginx进程。对于基于systemd的计算机,可以使用以下命令。
- sudo systemctl stop nginx
但是,在繁忙的服务器中,这些命令仍会花费大量时间。下一条命令演示如何以更快的方式停止Nginx服务。
- sudo killall -9 nginx
3. 退出Nginx服务器
退出Nginx服务器类似于停止服务器-唯一的区别是。Nginx守护程序采用了一种优雅的方法来退出,因为它不会中断任何活动的连接。因此,您的客户请求将在关闭之前按预期的方式提供。
- sudo service nginx quit
使用此命令从Linux shell退出Nginx服务器。运行基于Systemd的计算机的用户可以利用下一个命令来完成此工作。
- sudo systemctl quit nginx
您也可以使用以下Nginx命令之一退出正在运行的服务器。
- sudo nginx -s quit
- sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )
4. 重新启动Nginx服务器
重新启动服务器时,Nginx进程只是停止然后重新启动。您可以使用以下命令之一从命令行重新启动Nginx守护程序。
- sudo service nginx restart
此命令将使用System V初始化脚本重新启动Nginx服务器。您可以在新的Ubuntu版本(例如较新的Ubuntu)等基于系统的系统中使用systemctl进行此操作。
- sudo systemctl restart nginx
您也可以用其他方式执行此操作,如以下示例所示。
- sudo /etc/init.d/nginx restart
如果从源代码编译了Nginx,则可以使用下一个命令。
- sudo /usr/local/nginx/sbin/nginx -s restart
5. 重新加载Nginx服务器
重新加载Nginx服务器与重新启动服务器略有不同。重新加载服务器时,Nginx将以正常方式关闭。这意味着Nginx守护程序将首先终止,然后解析配置文件以进行尝试的更改,并在不中断操作的情况下启动新的工作进程。
- sudo service nginx reload
- sudo systemctl status nginx
第一个命令使用System V初始化脚本,而最后一个命令用于基于systemd的Linux发行版。您也可以调用以下脚本来完成此工作。
- sudo /etc/init.d/nginx reload
如果您已从源代码编译了Nginx,则应使用下一个命令。
- sudo /usr/local/nginx/sbin/nginx -s reload
下一个命令是正常重启Nginx服务器的另一种便捷方法。
- sudo nginx -s reload
6. 检查Nginx状态
有时,您可能需要先查看Nginx服务器的当前状态,然后再对其进行任何操作。使用以下命令之一可以非常快速地完成此操作。切记对您的命令进行sudo或切换到root用户。
- sudo service nginx status
如先前的一些命令所示,此命令通过初始化System V初始化脚本来起作用。您可以对使用systemd的系统使用next命令。
- systemctl status nginx
执行此操作的另一种方法是直接使用Nginx init.d脚本,如以下命令所示。
- sudo /etc/init.d/nginx status
如果Nginx是从源代码编译的,则您需要执行下一个命令。
- sudo /usr/local/nginx/sbin/nginx -s status
7. 检查Nginx配置
由于Nginx的自定义功能范围很广,因此网络管理员经常需要调整配置文件以添加/解锁新功能。但是,您应该始终测试配置文件中是否存在潜在错误。否则,恶意用户可能会利用服务器配置中的错误。
- sudo nginx -t
这是一个简单的命令,可以为您完成这项工作。运行此命令时,基本上是在告诉Nginx检查配置文件中的语法错误,并避免运行服务器。您可以使用以下命令在终端控制台上转储配置测试的结果。
- sudo nginx -T
您也可以使用以下Nginx命令之一来测试Nginx服务器的配置。
- sudo service nginx configtest # System V Init
- sudo systemctl config nginx # systemd-based
8. 送信号给Nginx
管理员可以向Nginx守护程序发送各种有用的信号。您将需要使用-s标志向Nginx发送信号,然后发送实际信号。当我们使用它退出并重新加载Nginx服务器时,我们已经看到了运行中的信号。在这里,我们按顺序指定它们。
- $ sudo nginx -s stop # 停止正在运行的Nginx服务器
- $ sudo nginx -s quit # 退出Nginx服务器
- $ sudo nginx -s reload # 正常重启Nginx
- $ sudo nginx -s reopen # 重新打开服务器日志文件
但是,您的Nginx版本至少应为0.7.53或更高。否则,您将无法向Nginx进程发送信号。