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

news2025/1/23 15:07:53

一、nginx 介绍

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

Nginx:

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

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

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

Apache:

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

1.1 Apache与Nginx的区别

NginxApache
nginx是一个基于事件的web服务器apache是一个基于流程的服务器
所有请求都由一个线程处理单个线程处理单个请求
nginx避免子进程的概念apache是基于子进程的
nginx类似于速度apache类似于功率
nginx在内存消耗和连接方面比较好apache在内存消耗和连接上没有提高
nginx在负载均衡方面表现较好当流量到达进程极限时,apache将拒绝新的连接。
nginx不支持IBMI和openvms一样的osapache支持更多的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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1289836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三方组件自定义扫描规则

第三方例如dubbo自定义扫描组件规则方式注入进容器。例如DubboService注解的类注入进容器中&#xff0c;实现ImportBeanDefinitionRegistrar接口&#xff0c;并通过Import注解注入。 Import除了注入ImportBeanDefinitionRegistrar类&#xff0c;还可以注入配置类Configuration和…

网络安全威胁——跨站脚本攻击

跨站脚本攻击 1. 定义2. 跨站脚本攻击如何工作3. 跨站脚本攻击类型4. 如何防止跨站脚本攻击 1. 定义 跨站脚本攻击&#xff08;Cross-site Scripting&#xff0c;通常称为XSS&#xff09;&#xff0c;是一种典型的Web程序漏洞利用攻击&#xff0c;在线论坛、博客、留言板等共享…

Leetcode刷题笔记题解(C++):92. 反转链表 II

思路&#xff1a;获取要反转的区间&#xff0c;拆开之后进行反转再拼接 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* …

《当代家庭教育》期刊论文投稿发表简介

《当代家庭教育》杂志是家庭的参谋和助手&#xff0c;社会的桥梁和纽带&#xff0c;人生的伴侣和知音&#xff0c;事业的良师益友。 国家新闻出版总署批准的正规省级教育类G4期刊&#xff0c;知网、维普期刊网收录。安排基础教育相关稿件&#xff0c;适用于评职称时的论文发表…

Java利用TCP实现简单的双人聊天

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为聊天。然后创建包&#xff0c;创建两个类&#xff0c;客户端&#xff08;SocketClient&#xff09;和服务器端&#xff08;SocketServer&#xff09; 二、实现代码 客户端代码&#xff1a; package 聊天; import ja…

算法训练 第十周

一、图书整理 II 1.两个栈 将一个栈当作输入栈&#xff0c;用于压入 appendTail 传入的数据&#xff1b;另一个栈当作输出栈&#xff0c;用于 deleteHead操作。每次 deleteHead 时&#xff0c;若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈&#xff0c;这样输出栈从栈…

五大编程实用工具推荐,全都是干货!持续更新...

编程实用工具推荐 1. Sublime Text 官网&#xff1a;https://www.sublimetext.com/ Sublime Text 是一款流行的跨平台文本编辑器。 它受到广大开发者和程序员的欢迎&#xff0c;具有轻量级、高度可定制和强大的功能。 以下是 Sublime Text 的一些主要特点&#xff1a; 1. 多平台…

Linux:dockerfile编写搭建nginx练习(8)

dockerfile是创建镜像的一种&#xff0c;通过已有镜像的基础上再在上面部署一些别的。 在这个基础镜像上搭建&#xff0c;我这个是一个空的centos镜像 我这里用http的yum仓库存放了nginx和rpm包 创建dockerfile vim Dockerfile写入#设置基础镜像 FROM centos#维护该镜像的用户…

虚拟机配置网络(这里以centos为例)

①、点击“编辑”里面的“虚拟网络编辑器”,取消勾选DHCP服务将IP地址分配给虚拟机。 2.点击nat设置&#xff0c;看看对应的子网ip和网关地址还有子网掩码&#xff0c;然后在安装虚拟机生成的vmware8适配器配置中配置和刚刚nat配置中一样的配置 3&#xff0c;然后和第二部一样…

Linux下Python调用C语言

一&#xff1a;Python调用C语言场景 1&#xff0c;已经写好的C语言代码&#xff0c;不容易用Python实现&#xff0c;想直接通过Python调用写好的C语言代码 2&#xff0c;C比Python快&#xff08;只是从语言层面&#xff0c;不能绝对说C程序就是比Python快&#xff09; 3&…

win10下装ubuntu双系统(免U盘)

系统环境&#xff1a; win10系统&#xff0c;工具&#xff0c; 1.EasyBCD&#xff0c;建议2.2以上版本 2.Ubuntu 18.04 系统。当然你也可以下载别的版本&#xff0c;这个不重要。Ubuntu官网下载地址 步骤&#xff1a; 1.桌面右键我的电脑&#xff0c;点击管理->磁盘管理 …

HashMap系列-放入元素的流程

1.put public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {//通过key生成hash后&#xff0c;调用putVal方法public V put(K key, V value) {return putVal(hash(key), key, value, false, true);} } 2.put…

第二十一章 网络通信

网络通信这一章 基本分为三个部分 网络基础概念和TCP,UDP这三个部分主要如下&#xff1a; 计算机网络实现了堕胎计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#x…

代码随想Day24 | 回溯法模板、77. 组合

理论基础 回溯法和递归不可分割&#xff0c;回溯法是一种穷举的方法&#xff0c;通常需要剪枝来降低复杂度。回溯法有一个选择并退回的过程&#xff0c;可以抽象为树结构&#xff0c;回溯法的模板如下&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}…

【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension Pack」 三、安装mysql1.官网下载MySQL2.开始安装如果没有跳过安装成功 3.配置MySQL Server4.环境变…

InST论文复现

论文地址&#xff1a;https://arxiv.org/abs/2211.13203 论文git&#xff1a;https://github.com/zyxElsa/InST 遇到的问题&#xff1a; 1.requests.exceptions.SSLError: HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /openai/clip-…

机器学习 | RMSE和R平方误差的数学解释

RMSE&#xff1a;均方根误差是回归线拟合数据点的程度的度量。RMSE也可以解释为残差中的标准差。 考虑给定的数据点&#xff1a;&#xff08;1&#xff0c;1&#xff09;&#xff0c;&#xff08;2&#xff0c;2&#xff09;&#xff0c;&#xff08;2&#xff0c;3&#xff09…

java WebSocket带参数处理使用

1、webSocket实现代码 Component public class WebSocketStompConfig {//这个bean的注册,用于扫描带有ServerEndpoint的注解成为websocket// ,如果你使用外置的tomcat就不需要该配置文件Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpoi…

三十八、AT模式

目录 一、定义 1、AT模式工作原理如下&#xff1a; 2、优点&#xff1a; 3、缺点&#xff1a; 4、流程&#xff1a; 二、AT模式与XA模式的区别 三、AT模式的脏写问题 四、实现AT模式 一、定义 AT模式是指使用AT命令进行串口通信的工作模式。AT命令是由两个字符组成的命…

协同过滤算法之vue+springboot个性化电影评分推荐系统6n498

摘要为了解决信息过载问题,个性化推荐系统由此产生。个性化推荐系统通过对用户行为的分析,利用数据挖掘算法对信息进行过滤,将用户可能感兴趣的产品或项目推荐给用户。对于电影爱好者来说,利用网络在浩如烟海的电影数据库中找到自己喜欢的电影并非易事。电影作为一个艺术的载体…