首页 > 系统相关 >编译安装及更新 Nginx 服务

编译安装及更新 Nginx 服务

时间:2023-06-23 15:11:54浏览次数:43  
标签:编译 nginx ## 安装 http Nginx root local

目录

一、编译安装 Nginx

1. 下载 Nginx 源码包

下载地址:https://nginx.org/download/

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

cd /etc/yum.repos.d
mv local.repo local.repo.bak
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

2. 解压 Nginx 源码包

[root@localhost opt]# 
tar -xf nginx-1.12.0.tar.gz 

image-20230619142846192

3. 安装编译安装依赖包

依赖包 作用
pcre-devel CRE 是一个正则表达式库,该软件包包含了开发头文件和库文件
zlib-devel Zlib 是一个压缩库,提供用于压缩和解压缩数据的函数,该软件包包含了开发头文件和库文件
gcc GCC 是 GNU 编译器集合中的一个,它是 C 编译器、C++ 编译器和其他语言编译器的前端,可以将源代码编译为可执行文件
gcc-c++ GCC 的 C++ 编译器前端,允许编译 C++ 代码
make 一种自动化编译程序。它根据 Makefile 中的规则自动构建代码
[root@localhost opt]# 
yum -y install \
 pcre-devel \
 zlib-devel \
 gcc \
 gcc-c++ \
 make

image-20230619144459455

4. 创建运行用户与组

[root@localhost ~]# 
useradd -M -s /sbin/nologin nginx

image-20230619145226672

5. 设置安装的路径及模块

模块 作用
--prefix 安装目录
--user 运行nginx服务器的用户
--group 运行nginx服务器的用户组
--with-http_stub_status_module Nginx 内置模块之一,用于提供当前 Nginx 进程的状态信息和统计数据。它可以通过 HTTP 请求获取,方便监控和调试
[root@localhost nginx-1.12.0]# 
./configure \
 --prefix=/usr/local/nginx \
 --user=nginx \
 --group=nginx \
 --with-http_stub_status_module

image-20230619150507312

6. 编译与安装

[root@localhost nginx-1.12.0]# 
make -j 4 && make install

image-20230619151517741

7. 优化 Nginx 的命令

让系统识别nginx的操作命令

[root@localhost ~]# 
ln /usr/local/nginx/sbin/nginx /usr/local/bin/

image-20230619151813107

8. 检查 Nginx 配置文件是否配置正确

[root@localhost ~]# 
nginx -t

image-20230619152329894

二、Nginx 版本升级

1. 安装新版本 Nginx 依赖包

Nginx-1.22.0 版本的安装包比 1.12 版本的多了两个依赖包(openssl 和 openssl-devel )

yum -y install openssl openssl-devel 

image-20230619171728185

2. 设置安装路径及模块

[root@localhost nginx-1.22.0]# 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

image-20230619184155961

3. 编译新的 Nginx 软件包

[root@localhost nginx-1.22.0]# 
make

4. 更新 Nginx 执行文件

(1)备份

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old

(2)更新

cp /opt/objs/nginx /usr/local/nginx/sbin/nginx

5. 检查 Nginx 是否更新成功

查看 Nginx版本

nginx -v

image-20230619190324179

三、添加 Nginx 系统服务

添加到 service 系统管理

[root@localhost ~]# 
vim /etc/init.d/nginx

#!/bin/bash
#chkconfig: 35 99 20
#description:Nginx Server Control Script

COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"

case "$1" in
start)
        $COM
;;

stop)
        kill -s QUIT $(cat $PID)
;;

resart)
        $0 stop
        $0 start
;;

reload)
        kill -s HUP $(cat $PID)
;;

*)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1

esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx	
systemctl stop nginx   
systemctl start nginx

image-20230619195723180

三、nginx 主配置文件

nginx 的主配置文件为:/usr/local/nginx/conf/nginx.conf

1. 全局配置

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

image-20230619200755271

image-20230619201113361

2. I/O 配置

image-20230619201942030

如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。

在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。

/etc/security/limits.conf

epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数
已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性
能表现。

3. HTTP 配置

使用“http { }”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保
持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包
含在子界定标记“server { }”内

http {
	##文件扩展名与文件类型映射表
    include       mime.types;
	##默认文件类型
    default_type  application/octet-stream;
	##日志格式设定
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	##访问日志位置
    #access_log  logs/access.log  main;
	##支持文件发送(下载)
    sendfile        on;
	##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
	##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
	##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
	
	##Web 服务的监听配置
	server {
		##监听地址及端口
		listen 80; 
		##站点域名,可以有多个,用空格隔开
		server_name www.kgc.com;
		##网页的默认字符集
		charset utf-8;
		##根目录配置
		location / {
			##网站根目录的位置/usr/local/nginx/html
			root html;
			##默认首页文件名
			index index.html index.php;
		}
		##内部错误的反馈页面
		error_page 500 502 503 504 /50x.html;
		##错误页面配置
		location = /50x.html {
			root html;
		}
	}
}

