保姆级 | Nginx编译安装

0x00 前言

        Nginx 是一个 HTTP 和反向代理服务器, 邮件代理服务器, 和通用 TCP/UDP 代理服务器, 最初由伊戈尔·西索耶夫(Igor Sysoev)撰写。采用编译安装可以根据自身需要自定义配置,让服务器有更高的安全性和稳定性。

        

        

0x01 环境说明

HECS(云耀云服务器)
Ubuntu 22.04
Nginx 1.22.1
GCC 11.3.0
Make 4.3
PCRE 8.39
OpenSSL 3.0.2
zlib 1.2.11
GD 2.3.0

        

        

0x02 准备工作

        在 Nginx 编译安装之前,我们先要提前做一些准备工作。需要安装 GCC Make PCRE OpenSSL zlib GD 环境依赖项。 

        

更新镜像源。

apt-get update

        

安装 GCC 库。

apt-get install gcc

        

安装 make 库。

apt-get install make

        

安装 PCRE 库。

apt-get install libpcre3 libpcre3-dev

        

安装 OpenSSL 库。

apt-get install openssl

        

安装 zlib 库。

apt-get install zlib1g zlib1g-dev

        

安装 GD 库。

apt-get install libgd-dev libgdal-dev

        

        

0x03 Nginx下载

        需要注意的是,使用编译安装时间会比较久。但是编译安装更适合生产环境,所以我个人更倾向于使用编译安装。

        

在开始之前我们需要先创建 nginx 用户,之所以这么做主要是为了降低服务器风险,让 nginx 以最小的权限运行。

useradd -s /sbin/nologin nginx

        

访问 nginx 官网。

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

        

下载 Nginx1.22.1 。

wget https://nginx.org/download/nginx-1.22.1.tar.gz

        

解压 Nginx1.22.1 。

tar -zxvf nginx-1.22.1.tar.gz

        

        

0x04 运行配置脚本

打开解压缩后的 nginx-1.22.1 文件。

cd nginx-1.22.1

        

运行 ./configure 配置脚本,这个脚本主要用来检查 nginx-1.22.1 环境所需的依赖项并配置编译选项。

./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-mail \
--with-pcre \
--with-stream \
--with-threads \
--with-file-aio \
--with-http_v2_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_dav_module \
--with-mail_ssl_module \
--with-http_slice_module \
--with-stream_ssl_module \
--with-http_realip_module \
--with-http_gunzip_module \
--with-http_addition_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_auth_request_module \
--with-http_image_filter_module

关于配置命令的使用说明:

命令说明
--prefix=/usr/local/nginx指定安装目录为/usr/local/nginx。
--user=nginx指定运行Nginx的用户为nginx。
--group=nginx指定运行Nginx的用户组为nginx。
--with-mail启用邮件模块,用于处理邮件代理。
--with-pcre启用PCRE模块,用于支持正则表达式。
--with-stream启用Stream模块,用于支持TCP和UDP代理。
--with-threads启用Threads模块,用于支持多线程操作。
--with-file-aio启用File AIO模块,用于支持异步文件IO。
--with-http_v2_module启用HTTP/2模块,用于支持HTTP/2协议。
--with-http_flv_module启用FLV模块,用于支持FLV流媒体。
--with-http_mp4_module启用MP4模块,用于支持MP4流媒体。
--with-http_ssl_module启用SSL模块,用于支持HTTPS。
--with-http_sub_module启用Substitution模块,用于支持内容替换。
--with-http_dav_module启用DAV模块,用于支持WebDAV。
--with-mail_ssl_module启用Mail SSL模块,用于支持安全邮件传输。
--with-http_slice_module启用Slice模块,用于支持分片上传。
--with-stream_ssl_module启用Stream SSL模块,用于支持安全TCP和UDP代理。
--with-http_realip_module启用Real IP模块,用于获取真实的客户端IP地址。
--with-http_gunzip_module启用Gzip模块,用于支持压缩和解压缩。
--with-http_addition_module启用Addition模块,用于支持响应内容的追加。
--with-http_secure_link_module启用Secure Link模块,用于生成和验证安全链接。
--with-http_stub_status_module启用Stub Status模块,用于获取Nginx的运行状态。
--with-http_gzip_static_module启用Gzip Static模块,用于支持静态文件的压缩。
--with-http_random_index_module启用Random Index模块,用于随机选择索引文件。
--with-http_auth_request_module启用Auth Request模块,用于验证用户授权请求。
--with-http_image_filter_module启用Image Filter模块,用于处理图像。

        

        

