热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CentOS系统编译安装Nginx服务器

编译Nginx的要求如下:磁盘空间:需要保证有10MB以上的剩余磁盘空间。Nginx安装完毕后会占据4MB左右的磁盘空间,实际的磁盘空间需求会因编译设置和是否安装第三方模块而有所不同。GCC编译器及相关工具:GCC全称为GNUCompilerCollection,是GNU社区推出

编译Nginx的要求如下: 
磁盘空间:需要保证有10MB以上的剩余磁盘空间。Nginx安装完毕后会占据4MB左右的磁盘空间,实际的磁盘空间需求会因编译设置和是否安装第三方模块而有所不同。 
GCC编译器及相关工具:GCC全称为GNU Compiler Collection,  是GNU社区推出的功能强大、性能优越的用于编程开发的自由编译器,是GNU的代表作品之一,目前可以编译的语言包括:C、C++、Objective-C、Fortran、Java等。您必须确保您的操作系统安装有GCC编译器。 
另外,您还必须安装Autoconf和Automake工具,它们用于自动创建功能完善的Makefile,当前大多数软件包都是用这一工具生成Makefile的,Nginx也不例外。在CentOS系统下,您可以使用yum命令安装GCC编译器及相关工具: 
yum -y install gcc gcc-c++ autoconf automake 
模块依赖性:Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。同样,如果是在CentOS系统下,我们可以使用yum命令安装或下载源码包编译安装这些模块依赖的库: 
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 

Nginx在Linux环境下可以通过编译源码的方式来安装,最简单的安装命令如下:

tar zxvf nginx-版本号.tar.gz 
cd nginx-版本号 
./configure 
make 
make install

按照以上命令,Nginx将被默认安装到/usr/local/nginx目录下。您可以通过/configure --help命令查看Nginx可选择的编译选项。

编译选项举例如下:

--prefix=   Nginx安装路径。如果没有指定,默认为/usr/local/nginx 
--sbin-path=   Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为/sbin/nginx 
--conf-path=   在没有给定 ?c 选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf 
--pid-path=     在nginx.conf中没有指定pid指令的情况下,默认的Nginx.pid的路径。如果没有指定,默认为/logs/nginx.pid

等等

Nginx的启动,停止,平滑重启

启动Nginx 
启动Nginx,可以执行以下命令。假设Nginx安装在/usr/locaUnginx/目录中,那么启动Nginx的命令就是: 
/usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf 
参数“-c”指定了配置文件的路径,如果不加“-c”参数,Nginx会默认加载其安装目录的conf子目录中的nginx.conf文件

Nginx的停止 
Nginx的停止方法有很多种,一般通过发送系统信号给Nginx主进程的方式来停止Nginx。 
我们可以通过ps命令来查找Nginx的主进程号: 
ps ?ef | grep nginx

从图中可以看到,1个Nginx进程的备注信息为“master process”,表示它为主进程,另外的1个进程备注信息为“worker process”,表示它们为子进程。32244为主进程号。 
如果在nginx.conf配置文件中指定了pid文件存放的路径(例如:/usr/local/webserver/nginx/logs/nginx.pid;),该文件中存放的就是Nginx当前的主进程号。如果没有指定pid文件存放的路径,nginx.pid文件默认存放在Nginx安装目录的logs目录下。所以,我们也可以直接通过以下命令来完成,省下寻找Nginx主进程号的步骤: 
kill -信号类型  `/usr/local/webserver/nginx/logs/nginx.pid`

(1)从容停止Nginx。 
kill - QUIT Nginx主进程号  或者   kill -QUIT `/usr/local/webserver/nginx/logs/nginx.pid`

(2)快速停止Nginx 
kill - TERM Nginx主进程号 或者  kill -TERM `/usr/local/webserver/nginx/logs/nginx.pid`

kill - INT Nginx主进程号    或者   kill -INT `/usr/local/webserver/nginx/logs/nginx.pid`

(3)强制停止所有Nginx进程

pkill ?9 nginx

Nginx的平滑重启

如果改变了Nginx的配置文件(nginx conf),想重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行。不过,重启之前,要确认Nginx配置文件(nginx.conf)的语法是正确的,否则Nginx将不会加载新的配置文件。通过以下命令可以判断Nginx配置文件是否正确: 
/usr/local/webserver/nginx/sbin/nginx ?t -c 
/usr/local/webserver/nginx/conf/nginx.conf
 
如果配置文件不正确,屏幕将会提示配置文件的第几行出错: 
[emerg]:unknown directive”abc“in /usr/local/webserver/nginx/conf/nginx.conf:55

configuration file /usr/local/webserver/nginx/conf/nginx.conf test failed

如果配置文件正确,屏幕将提示以下两行信息: 
the configuration file /usr/local/webserver/nginx/conf/nginx.conf  syntax is OK 
configuration file /usr/local/webserver/nginx/conf/nginx.conf  test is successful

这时候,就可以平滑重启Nginx了。 
kill -HUP Nginx主进程号 
kill一HUP   `/usr/local/webserver/nginx/logs/nginx.pid`

当Nginx接收到HUP信号时,它会尝试先解析配置文件,如果成功,就应用新的配置文件(例如,重新打开日志文件或监听的套接字)。之后,Nginx运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,Nginx将继续使用旧的配置进行工作。

Nginx支持以下几种信号类型: 
·TERM,INT快速关闭; 
·QUIT从容关闭; 
·HUP平滑重启,重新加载配置文件; 
·USR1重新打开日志文件,在切割日志时用途较大; 
·USR2平滑升级可执行程序; 
·WINCH从容关闭工作进程。

Nginx的平滑升级 
当需要将正在运行中的Nginx升级、添加,删除服务器模块时,可以在不中断服务的情况下,使用新版本、重编译的Nginx可执行程序替换旧版本的可执行程序。步骤如下:

(1)使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx,可以将新版本编译安装到旧版本的Nginx安装路径中。替换之前,您最好备份一下旧的可执行文件。

(2)发送以下指令: 
kill ?USR2 旧版本的nginx主进程号

(3)旧版本Nginx的主进程将重命名它的.pid文件为.oldbin(例如:/usr/local/webserver/nginx/logs/nginx.pid.oldbin),然后执行新版本的Nginx可执行程序,依次启动新的主进程和新的工作进程。 

(4)此时,新、旧版本的Nginx实例会同时运行,共同处理输入的请求。要逐步停止旧版本的Nginx实例,你必须发送WINCH信号给旧的主进程,然后,它的工作进程就将开始从容关闭: 
kill -WINCH 旧版本的Nginx主进程号

(5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了: 

(6)这时候,我们可以决定是使用新版本,还是恢复到旧版本: 
kill ?HUP     旧的主进程号:Nginx将在不重载配置文件的情况下启动它的工作进程; 
kill ?QUIT    新的主进程号:从容关闭其工作进程(worker process); 
kill ?TERM   新的主进程号:强制退出; 
kill  新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号。
 
新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为它的.pid文件,这样,一切就都恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行: 



推荐阅读
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
author-avatar
xzh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有