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]# lsngx_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]# lsnginx_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]# lsbuild  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 65000net.ipv4.tcp_tw_reuse = 1net.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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AJAX-HTTP协议

文章目录 HTTP协议请求报文响应报文接口文档 HTTP协议 规定了浏览器发送及服务器返回内容的格式 请求报文 浏览器按照HTTP协议要求的格式&#xff0c;发送给服务器的内容 组成部分&#xff1a; 1.请求行&#xff1a;请求方法&#xff0c;URL&#xff0c;协议 2.请求头&#…

数据结构(二)——线性表(顺序表)

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表&#xff1a;是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列&#xff0c;不是顺序表&#xff0c;因为所有的整数是无限的)其中n为表长&#xff0c;当n0时线性表是一个空表…

【NR技术】 3GPP支持无人机服务的关键性能指标

1 性能指标概述 5G系统传输的数据包括安装在无人机上的硬件设备(如摄像头)收集的数据&#xff0c;例如图片、视频和文件。也可以传输一些软件计算或统计数据&#xff0c;例如无人机管理数据。5G系统传输的业务控制数据可基于应用触发&#xff0c;如无人机上设备的开关、旋转、升…

PostGIS 中的 K-Means 聚类操作及应用

K-Means算法&#xff1a; K-means 是数据科学和商业的基本算法。让我们深入了解一下。 1. K-means是一种流行的用于聚类的无监督机器学习算法。它是用于客户细分、库存分类、市场细分甚至异常检测的核心算法。 2. 无监督&#xff1a;K-means 是一种无监督算法&#xff0c;用于…

[蜥蜴书Chapter2] -- 创建测试集

目录 一、规则 二、方法 1、seed 2、identifier 1&#xff09;选取一个身份号 2&#xff09;选取一定比例的身份号作为测试集 3&#xff09;身份号的选取&#xff1a; 3、利用scikit-learn&#xff1a; 1) 随机生成&#xff1a; 2&#xff09;注&#xff1a;分类 3&a…

【C++】深度解剖多态

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是多态&#xff0c;熟练掌握多态的定义&a…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多&#xff0c;都是说主函数增加UART_Receive_IT()函数来着&#xff0c;实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间&#xff1a;2024年3月9日 Cube版本&#xff1a;STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

【牛客】VL65 状态机与时钟分频

描述 题目描述&#xff1a; 使用状态机实现时钟分频&#xff0c;要求对时钟进行四分频&#xff0c;占空比为0.25 信号示意图&#xff1a; clk为时钟 rst为低电平复位 clk_out 信号输出 Ps 本题题解是按照1000的状态转移进行的&#xff0c;不按照此状态进行&#xff0c;编译器…

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

Vue.js+SpringBoot开发高校学生管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学生选课模块2.4 成绩管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学院课程表3.2.3 学生选课表3.2.4 学生成绩表 四、系统展示五、核心代码5.1 查询课程5.2 新…

【备战蓝桥杯系列】蓝桥杯国二选手笔记二:算法模版笔记(Java)

感谢大家的点赞&#xff0c;关注&#xff0c;评论。准备蓝桥杯的同学可以关注一下本专栏哦&#xff0c;不定期更新蓝桥杯笔记以及经验分享。本人多次参加过蓝桥杯&#xff0c;并获得过蓝桥杯国二的成绩。 算法模版笔记&#xff08;Java&#xff09; 这篇文章给大家分享我的蓝桥…

LeetCode-1004. 最大连续1的个数 III

每日一题系列&#xff08;day 20&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50…