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

安装nginx:手动安装和yum安装

本文在centos7.9下分别尝试了yum安装和手动安装,记录一下试验过程。为后来者少踩点坑。

下载

下载地址:链接 。建议下载稳定版本,也就是Stable Version,这里下载的是 nginx-1.24.0

# 我下载在如下文件夹
mkdir/opt/apps
cd /opt/apps
# 用wget下载
wget https://nginx.org/download/nginx-1.24.0.tar.gz

确认依赖库

需要以下依赖库

  1. gcc

    用以下命令确认是否已安装gcc:

    gcc –-version
    

    如果没有安装,用以下命令安装:

    yum install gcc
    
  2. PCRE

    确认是否安装:

    rpm -qa pcre
    

    如果没有安装,请用如下指令安装:

    yum install -y pcre pcre-devel
    
  3. Zlib

    确认:

    rpm -qa zlib
    

    安装:

    yum install -y zlib zlib-devel
    
  4. OpenSSL

    确认:

    openssl version
    

    如果是1.1或以上就可以,如果不是则需要升级

    SSL升级如下:

    # 1.安装对应的依赖库
    sudo yum install -y zlib yum install zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++# 2. 下载openssl安装文件
    mkdir /tmp/sslbak
    cd /tmp/sslbak
    wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz   --no-check-certificate# 3. 解压安装openssl,并进入openssl的目录
    tar -zxvf openssl-1.1.1k.tar.gz
    cd openssl-1.1.1k# 设置输出为中文,可忽略
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8# 编译和安装
    ./config --prefix=/usr/local/openssl shared zlib 
    sudo make && make install# 4. 备份当前openssl
    mv /usr/bin/openssl /usr/bin/openssl.bak
    mv /usr/include/openssl /usr/include/openssl.bak 
    # 5. 配置使用新版本
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    # 6. 更新动态链接库数据并重新加载
    echo /usr/local/openssl/lib >> /etc/ld.so.conf
    ldconfig -v
    # 7. 查看是否升级成功
    openssl version
    # 8. 如果缺少libssl.s0.1.1
    ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    
  5. 检查nginx是否已安装

    find / -name "*nginx*"
    

继续安装nginx

  1. 首先,我们进入到下载的nginx文件的目录,执行解压命令,然后进入到该文件夹

    cd /opt/apps
    tar -zxvf nginx-1.24.0.tar.gz
    cd nginx-1.24.0/
  2. 进行安装配置,可以参考如下语句

    注意,如果上面升级了openssl,这里需要修改nginx对openssl的默认设置,否则make时会报错

    # 进入如下目录
    cd /opt/apps/nginx-1.24.0/auto/lib/openssl
    vim conf
    

    去掉下图中的/.openssl

    在这里插入图片描述

    回到nginx解压目录,运行如下命令,各参数意义请参考链接

    ./configure --prefix=/opt/nginx  --with-openssl=/usr/local/openssl --with-http_ssl_module --with-http_gzip_static_module
    

    注意,此处的—prefix安装路径不能和下载路径是一个路径。

    可选设置,可以通过如下参数设置log位置

    --error-log-path=/var/log/nginx/nginx.log --pid-path=/var/log/nginx/pid
    

    如果不设置,log默认路径在安装路径下的logs文件夹下

    在这里插入图片描述

  3. 编译和安装

    make && make install
    

启动服务

进入安装目录

/opt/nginx/sbin

启动nginx

# 添加一个nginx用户,因为默认用户是nobody,这是为了安全性
useradd nginx -s /sbin/nologin -M
./nginx

开放端口

防火墙需要开启80端口

**# 开启80端口
firewall-cmd --add-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload**

加入系统菜单

nginx目录无法直接使用,每次还要到/opt/nginx的 sbin 目录,来启动ngin。我们通过如下方式加入系统菜单,这样就可以直接使用nginx命令了:

# 修改profile文件
vim /etc/profile# 在最后加上如下语句,注意路径,然后wq保存退出
export PATH=$PATH:/opt/nginx/sbin# 让profile生效
source /etc/pfofile

测试访问

输入ip进行访问测试,出现Nginx的欢迎界面,说明安装成功。

