NGINX源码安装详细配置文档

news2024/10/2 12:34:52

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

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

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

相关文章

静态路由--添加路由表,实现非直连网段的通信

建立拓扑&#xff1a; 路由器**只有直连网段的路由表,而对非直连并不拥有,因此要在路由器的路由表中手动添加非直连网段的路由. ** 也就是说对于AR2来说&#xff0c;**网段192.168.10.0**和**网段192.168.40.0**是他的直连网段。进一步说这两个网端的设备可以相互通信而网段19…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景&#xff1a;开发者A&#xff0c;开发者B在同一个项目协同开发&#xff0c;修改同一个代码文件。开发者A在Win10下&#xff0c;开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

ELF 1技术贴|在NXP源码基础上适配开发板的按键功能

本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码&#xff08;特定版本号为Linux-imx_4.1.15&#xff09;的基础中展开的。 首要任务集中在对功能接口引脚配置的精细调整&#xff0c;确保其能无缝匹配至ELF 1开发板。接下来&#xff0c;我们将详细阐述适配过程中关…

(南京观海微电子)——Gamma调试

1.什么是Gamma&#xff1f; Gamma的概念源自于CRT响应曲线&#xff0c;最开始是用于反映显像管的图像亮度与输入电子枪的信号电压之间&#xff0c;非线性关系的一个参数。对于CRT显示器而言&#xff0c;电子流大小影响显示的图像亮度大小&#xff0c;而电子流大小与输入电压间…

分割模型TransNetR的pytorch代码学习笔记

这个模型在U-net的基础上融合了Transformer模块和残差网络的原理。 论文地址&#xff1a;https://arxiv.org/pdf/2303.07428.pdf 具体的网络结构如下&#xff1a; 网络的原理还是比较简单的&#xff0c; 编码分支用的是预训练的resnet模块&#xff0c;解码分支则重新设计了。…

数据结构奇妙旅程之二叉平衡树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

【C++庖丁解牛】实现string容器的增删查改 | string容器的基本接口使用

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 前言&#x1f4d6;pu…

双链表()

双链表 实现一个双链表&#xff0c;双链表初始为空&#xff0c;支持 55 种操作&#xff1a; 在最左侧插入一个数&#xff1b;在最右侧插入一个数&#xff1b;将第 k 个插入的数删除&#xff1b;在第 k 个插入的数左侧插入一个数&#xff1b;在第 k 个插入的数右侧插入一个数 …

【LeetCode: 299. 猜数字游戏 - 模拟 + 计数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

解决阿里云服务器开启frp服务端,内网服务器开启frp客户端却连接不上的问题

解决方法&#xff1a; 把阿里云自带的Alibabxxxxxxxlinux系统 换成centos 7系统&#xff01;&#xff01;&#xff01;&#xff01; 说一下我的过程和问题&#xff1a;由于我们内网的服务器在校外是不能连接的&#xff0c;因此我弄了个阿里云服务器做内网穿透&#xff0c;所谓…

nRF52832——GPIO端口的应用

nRF52832——GPIO端口的应用 nRF52832 GPIO 端口资源描述nRF52832 GPIO 寄存器介绍GPIO 端口状态的设置GPIO 输出设置 nRF52832 GPIO 输出应用点亮第一个 LED 灯硬件部分Keil 工程搭建 蜂鸣器驱动硬件设计程序编写测试验证 nRF52832 GPIO 输入应用GPIO 输入扫描流程机械按键输入…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络&#xff08;GAN&#xff09;模型&#xff0c;包括编码器&#xff08;Encoder&#xff09;、解码器&#xff08;Decoder&#xff09;、生成器&#xff08;ResnetGenerator&#xff09;和判别器&#xff08;Discriminator&#xff09;。…

vue 自定义组件绑定model+弹出选择支持上下按键选择

参考地址v-modelhttps://v2.cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model 原文代码 Vue.component(base-checkbox, {model: {prop: checked,event: change},props: {checked: Boolean},template: `…

阅读最新的论文,研究趋势

我们需要时刻了解技术的发展趋势&#xff0c;阅读最新的论文研究。那么&#xff0c;怎么阅读论文最高效&#xff1f;最近我们使用了全新的阅读方法&#xff1a; 第一步&#xff0c;阅读最新分类好的列表 第二步&#xff0c;挑选感兴趣的论文&#xff0c;阅读其一页纸总结 第三步…

spring-cloud-openfeign 3.0.0之前版本(对应spring boot 2.4.x之前版本)feign配置加载顺序

在之前写的文章配置基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 下图为自己整理的

rk3399使用阿里推理引擎MNN使用cpu和gpu进行benchmark,OpenCL效果不佳?

视频讲解 rk3399使用阿里推理引擎MNN使用cpu和gpu进行benchmark&#xff0c;OpenCL效果不佳&#xff1f; 背景 MNN是阿里开源的推理引擎&#xff0c;今天测试一下在rk3399平台上的benchmark怎么样&#xff1f; alibaba/MNN: MNN is a blazing fast, lightweight deep learning…

百家争鸣!AI艺术生成器的进化: 深入AI生成艺术世界

人工智能&#xff08;AI&#xff09;已经彻底改变了艺术界&#xff0c;AI艺术生成器现在能够创作出独特而迷人的作品。然而&#xff0c;关于AI生成艺术与人类创作艺术的艺术价值的争论仍然在引起争议。 社区对AI生成图像的原创性和所有权提出了关注&#xff0c;导致了法律纠纷和…

第十六章垃圾回收相关概念

第十六章垃圾回收相关概念 文章目录 第十六章垃圾回收相关概念1. System.gc()的理解2. 内存溢出与内存泄漏2.1 内存溢出&#xff08;OOM&#xff09;2.2 内存泄漏&#xff08;Memory Leak&#xff09; 3. Stop The World4. 垃圾回收的并行与并发4.1 并发&#xff08;Concurrent…

基于SpringBoot的招聘网站

基于jspmysqlSpring的SpringBoot招聘网站项目&#xff08;完整源码sql&#xff09; 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》…

ModuleNotFoundError: No module named ‘aitodpycocotools‘

具体不清楚&#xff0c;反正pip下载也下载不了&#xff0c;改为pycocotools后没问题了 解决 分析 是承接之前错误&#xff0c;为了解决keyerror问题&#xff0c;pip install -v -e .重新安装mmdet&#xff0c;导致的