0x05 Nginx编译安装

编译安装 Nginx1.22.1 。

make && make install

        

        

0x06 Nginx验证启动

访问 Nginx1.22.1 的启动文件夹。

cd /usr/local/nginx/sbin

        

启动 Nginx1.22.1 。

./nginx

        

验证 Nginx1.22.1 文件。

./nginx -t
./nginx -v

        

查看 Nginx1.22.1 启动状态。

netstat -ntlp | grep nginx

        

        

0x07 Nginx服务配置

创建 Nginx1.22.1 配置文件。

vim /usr/lib/systemd/system/nginx.service

        

编辑 Nginx1.22.1 运行配置文件,保存并退出。 注意:在写入配置文件时,最好将中文注释去除。 

[Unit]
Description=nginx - high performance web server  # 描述服务功能
Documentation=http://nginx.org/en/docs/  # 获取更多Nginx的信息
After=network.target remote-fs.target nss-lookup.target  # 指定了该服务在哪些其他服务之后启动[Service]
Type=forking  # 创建子进程运行服务
PIDFile=/usr/local/nginx/logs/nginx.pid  # 指定保存nginx进程ID的文件路径
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf  # 检查nginx配置文件的语法
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  # 启动nginx服务
ExecReload= /usr/local/nginx/sbin/nginx -s reload  # 重启nginx服务
ExecStop= /usr/local/nginx/sbin/nginx -s stop  # 停止nginx服务
PrivateTmp=true  # 启用私有的临时目录[Install]
WantedBy=multi-user.target  # 多用户模式下启用该服务

        

给刚刚创建好的 Nginx1.22.1 运行配置文件添加权限。

chmod +x /usr/lib/systemd/system/nginx.service

        

打开 Nginx1.22.1 配置文件。

vim /usr/local/nginx/conf/nginx.conf

        

编辑 Nginx1.22.1 配置文件。这里修改端口为 88 端口号,并设置主机名建立连接,保存并退出。注意需要在服务器中开放 88 端口号。

        

        

0x08 Nginx重载访问

重载 Nginx1.22.1 服务,并设置开机自启动。 注意:请严格按照步骤执行。 

systemctl daemon-reload
systemctl stop nginx.service
systemctl start nginx.service
systemctl reload nginx.service
systemctl restart nginx.service
systemctl status nginx
systemctl enable nginx.service

        

访问 Welcome to nginx! 页面。

        

        

0x09 参考文献

[1].帽子先生. nginx入门之----编译安装[EB/OL]. [2023-11-18]. https://zhuanlan.zhihu.com/p/128579141.

        

        

0x10 总结

至此Nginx编译安装完成。由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

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

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

相关文章

OpenAI GPT-4 Turbo发布:开创AI新时代

🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. GPT-4 Turbo的突破1.1上下文长度和控制手段的加强:1.2多模态支持&#xff1a…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论, 然后通过举例论证,接着再扩展,彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

Windows下安装RabbitMQ

1.安装Erlang 因为RabbitMQ是用Erlang语言编写的,所以在安装RabbitMQ之前需要先安装Erlang。 如果还未安装Erlang,官方下载安装包,点击Download Windows installer下载Erlang Downloads - Erlang/OTP 下载Erlang/OTP后,双击otp的…

系统韧性研究(5)| 常用的系统韧性技术

如果不利事件或条件导致系统无法正常运行,则它们可能会对有价值的资产造成各种形式的损害。正如我在本系列的前几篇文章中概述的那样,系统韧性很重要,因为没有人想要一个无法克服“不可避免的逆境”的脆弱系统。 在本系列的第一篇文章中&…

Express.js 与 Nest.js对比

Express.js 与 Nest.js对比 自从 Node.js 发布以来,Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多,每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一,在本文中&…

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点: 扩展: 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对可达性分析算法STW时间长、…

