NGINX源码安装详细配置文档

NGINX源码安装详细配置文档

在这里插入图片描述

一、基础Linux指令

查看nginx进程是否启动:ps -ef | grep nginx

关闭防火墙:systemctl stop firewalld

开放80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent

关闭80端口:firewall-cmd --permanent --remove-port=80/tcp

查看80端口是否开启:firewall-cmd --query-port=80/tcp

重载防火墙:firewall-cmd --reload //修改端口状态后需要执行

查看已开放端口:firewall-cmd --list-ports

查看监听端口:netstat -tuln | grep 80

查看系统所有资源限制:ulimit -a

查看cpu核心数等信息:lscpu

只显示核心数:nproc

可打开最大文件描述符:cat /proc/sys/fs/file-max

系统 cpu 内存等使用情况:ps aux --sort=-%cpu | head

查看系统已用连接数:sudo netstat -anp | grep ESTABLISHED | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -k1 -nr

查看系统每个进程连接数:sudo lsof -i | awk ‘{print $2}’ | sort | uniq -c | sort -k1 -nr

实时监控系统信息:top (然后按不同数字会有不同信息:1看进程核心信息)

查看系统核心数:cat /proc/cpuinfo | grep “core id”

查看系统信息:

uname -a:显示系统内核版本、操作系统版本、主机名和系统架构等信息。

cat /etc/os-release:显示操作系统的名称、版本、ID和其他详细信息。

lsb_release -a:显示Linux发行版的版本和其他详细信息。

cat /etc/issue:显示操作系统版本和其他信息。

cat /proc/version:显示操作系统版本、编译日期和编译者等信息。

二、安装配置步骤

1.先安装nginx安装时所需要的依赖

使用安装包为:nginx-1.20.2版本

也可以官网下载最新包https://nginx.org/en/download.html

或者自行下载nginx依赖:

sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

如果在内网或者离线环境安装,可以先在同样系统的有网环境下载依赖,导入到需要安装的系统中去。

centos7用以下指令:

sudo yum -y install --downloadonly --downloaddir=/download gcc zlib zlib-devel pcre-devel openssl openssl-devel 

centos8用以下指令:

sudo dnf -y install --downloadonly --downloaddir=/download gcc zlib zlib-devel pcre-devel openssl openssl-devel 

ubantu系列使用以下指令(会下载到/var/cache/apt/archives/目录下):

sudo apt-get download --download-only  gcc zlib zlib-devel pcre-devel openssl openssl-devel 
(1)将nginx所需依赖的包进行安装:

①将以下文件夹使用文件传输工具,传到linux系统;将文件夹放到linux系统指定路径(/usr/local)
在这里插入图片描述

请添加图片描述

②使用linux远程连接工具Xshell或者其他工具将依赖安装包安装

[root@localhost /]# cd /usr/local/nginx_require/

[root@localhost nginx_require]# rpm -ivh *.rpm --force --nodeps

在这里插入图片描述

(2)解压nginx文件夹下的依赖包

nginx_upstream_check_module-master.zip模块用于ustream健康检查,ngx_cache_purge模块,该模块用于清理nginx缓存。ngx_req_status-master.zip 该模块用于nginx请求量检测

①使用linux远程连接工具Xshell或者其他工具将依赖nginx_upstream_check_module-master.zip、ngx_req_status-master.zip文件进行解压

[root@localhost /]# cd /usr/local/nginx/

[root@localhost nginx]# ls

ngx_cache_purge-2.3.tar.gz  nginx-1.20.2.tar.gz  nginx_upstream_check_module-master.zip ngx_req_status-master.zip

[root@localhost nginx]# unzip nginx_upstream_check_module-master.zip

[root@localhost nginx]# unzip ngx_req_status-master.zip

在这里插入图片描述

②将依赖文件ngx_cache_purge-2.3.tar.gz进行解压。

[root@localhost ~]# cd /usr/local/nginx

[root@localhost nginx]# ls

nginx_upstream_check_module-master ngx_cache_purge-2.3.tar.gz  nginx-1.20.2.tar.gz  nginx_upstream_check_module-master.zip

[root@localhost nginx]# tar zxvf ngx_cache_purge-2.3.tar.gz

在这里插入图片描述

2.编译安装nginx

①解压

[root@localhost nginx]# cd /usr/localnginx

[root@localhost nginx]# tar -zxvf nginx-1.20.2.tar.gz