在这里插入图片描述

设置开机启动

首先需要创建nginx服务


vim /etc/init.d/nginx# 将下面脚本复制进去保存,注意路径要和安装路径对上
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ ""$NETWORKING"" = ""no"" ] && exit 0nginx=""/opt/nginx/sbin/nginx""
prog=$(basename $nginx)NGINX_CONF_FILE=""/opt/nginx/conf/nginx.conf""[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() {# make required directoriesuser=`nginx -V 2>&1 | grep ""configure arguments:"" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`options=`$nginx -V 2>&1 | grep 'configure arguments:'`for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d ""="" -f 2`if [ ! -d ""$value"" ]; then# echo ""creating"" $valuemkdir -p $value && chown -R $user $valuefifidone
}start() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6make_dirsecho -n $""Starting $prog: ""daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval
}stop() {echo -n $""Stopping $prog: ""killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval
}restart() {configtest || return $?stopsleep 1start
}reload() {configtest || return $?echo -n $""Reloading $prog: ""killproc $nginx -HUPRETVAL=$?echo
}force_reload() {restart
}configtest() {$nginx -t -c $NGINX_CONF_FILE
}rh_status() {status $prog
}rh_status_q() {rh_status >/dev/null 2>&1
}case ""$1"" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $""Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}""exit 2
esac

保存后,进入该目录,执行以下操作

cd /etc/init.d/
# 添加执行权限
chmod +x nginx
# 添加到系统服务
chkconfig --add nginx
# 查看是否添加成功
chkconfig --list nginx
# 添加到开机启动
chkconfig nginx on
# 再次查看
chkconfig --list nginx
# 以下结果说明添加成功
# 0:off 1:off 2:on 3:on 4:on 5:on 6:off

常用命令

# 启动
nginx
# 关闭
nginx -s stop
# 刷新配置
nginx -s reload
# 配置测试
nginx -t

yum安装Nginx

yum安装就比较简单了

yum install nginx

在centos7.9中,yum安装默认的版本是Nginx1.20

yum安装文件位置

yum安装的各常用文件位置如下:

  • nginx的配置文件在/etc/nginx/nginx.conf
  • 自定义的配置文件放在/etc/nginx/conf.d
  • 项目文件存放在/usr/share/nginx/html/
  • 日志文件存放在/var/log/nginx/

另外,yum安装的版本,默认首页是centos首页,看不到那个Nginx的欢迎页面。

相关文章:

安装nginx:手动安装和yum安装

本文在centos7.9下分别尝试了yum安装和手动安装,记录一下试验过程。为后来者少踩点坑。 下载 下载地址:链接 。建议下载稳定版本,也就是Stable Version,这里下载的是 nginx-1.24.0 # 我下载在如下文件夹 mkdir/opt/apps cd /op…...

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】(底层operator【】函数) ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…...

MatplotlibPython 1 3.7

放大数据,如果想仔细看某一行的数据的时候 可以调不同的颜色,图片的长宽高,以及线的种类 plt.figure 这个命令下的所有东西都在这个figure里面 plt.xlim 改变坐标轴的范围 plt.xlabel 改变坐标轴的总名称 plt.xticks 换单位 plt.yt…...

深入理解 Dubbo:构建分布式服务治理体系

目录 1. 介绍 2. Dubbo 的核心概念 2.1 服务提供者(Provider)与服务消费者(Consumer) 2.2 注册中心(Registry) 2.3 监控中心(Monitor) 3. Dubbo 的功能特性 3.1 远程调用&…...

唤起原生IOS和安卓Android app的方法

大家好我是咕噜美乐蒂,很高兴又和大家见面了! 要唤起原生 iOS 或 Android 应用程序,你可以使用以下方法: 唤起原生 iOS 应用程序 在 iOS 上,你可以使用自定义 URL 方案或 Universal Links 来唤起原生应用程序。以下…...

RabbitMQ的web控制端介绍

2.1 web管理界面介绍 connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况channels:通道,建立连接后,会形成通道,消息的投递、获取…...

GitHub登不上:修改hosts文件来解决(GitHub520,window)