阿里AoneFlow分支管理

分支模式 1.TrunkBased模式 工作方式 TrunkBased 模式是持续集成思想所崇尚的工作方式,它由单个主干分支和许多发布分支组成,每个发布分支在特定版本的提交点上从主干创建出来,用来进行上线部署和 Hotfix(补丁)。 …

workman使用手册1.0

workman官网地址:高性能PHP应用容器 workerman 1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用 定位到项目根目录:例:cd /mnt/workman 启动代码:php outin.php start -d 停…

Python小白之PyCharm仍然显示“No module named ‘xlwings‘”

Python小白之“没有名称为xlwings‘的模块”-CSDN博客文章浏览阅读8次。cmd 打开命令行,输入python出现>>>的提示格,输入import xlwings 回车,正常报错:No module named xlwings。输入python 回车后,再输入im…

mongodb使用简单文档

1、mongodb安装与卸载 1.1、安装 python -m pip install pymongo 或 pip install pymongo如果要安装指定版本: python -m pip install pymongo3.5.1对已有的版本进行升级: python -m pip install --upgrade pymongo1.2、卸载 pip uninstall pymongo…

环境配置 | Git的安装及配置[图文详情]

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从小到大的项目版本管理。下面介绍了基础概念及详细的用图文形式介绍一下git安装过程. 目录 1.Git基础概念 2.Git的下载及安装 3.常见的git命令 Git高级技巧 Git与团队协作 1.Git基础概念 仓库&#…

我认为除了HelloWorld之外,Python的三大数据转换实例可以作为开始学习Python的入门语言。

Python的三大数据转换实例 一、反转三位数 class Solution:def funtcion(self,number):hint(number/100)tint(number%100/10)zint(number%10)return 100*z10*th if __name____main__:solution Solution()num123new_num solution.funtcion(num)print("输入:{}".fo…

制作Go程序的Docker容器

今天突然遇到需要将 Go 程序制作成 Docker 的需求,所以进行了一些研究。方法很简单,但是官方文档和教程有些需要注意的地方,所以写本文进行记录。 源程序 首先介绍一下示例程序,示例程序是一个 HTTP 服务器,会显示si…

基于DOTween插件实现金币飞行到指定位置功能

文章目录 前言一、DOTween是什么?二、使用步骤1.导入DOTween插件在Unity官方插件商店找到DOTween插件导入DOTween插件启用DOTween插件 2.代码逻辑金币飞行代码控制飞行效果代码 3.物体配置1.物体上装配CoinEffect脚本2.在金币预制体上装配FlyControl脚本 三、效果展…

基于SpringBoot的SSMP整合案例(消息一致性处理与表现层开发)

消息一致性处理 在后端执行完相应的操作后,我们需要将执行操作后的结果与数据返回前端,前端 调用我们传回去的数据,前端是如何知道我们传回去的数据名称的? 答:前后端遵循了同一个"协议"。这个协议就是定义…

单例模式(常用)

单例模式(单例设计模式) 在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。 单例模式的定义与特点 单例(Singleton)模式的定义:指…

Stable Diffusion1.5网络结构-超详细原创

目录 1 Unet 1.1详细整体结构 1.2 缩小版整体结构 1.3 时间步编码 1.4 CrossAttnDownBlock2D 1.4.1 ResnetBlock2D 1.4.2 Transformer2DModel 1.4.2.1 BasicTransformerBlock 1.4.2.1.1 SelfAttention 1.4.2.1.2 CrossAttention 1.4.2.1.3 FeedForward 1.4.3 DownS…

【数据库】数据库连接池导致系统吞吐量上不去-复盘

在实际的开发中,我们会使用数据库连接池,但是如果不能很好的理解其中的含义,那么就可以出现生产事故。 HikariPool-1 - Connection is not available, request timed out after 30001ms.当系统的调用量上去,就出现大量这样的连接…

Git 基本操作

目录 创建仓库命令 git init git clone 提交与修改 git add git status git diff git commit git reset git rm git mv git checkout git switch git restore 提交日志 git log git blame 远程操作 git remote git fetch git pull git push Git 的工作就…