进入nginx-1.20.2文件夹

[root@localhost nginx]#  /usr/localnginx/nginx-1.20.2

②将nginx_upstream_check_m7odule-master打补丁到nginx

[root@localhost nginx-1.20.2]# sudo patch -p1 < ../nginx_upstream_check_module-master/check_1.16.1+.patch

③将 ngx_req_status-master.zip打补丁到nginx

[root@localhost nginx-1.20.2]# sudo patch -p1 < ../ngx_req_status-master/write_filter-1.7.11.patch

④编译

[root@localhost nginx-1.20.2]# sudo ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --with-pcre --with-stream --add-module=../ngx_cache_purge-2.3/ --add-module=../nginx_upstream_check_module-master/ --add-module=../ngx_req_status-master

开始:

在这里插入图片描述

结束:
在这里插入图片描述

最终出现以上样式表示编译成功!

④安装

[root@localhost nginx-1.20.2]# cd /usr/local/nginx-1.20.2

[root@localhost nginx-1.20.2]# ls

build  bundle  configure  COPYRIGHT  Makefile  patches  README.markdown  README-windows.txt  util

[root@localhost nginx-1.20.2]# sudo make && sudo make install

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终出现类似样式表示安装成功!

三、检查nginx是否安装成功

进入安装目录中,

nginx命令:cd /usr/local/nginx/sbin

启动,关闭,重启,命令:

./nginx 启动

./nginx -s stop 关闭

./nginx -s reload 重载配置 正式使用时用这个指令来重载配置

查看nginx是否启动:ps -ef | grep nginx

在这里插入图片描述

四、修改系统配置

1.安装成功,配置启动停用等指令

由于第三点中的命令无法开机自启动,并且启动比较麻烦,所以设置命令到systemctl中的系统命令去,比较方便。

**(1)**创建服务文件

[root@localhost sbin]# vim /lib/systemd/system/nginx.service

①将以下文档添加到页面中,先点击键盘I键进入输入模式

Nginx:

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx restart

ExecStop=/usr/local/nginx/sbin/nginx stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

②按esc退出输入模式

③按 :wq 进行保存

**(2)**然后重新加载配置文档
[root@localhost sbin]# sudo systemctl daemon-reload
(3)将nginx设置为开机自启动
[root@localhost sbin]# systemctl enable nginx  //开机自启动

[root@localhost sbin]# systemctl status nginx //查看nginx状态

在这里插入图片描述

systemctl 指令合集:

[root@localhost sbin]# systemctl disable nginx  //关闭开机自启动

[root@localhost sbin]# systemctl start nginx //启动nginx服务

[root@localhost sbin]# systemctl restart nginx //重启nginx服务 正式使用时请误用

[root@localhost sbin]# systemctl enable nginx  //开机自启动

[root@localhost sbin]# systemctl status nginx //查看nginx状态
2.打开端口,并测试能否通过浏览器访问nginx
(1)打开80端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
(2)重载防火墙配置
[root@localhost ~]# firewall-cmd --reload
(3)检查80端口是否已打开
[root@localhost ~]# firewall-cmd --query-port=80/tcp
(4)使用浏览器访问:在同一网域内,输入安装了nginx的ip即可看到如下页面,即表示成功。

在这里插入图片描述

五、修改nginx.conf配置

在这里插入图片描述
本文只介绍安装步骤,nginx配置是一个复杂的过程,针对于不同服务架构配置也不同,可以根据实际情况进行搜索。
也可以查看我的文章来查看每个配置的作用:http://t.csdnimg.cn/OVftQ

六、linux内核优化与nginx优化

(一)系统内核优化

1.内核优化
sudo vim /etc/sysctl.conf

先按i进入编辑,在尾部添加:

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_keepalive_time = 30

在这里插入图片描述

按esc退出编辑,按wq保存并退出。

然后执行:sudo sysctl -p 重载配置生效

2.修改连接数限制

ulimit -n查看每个进程最大连接数,默认为1024

进入limits.conf进行系统限制编辑:

sudo vim /etc/security/limits.conf

在尾部添加以下内容:

* soft nofile 65535
* hard nofile 65535

在这里插入图片描述

必须重启才生效:sudo reboot。这一步可以留到将所有配置好后执行。

(二)nginx优化

1.日志分割(防止无用日志占用存储空间)

创建配置文件:sudo vim /etc/logrotate.d/nginx

复制以下内容:

/usr/local/nginx/logs/*log

{

su root root

daily

dateext

missingok

rotate 30

notifempty

compress

create 644 nginx

sharedscripts

postrotate

[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 cat /usr/local/nginx/logs/nginx.pid

endscript

}

按esc退出编辑,按wq保存并退出。

在这里插入图片描述

对以上内容进行解释:

/usr/local/nginx/logs/*log # 这里也可以写明对具体哪几个文件进行切割

{

su root root # 赋root权限

daily # 每天切割

dateext # 日志文件添加日期

missingok # 忽略错误

rotate 30 # 最多保留多少个存档

notifempty # 日志为空就不切割

compress # 切割后且压缩

create 644 nginx # 文件权限

sharedscripts # 共享脚本,结果为空

postrotate # 收尾动作,重新生成nginx日志

​ [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 cat /usr/local/nginx/logs/nginx.pid

endscript

}

测试:sudo logrotate -f /etc/logrotate.d/nginx

原本没有日志就不会生成日志压缩包

出现错误1:没有nginx用户,创建即可

在这里插入图片描述

指令:sudo useradd nginx 然后重新执行测试代码。

效果如下:

在这里插入图片描述

2. nginx请求量监控ngx_req_status-master.zip模块
http {

  req_status_zone server_name $server_name 256k;
  req_status_zone server_addr $server_addr 256k;
  req_status server_name server_addr;

  server {
    location /req-status {
     req_status_show on;
   }
  }
}

在这里插入图片描述

Nginx请求信息解释:
在这里插入图片描述

八、注意事项-必看

1. 在nginx服务正式使用时,修改配置后,请勿使用systemctl restart nginx指令来重置配置,如果配置有误,nginx将会宕机。

进入安装目录中,

[root@localhost sbin]# cd /usr/local/nginx/sbin

[root@localhost sbin]# ./nginx -s reload
2.端口一键开放

sudo firewall-cmd --zone=public --add-port=112/tcp --permanent

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

sudo firewall-cmd --zone=public --add-port=443/tcp --permanent

sudo firewall-cmd --zone=public --add-port=161/tcp --permanent

sudo firewall-cmd --zone=public --add-port=5405/tcp --permanent

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent

sudo firewall-cmd --reload

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(C语言)strcpy与strcpy详解,与模拟实现

目录 1. strcpy strcpy模拟实现&#xff1a; 实现方法1&#xff1a; 实现方法2&#xff1a; 2. strcat strcat模拟实现&#xff1a; 1. strcpy 作用&#xff1a;完成字符串的复制。 头文件&#xff1a;<string.h> destination是字符串要复制到的地点&#xff0c;s…

redis持久化-rdb

redis持久化-rdb策略 redis持久化rdb策略触发时机自动触发手动触发bgsave redis持久化 &#x1f680;我们知道redis是将数据存储在内存当中的&#xff0c;通常使用来作为关系型数据库的缓存使用的&#xff0c;以缓解当大量请求到来时关系型数据库的压力。 &#x1f680;既然数…

[LeetCode][226]翻转二叉树

题目 226. 翻转二叉树 给你一棵二叉树的根节点 root&#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#x…

025—pandas 根多列判断不在其他列的数据

思路 是有两个相同结构的数据表&#xff0c;已知第二个表是第一个表的部分数据&#xff0c;需要以其中两列为单位&#xff0c;判断在第一个表中存在&#xff0c;在另外一个表中不存在的数据。 思路&#xff1a; 我们先将 df1 和 df2 的 x、y 列取出&#xff0c;组合为元组形成…

013 Linux_互斥

前言 本文将会向你介绍互斥的概念&#xff0c;如何加锁与解锁&#xff0c;互斥锁的底层原理是什么 线程ID及其地址空间布局 每个线程拥有独立的线程上下文&#xff1a;一个唯一的整数线程ID, 独立的栈和栈指针&#xff0c;程序计数器&#xff0c;通用的寄存器和条件码。 和其…

【Python】成功解决IndexError: list index out of range

【Python】成功解决IndexError: list index out of range &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订…

整除光棍(pta团体天梯练习题)模拟手算除法c++

这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#xff0c;这个整数一定…

朴素贝叶斯 | 多分类问题

目录 一. 贝叶斯公式的推导二. 朴素贝叶斯1. 离散的朴素贝叶斯朴素贝叶斯导入示例 离散的朴素贝叶斯训练 2. 连续的朴素贝叶斯3. 伯努利朴素贝叶斯4. 多项式朴素贝叶斯4.1 Laplace平滑4.2 Lidstone平滑 三. 概率图模型1. 贝叶斯网络(Bayesian Network)1.1 全连接贝叶斯网络1.2 …

【Redis知识点总结】(二)——Redis高性能IO模型剖析

Redis知识点总结&#xff08;二&#xff09;——Redis高性能IO模型及其事件驱动框架剖析 IO多路复用传统的阻塞式IO同步非阻塞IOIO多路复用机制 Redis的IO模型Redis的事件驱动框架 IO多路复用 Redis的高性能的秘密&#xff0c;在于它底层使用了IO多路复用这种高性能的网络IO&a…

[java入门到精通] 18 字符流,编码表,对象流,其他流

今日目标 编码表 字符输出流 字符输入流 字符缓冲流 转换流 对象操作流 装饰模式 commons-iojar包 1 编码表 1.1 思考&#xff1a; 既然字节流可以操作所有文件&#xff0c;那么为什么还要学习字符流 &#xff1f; 如果使用字节流 , 把文本文件中的内容读取到内存时…

ODP(Open Data Plane)

1. 摘要 本文档旨在指导新的ODP应用程序开发人员。 有关ODP的更多详细信息&#xff0c;请参见 ODP 主页。 Overview of a system running ODP applications ODP是一份API规范&#xff0c;为高性能网络应用程序的实现提供平台独立性、自动硬件加速和CPU扩展。 本文档介绍如何充…

DHCP中继实验(思科)

华为设备参考&#xff1a;DHCP中继实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 DHCP中继&#xff0c;可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段&#xff0c;则客户机可以正确地获得动态分配的IP…

OS-Copilot:实现具有自我完善能力的通用计算机智能体

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ AI 缩小了人类间的知识和技术差距 论文标题&#xff1a;OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 论文链接&#xff1a;https://arxiv.org/abs/2402.07456 项目主页&a…

Hadoop生态选择(一)

一、项目框架 1.1技术选型 技术选型主要考虑因素:维护成本、总成本预算、数据量大小、业务需求、行业内经验、技术成熟度。 数据采集传输:Flume&#xff0c;Kafka&#xff0c;DataX&#xff0c;Maxwell&#xff0c;Sqoop&#xff0c;Logstash数据存储:MySQL&#xff0c;HDFS…

全网最最最详细的centos7如何设置静态ip

以下步骤假设你已经有了管理员权限&#xff08;或者可以使用sudo&#xff09;以及你的网络接口名称&#xff08;例如ens33&#xff09;。 步骤 1: 查找网络接口名称 打开终端。运行命令nmcli d来查看所有网络设备及其状态。找到你想配置的设备名称&#xff0c;比如ens33。 步…

结构指针的使用

结构指针的使用 指针类型变量&#xff1a; 指针类型&#xff0c;是变量类型的一种&#xff0c;它是专门用来存储变量的地址的。 例如 int *p; 表示p是一个指针变量&#xff0c;它用来存储某个整型变量的地址。 int a5; int *p&a; 这样&#xff0c;就将整型变量a的地…

Python语言元素之变量

程序是指令的集合&#xff0c;写程序就是用指令控制计算机做我们想让它做的事情。那么&#xff0c;为什么要用Python语言来写程序呢&#xff1f;因为Python语言简单优雅&#xff0c;相比C、C、Java这样的编程语言&#xff0c;Python对初学者更加友好。 一、一些计算机常识 在…

YOLOv9最新的改进项目来了!!

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0c;使用当前流…

RabbitMQ - 06 - Topic交换机

目录 控制台创建队列与交换机 编写消费者方法 编写生产者测试方法 结果 Topic交换机与Direct交换机基本一致 可参考 这篇帖子 http://t.csdnimg.cn/AuvoK topic交换机与Direct交换机的区别是 Topic交换机接收的消息RoutingKey必须是多个单词&#xff0c;以 . 分割 Topic交…

虚拟化

什么是虚拟化 虚拟化&#xff08;Virtualization&#xff09;是一种资源分配和管理技术&#xff0c;是将计算机的各种实体资源,比如CPU、内存、磁盘空间、网络适配器等&#xff0c;进行抽象转换后虚拟的设备,可以实现灵活地分割、组合为一个或多个计算机配置环境&#xff0c;并…