当前位置: 首页 > news >正文

Centos8 使用编译安装nginx

一、Nginx是什么?

Nginx是一款轻量级Web服务器、反向代理服务器以及电子邮件代理服务器,并且具有高并发连接处理能力和低内存消耗的特点。前面已经学习使用yum进行安装配置了,现在尝试进行源码编译方式安装。

二、编译安装nginx

系统:CentOS 8.4.2105

nginx版本:nginx-1.21.6

2.1 安装准备

# 创建目录
mkdir /www

#
 下载
1.通过wget下载到目录下
wget http://nginx.org/download/nginx-1.21.6.tar.gz
2.先在浏览器下载然后上传到指定目录

#
 安装依赖,可能还需要其它依赖
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

#
 修改文件夹的权限为root用户,为了有执行权限
chown -R root:root nginx-1.21.6


#
 一般建议使用适当权限用户来运行程序。
groupadd -f nginx                # 创建组
useradd -g nginx nginx           # 创建组以及设置用户
usermod -s /sbin/nologin nginx   # 修改用户默认shell /sbin/nologin

2.3 配置安装模块及选项

./configure --user=nginx --group=nginx --prefix=/www/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module
--user:指定运行nginx服务的用户
--group:指定运行nginx服务的组
--prefix:指定安装nginx的主目录
--with:启用模块

跑完之后出现安装目录概要,下面的对应的文件路径

Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/www/nginx"
  nginx binary file: "/www/nginx/sbin/nginx"
  nginx modules path: "/www/nginx/modules"
  nginx configuration prefix: "/www/nginx/conf"
  nginx configuration file: "/www/nginx/conf/nginx.conf"
  nginx pid file: "/www/nginx/logs/nginx.pid"
  nginx error log file: "/www/nginx/logs/error.log"
  nginx http access log file: "/www/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

2.4 编译及安装

make && make install
# 编译安装时间可能要稍微久一点,等待完成即可。

三、基础配置

3.1 文件目录

cd /www/nginx
ls
conf :配置文件目录
html:网页文件目录
logs:日志和pid进程文件
sbin:二进制启动文件
cd sbin     # 进入目录
./nginx -V  #查看编译参数
./nginx -V  #查看nginx版本

3.2 进程的启动及暂停

cd /nginx/sbin/
./nginx 回车进程启动
netstat -nltp 查看使用的端口
ps -aux | grep nginx 查看进程
kill 进程号,上面netstat -nltp前面的号码就是进程号

3.3 firewall防火墙开放端口

firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放tcp80端口
firewall-cmd --reload                                    # 刷新防火墙状态

3.4 临时关闭selinux

1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
SELINUX可能会导致nginx进程无法启动的情况,及时检查。2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。

3.5 使用systemctl管理进程

vim /usr/lib/systemd/system/nginx.service文件,相关目录替换成自己的目录。

文件示例:

/usr/lib/systemd/system[Unit]
Description=nginx-The High-performance HTTP Server
After=network.target
Wants=network.target[Service]
PIDFile=/www/nginx/logs/nginx.pid
WorkingDirectory=/www/nginx
ExecStart=/www/nginx/sbin/nginx
Restart=on-abnormal
RestartSec=5s
KillMode=mixedStandardOutput=null
StandardError=syslog[Install]
WantedBy=multi-user.target

重启服务

systemctl daemon-reload # 刷新缓存
systemctl start nginx   # 启动进程
systemctl enable nginx  # 开机启动进程

四、添加模块

一开始我们按照业务需求进行模块的安装,但是后续随着业务发展肯定是需要一些新功能或者第三方模块,因此需要添加nginx的模块配置。

4.1 停止服务

systemctl stop nginx

4.2 备份文件

将二进制启动文件和html文件夹进行备份

cp /www/nginx/sbin/nginx /www/nginx.bak
cp -R /www/nginx/html/ /www/html_bak/

4.3 下载模块或者添加标准模块

这边以启用标准模块为测试。

# 以可选模块 http_flv_module进行测试

4.4 重新配置

将之前配置的文件复制过来

cd /www/nginx-1.21.6/  # 回到源码的文件夹
./configure --user=nginx --group=nginx --prefix=/www/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module

在后面添加 --with-http_flv_module,--with表示启用模块的意思

4.5 重新编译

进行重新编译,注意,不要make install

make

覆盖原有二进制启动文件

# 新生成的文件在编译目录下的objs下面nginx文件,覆盖到原有sbin目录下。
cp /nginx-1.21.6/objs/nginx /www/nginx/sbin/nginx

#
 查询编译参数,可以看到http_flv_module已经编译成功
/www/nginx/sbin/nginx -V

六、升级版本

升级版本与上面的重新编译安装方法类似。

  • 停止旧版本
  • 备份启动文件和配置文件以及网页文件等,以防万一。
  • 下载安装新版本进行编译安装,目录和原来一样,配置也是一样即可。
  • 编译make,不能make install否则会覆盖所有文件。
  • 替换文件。
  • 启动进程,检查版本即可。

总结:编译安装比较复杂,可能出现很多不可控因素,非熟悉的同学还是谨慎,升级或者重编译记得备份业务目录和配置文件。

配置步骤:

  • 下载安装包
  • 配置选项和启用模块
  • make&make install安装
  • 服务管理

本文由 mdnice 多平台发布

相关文章:

  • 内网渗透-跨域环境渗透-1
  • GPT实战系列-构建多参数的自定义LangChain工具
  • vue3-admin后台管理系统: 使用Vue3+Vue-Router4 + Element-Plus打造高效后台管理系统
  • Java学习笔记15——类型转换(基本数据类型)
  • 手把手教您如何在国内免费使用GPT4接口的Bing,亲测有效!
  • 收下这份实操案例,还怕不会用Jmeter接口测试工具
  • 深入理解位运算符及其在JavaScript中的应用
  • html5cssjs代码 004 2035年倒计时
  • 揭秘2024美团春招:最全MySQL面试题大全,必看必收藏!
  • web中实现一个账号同一时间只能由一个人使用
  • 【MySQL篇】 MySQL基础学习
  • Objective-C blocks 概要
  • golang中fallthrough简介及用法
  • Java学习笔记18——SQLite3数据库安装与使用
  • Java中 常见的开源树库介绍
  • 【EOS】Cleos基础
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CAP 一致性协议及应用解析
  • CSS 提示工具(Tooltip)
  • echarts的各种常用效果展示
  • Elasticsearch 参考指南(升级前重新索引)
  • IndexedDB
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • XML已死 ?
  • 大数据与云计算学习:数据分析(二)
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 码农张的Bug人生 - 初来乍到
  • 面试遇到的一些题
  • 突破自己的技术思维
  • 异步
  • 云大使推广中的常见热门问题
  • 正则与JS中的正则
  • 如何用纯 CSS 创作一个货车 loader
  • #1015 : KMP算法
  • #pragma multi_compile #pragma shader_feature
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $NOIp2018$劝退记
  • (2)MFC+openGL单文档框架glFrame
  • (4)Elastix图像配准:3D图像
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (七)理解angular中的module和injector,即依赖注入
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 回调、接口回调、 委托
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 中 GetProcess 相关方法的性能
  • .NET序列化 serializable,反序列化
  • @ModelAttribute使用详解