参考链接:GitHub520: 本项目无需安装任何程序,通过修改本地 hosts 文件,试图解决: GitHub 访问速度慢的问题 GitHub 项目中的图片显示不出的问题 花 5 分钟时间,让你"爱"上 GitHub。 (gitee.com) GitHub网站…...

01-DevOps代码上线-git入门及gitlab远程仓库

一、准备学习环境 10.0.0.71-gitlab 2c2g-20GB 10.0.0.72-jenkins 2c2g-20GB 10.0.0.73-sonarqube 1c1g-20GB 10.0.0.74-nexus 1c1g-20GB 10.0.0.75-dm 1c1g-20GB (模拟写代码服务器) 在centos系统中&…...

EdgeX Foundry 安全模式安装部署

文章目录 一、安装准备1.官方文档2. 克隆服务器3.安装 Docker4.安装 docker-compose 二、安装部署1.docker-comepse2.启动 EdgeX Foundry3.访问 UI3.1. consul3.2. EdgeX Console EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs…...

网络安全-appcms-master

一、环境 gethub上面自己找appcms-master 二、分析一下源码以及闯关思路 首先是有一个函数循环以及函数过滤,我们的post会将我们所传的所有val值去进行一个循环,之后通过htmlspecialchars这个函数进行过滤和转换所以val值不能通过单双引号闭合注入的方…...

ThreadLocal 与 synchronized 区别

我的理解 目的都是为了一个大前提:操作内容的线程安全。 任务不同:synchronized 解决的是多线程下线程操作权限的问题,以及原子性的保证。通过对锁的竞争,达到对资源的访问有序。 ThreadLocal是解决的事多线程下资源的隔离问题,即…...

灵魂指针,教给(二)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组…...

线程安全--浅谈Ad-hoc与加锁的区别

浅谈Ad-hoc 与加锁 两者要解决的都是对对象的语义混乱操作,即有个count进行累加操作。 我的理解/文心一言的反馈如下: 加锁是保证我们对同一个count在多线程下的访问有序,即“读写-修改-写入”具有原子性。 而Ad-hoc机制就是通过程序员自己定义一个私有…...

数据治理实战——翼支付金融板块业务数仓建设和数据治理之路

目录 一、数据治理背景 二、数据治理建设内容 2.1 组织协同 2.2 平台建设 2.3 数据应用治理 2.4 数据规范 2.5 数据安全 三、企业级数仓建设 3.1 调研阶段 2.2 平台护航 2.3 数仓分层 2.4 维度建模 2.4.1 维度建模四步曲 2.4.2 命名规范 2.4.3 资产沉淀 2.4.4 …...

[Buuctf] [MRCTF2020]Transform

1.查壳 64位exe文件,没有壳 2.用64位IDA打开 找到主函数,F5查看伪代码 从后往前看,有一个判断语句,是两个数组进行比较的,我们双击byte_40F0E0查看里面的内容 所以能够推出byte_414040的内容,byte_4140…...

【C++】C++模板基础知识篇

个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 文章目录 1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化…...

golang 注释插件

Goanno插件 自动生成golang注释,该插件为 Intellij/Goland 中的 golang 提供自动生成注释 如何使用? control command / (for windows: control alt /)(生成注释)Right click -> Generate -> Goanno(生成注释&#x…...

Unity插件之天气系统UniStorm

首先呢,它是一款强大的动态昼夜天气系统,能够以较快的帧速率创建AAA级动态生成的天气、照明和天空,并且具有300多个可定制的组件,允许用户创建任何可以想象的环境。 第一步:他需要两个物体Camera摄像机、Player播放器…...

Java使用xlsx-streamer和EasyExcel解决读取超大excel文件数据处理方法

前言 最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50MB大小或数五十万行的级别的…...

智能驾驶规划控制理论学习04-基于车辆运动学的规划方法

目录 一、线性二自由度汽车模型(自行车模型) 1、二自由度模型概述 2、不同参考点下的状态空间方程 3、前向仿真 二、运动基元生成方法 1、杜宾斯曲线(Dubins Curve) 2、Reeds Shepp Curve 三、多项式曲线(Poly…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...