=========================================================================================
日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

四、总结

升级软件时,需要在编译安装新软件之前将新软件所需要的编译依赖包安装好,否则会编译失败。

标签:编译,nginx,##,安装,http,Nginx,root,local
From: https://www.cnblogs.com/m-zhuang/p/17499174.html

相关文章

  • proxmox Virtual Environment 7.4-3 安装记录
    diskutillist卸载所有分区diskutilunmountDisk/dev/diskX删除U盘中的所有分区sudodiskutileraseDiskfreeSPACE/dev/diskX删除U盘分区,dd写入proxmox到U盘sudoddif=./proxmox-ve_7.4.1.isoof=/dev/disk3bs=1M主机开机按F11选择U盘启动,正常输入ip,netmask,gatewa......
  • 甲骨文Ubuntu ARM安装桌面版
    1、更新系统aptupdate-y;aptupgrade-y2、安装桌面aptinstallubuntu-desktop-y安装桌面这个过程比较慢,2核12G耗时6分钟3、安装xrdpaptinstallxrdp-y3、添加用户、重启Xrdp、开机启动adduserxrdpssl-certsystemctlrestartxrdpsystemctlstatusxrdp......
  • k8s安装部署集群
    说明这里准备了三台服务器,一台作为主节点(Master),两台作为子节点(Node)每个步奏分为:ALL=所有服务器Master=主节点Node=子节点详细步骤查看ip(ALL)ipaddr这里地址很重要,最好保存下来,后续会用到配置HostName(ALL)配置sudohostnamectlset-hostnamemasters......
  • 统信UOS系统开发笔记(六):提取在线安装软件后,提取其安装包,部署目标机使用离线软件包方式
    前言  前面搭建了基础环境,在使用统信UOS系统的相关行业也是不能上网的,但是可以传递压缩包,为了很好的方便相关从业人员工作,特将此种方式流程分享出来。(与国产银河麒麟不同)  本篇文章的重点就是离线安装,包括了在线安装,提取离线安装包,离线安装并完成测试验证。  本文以sshpas......
  • 56 KVM工具使用指南-安装 LibcarePlus
    56KVM工具使用指南-安装LibcarePlus56.1安装软件依赖LibcarePlus运行依赖于libunwind、elfutils和binutils,在配置了yum源的openEuler系统上,可以参考如下命令安装LibcarePlus的依赖软件。#yuminstall-ybinutilselfutilselfutils-libelf-devellibunwind-deve......
  • 在Linux环境下安装PostgreSQL
    在Linux环境下安装PostgreSQL由于实际的生产环境,PostgreSQL数据库都是部署在linux服务器上的,因此记录一下通过源码安装与命令行操作PG数据库的过程下载官方下载网址:https://www.postgresql.org/ftp/source/我这里下载的是PostgresSQL源码版本为:postgresql-13.3.tar.gz安装......
  • 搭建自己的OCR服务,第二步:PaddleOCR环境安装
    PaddleOCR环境安装,遇到了很多问题,根据系统不同问题也不同,不要盲目看别人的教程,有的教程也过时了,根据实际情况自己调整。我这边目前是使用windows10系统+CPU+python3.7搭建。熟悉OCR的人应该知道,最好用GPU,性能差距不是一点点,但是普通人没有那个条件怎么办,只能退而求其次,好在......
  • 超级详细的Vue安装与配置教程
    超级详细的Vue安装与配置教程目录一、下载和安装Vue二、创建全局安装目录和缓存日志目录三、配置环境变量1.环境变量---用户变量---选中Path---点编辑2.环境变量---系统变量---新建三、安装vue1.安装vue.js2.安装webpack模板3.安装脚手架vue-cli......
  • Nginx上的HTTPS的配置
    Ngnix上配置HTTPS不算特别复杂,下面记录一下整体过程。生成自签名的SSL证书通过下面命令生成一系列文件,最终只需要server.key和server.crt两个就可以了opensslgenrsa-des3-outserver_temp.key2048opensslreq-new-keyserver_temp.key-outserver.csr-configopenssl.......
  • docker安装minio
    一、简介MinIO是在GNUAffero通用公共许可证v3.0下发布的高性能对象存储。它是与AmazonS3云存储服务兼容的API,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等文档:http://......