[Linux] nginx编译安装及系统服务添加

一、nginx 介绍

nginx和apache一样都是提供web网页服务的。

Nginx:

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。(实际操作,很多公司为了服务器的稳定,都会设置在20000个左右)

Nginx的主要使用场景: 虚拟主机,反向代理,缓存,http 

Apache:

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

1.1 Apache与Nginx的区别

Nginx Apache
nginx是一个基于事件的web服务器 apache是一个基于流程的服务器
所有请求都由一个线程处理 单个线程处理单个请求
nginx避免子进程的概念 apache是基于子进程的
nginx类似于速度 apache类似于功率
nginx在内存消耗和连接方面比较好 apache在内存消耗和连接上没有提高
nginx在负载均衡方面表现较好 当流量到达进程极限时,apache将拒绝新的连接。
nginx不支持IBMI和openvms一样的os apache支持更多的os
nginx只具有核心功能 apache提供了比nginx更多的功能
nginx的性能和可伸缩性不依赖于硬件 apache依赖于cpu和内存等硬件组件
Nginx支持热部署 Apache不支持热部署

nginx对比apache的优势

轻量级,nqinx比apache 占用更少的内存及资源;

静态处理,Nginx静态处理性能比Apache高;

Nqinx可以实现无缓存的反向代理加速,提高网站运行速度;

Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于便件;

Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程;

Nginx高度模块化,编写模块相对简单,且组件比Apache少;

高并发下nginx能保持低资源低消耗高性能;

Nginx配置简洁,Apache配置复杂;

apache对比nginx的优势

Rewrite 比 nginx Rewrite 功能更强大(Rewrite 的主要功能是实现统一资源定位器 URL 跳转)。 模块更多。 漏洞更少。nginx漏洞稍多。

稳定。

Nginx 处理动态请求的能力较弱,动态请求只能由 Apache 处理。

1.2 ngin进程

 在Nginx中,进程是Nginx服务器的工作单元。Nginx的工作方式是使用一个主进程和多个工作进程(子进程)。

主进程:

Nginx的主进程负责启动、停止和管理所有工作进程。主进程还负责监听来自客户端的连接。在Nginx配置文件中,可以指定主进程的数量,默认情况下是一个。主进程的PID(进程ID)通常写入到一个文件中,以方便后续的管理和监控。

工作进程(子进程):

Nginx通过派生(forking)多个工作进程来处理实际的请求。每个工作进程都是一个独立的进程,可以并发处理多个请求。工作进程的数量可以通过Nginx配置文件中的worker_processes指令进行设置。每个工作进程都有自己的PID。

查看Nginx进程:

重新加载配置文件:
nginx -s reload
killall -1 nginx
killall -s HUP nginx

当你修改了Nginx的配置文件时,可以通过发送SIGHUP信号给主进程来重新加载配置,而不必停止Nginx服务。

 或者使用进程ID:

kill -1 <PID号>
kill -s HUP <PID号>

 停止:
cat /usr/local/nginx/logs/nginx.pid        #先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx

 日志分割,重新打开日志文件:
kill -USR1 <PID号>
[root@lCXK logs]#ls
access.log  error.log  nginx.pid
[root@CXK logs]#mv access.log    access.`date +%F`.log
[root@CXK logs]#ls
access.2023-11-06.log  error.log  nginx.pid
[root@CXK logs]#kill -USR1 8468
[root@CXK logs]#ls
access.2023-11-06.log  access.log  error.log  nginx.pid
[root@CXK logs]#
平滑升级:
kill -USR2 <PID号>
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade  

二、编译安装 nginx

第一步:官网下载安装包

https://nginx.org/en/download.html

第二步:安装依赖环境

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

 

第三步:解压压缩包

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

第四步:创建nginx程序用户

useradd -M -s /sbin/nologin nginx

第五步:进入压缩包./configure指定文件安装路径以及一些模块的安装

./configure 
--prefix=/usr/local/nginx 							#指定nginx的安装路径
--user=nginx 										#指定用户名
--group=nginx 										#指定组名
--with-http_stub_status_module						#启用 http_stub_status_module 模块以支持状态统计

第六步:编译源码包和安装

make && make install

第七步:创建软连接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  #可以补全命令

第八步:添加nginx到系统服务

方法一:

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
使用
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

 

方法二:

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;

stop)
  kill -s QUIT $(cat $PID)
;;

restart)
  $0 stop
  $0 start
;;

reload)
  kill -s HUP $(cat $PID)
;;

*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1

esac
exit 0
使用
chmod +x /etc/init.d/nginx                      #添加执行权限
chkconfig --add nginx							#添加为系统服务
systemctl stop nginx
systemctl start nginx

 

相关推荐

  1. 如何添加 Android Native 系统服务

    2023-12-10 04:02:02       19 阅读
  2. MySQL数据库编译安装

    2023-12-10 04:02:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 04:02:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 04:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 04:02:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 04:02:02       20 阅读

热门阅读

  1. 85. 最大矩形

    2023-12-10 04:02:02       41 阅读
  2. 力扣labuladong一刷day31天二叉树

    2023-12-10 04:02:02       37 阅读
  3. 在Go中使用循环时使用Break和Continue语句

    2023-12-10 04:02:02       35 阅读
  4. 汽车网络安全--ISO\SAE 21434解析(一)

    2023-12-10 04:02:02       38 阅读
  5. Environment Variables Used by GPUDirect Storage

    2023-12-10 04:02:02       33 阅读
  6. 解释 Git 的基本概念和使用方式。

    2023-12-10 04:02:02       19 阅读
  7. 12.5每日一题(备战蓝桥杯小数运算、拆位练习)

    2023-12-10 04:02:02       24 阅读
  8. 【Spring篇】切点表达式语法规范

    2023-12-10 04:02:02       24 阅读
  9. 服务器数据损坏了有办法修复吗 ?

    2023-12-10 04:02:02       36 阅读
  10. [leetcode 双指针]

    2023-12-10 04:02:02       33 阅读
  11. 力扣labuladong——一刷day67

    2023-12-10 04:02:02       35 阅读
  12. 发送、接收消息,界面不及时刷新

    2023-12-10 04:02:02       41 阅读