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

news2025/6/9 10:39:55

本文在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 0
 
nginx=""/opt/nginx/sbin/nginx""
prog=$(basename $nginx)
 
NGINX_CONF_FILE=""/opt/nginx/conf/nginx.conf""
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep ""configure arguments:"" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d ""="" -f 2`
           if [ ! -d ""$value"" ]; then
               # echo ""creating"" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $""Starting $prog: ""
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $""Stopping $prog: ""
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $""Reloading $prog: ""
    killproc $nginx -HUP
    RETVAL=$?
    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"" in
    start)
        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的欢迎页面。

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

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

相关文章

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作 中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明 http://www.yuanle.net.cn/anli/30/4138.html

【附教程】2024,人工智能+AI绘画,看这里就够了~14款主流图像生成软件工具总有一个适合你

AI绘画技术通过深度学习和处理海量图像数据,能够迅速将文字描述转化为富有创意和艺术性的画作。这一技术不仅极大地提升了艺术家的创作效率和作品质量,还为他们提供了全新的灵感来源和创作方式,推动了艺术领域的创新与发展。 同时&#xff0…

Java高频面试之基础篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 解释下什么是面向对象?面向对象和面向过程的区别? 面向对象的三大特性?分别解释下? 封装 继承 多态 JDK、JRE、JVM 三者之间的关系? JVM…

AI代码提示工具

1. 介绍 之前一直用国外的Github copilar代码指示工具,写代码效率提高了30%-50%,但是这个工具需要付费而且有时候出现连接问题,后来发现国内也有一款相同的代码只能提示工具,我们只需要在Vscode或者JetBrains里面安装这个插件&am…

Python 创建PPT

本篇为如何使用Python来创建ppt文件。 创建PPT 安装必要的库 命令如下: pip install python-pptx 安装过程: 创建ppt文件 在当前目录下创建一个test的ppt文件。其中包含两页,分别使用了不同的布局。 第一页设置了标题和内容。第二页只设…

flink重温笔记(十三): flink 高级特性和新特性(2)——ProcessFunction API 和 双流 join

Flink学习笔记 前言:今天是学习 flink 的第 13 天啦!学习了 flink 高级特性和新特性之ProcessFunction API 和 双流 join,主要是解决大数据领域数据从数据增量聚合的问题,以及快速变化中的流数据拉宽问题,即变化中多个…

使用51单片机控制lcd1602字体显示

部分效果图: 准备工作: 51单片机(BST)1602显示屏 基础知识: 注:X表示可以是0,也可以是1; DL 1, N 1, F 0, 代码一: 要求显示字母…

【力扣白嫖日记】1164.指定日期的产品价格

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1164.指定日期的铲平价格 表:Products 列名类型product_idintnew_priceintchange_datedate (pr…

如何进入Windows 11的安全模式?这里提供详细步骤

序言 如果你在启动Windows 11 PC时遇到问题,则重新启动到安全模式可能会有所帮助,该模式会暂时禁用驱动程序和功能,以使你的PC更稳定。下面是如何做到这一点。 在Windows 7和更早版本中,通常可以在打开电脑后按功能键(如F8)启动安全模式。Microsoft从Windows 8中删除了…

CSS3基础2

CSS3 用户界面 resize 示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

基于Spring Boot+Vue的论坛网站

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

回溯算法09-子集II(Java/子集问题的去重方法)

9.子集II 题目描述 给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 排列。 示例 1&#xff1a; 输入&#xf…

PyQt5实现远程更新exe可执行文件

PyQt5实现远程下载更新exe可执行文件 1、实现流程 1、获取远程http地址 2、获取需要更新的exe文件 3、点击更新 4、把exe强关闭 5、下载文件 6、更新2、效果图 3、示例代码 conf.ini配置文件&#xff1a; {"http_address_edit_value": "http://xxx.com/xxx/…

【敬伟ps教程】文字处理工具

文章目录 文字工具使用方式文字图层文字工具选项字符面板段落面板文字工具使用方式 文字工具(快捷键T),包含横排和直排两种类型 创建文本两种类型:点式文本、段落文本 创建文字方式 1、在画面上单击,出现文字光标,可输入文字,然后需要在工具栏中点击“√”或者 Ctrl+…

【二十九】springboot高并发示例

本章演示在springboot项目中的高并发demo&#xff0c;演示导致的问题&#xff0c;以及单机部署下的解决方案和集群部署下的解决方式以及分布式下的解决方案。 目录 一、单机模式下高并发问题 二、集群模式下高并发问题 一、单机模式下高并发问题 前提&#xff1a;先写一个减扣…

枚举赋值及强制转换问题

对枚举进行字符赋值&#xff0c;需要进行强制类型转换之后&#xff0c;才能得到想要的值&#xff0c;如下 typedef enum data {DIRECTION_X X,DIRECTION_Y Y,DIRECTION_Z Z,DIRECTION_T T }NumData;int main() {NumData numdata DIRECTION_Y;count <<"num is&…

Qt开发QHostInfo主机地址查询组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QHostInfo组件实现对主机地址查询功能…

数据库-第十一章 并发控制【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/…

机器学习第29周周报 Beyond Dropout

文章目录 week29 Beyond Dropout摘要Abstract一、泛化理论二、文献阅读1. 题目2. abstract3. 网络架构3.1 特征图失真3.2 失真优化 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 全连接层实验4.3.2 卷积网络上的实验 4.4 结论 小结参考文献 week29 Beyond Dropout …

visualization_msgs::Marker 的pose设置,map坐标系的3d box显示问题

3D框显示 3D框显示可以使用visualization_msgs::Marker::LINE_LIST或者LINE_STRIP&#xff0c;前者使用方法需要指明线的两个端点&#xff0c;后者自动连接相邻两个点。 姿态问题 网上看了一些&#xff0c;没有涉及到朝向设置&#xff0c;Pose.orientation默认构造为4个0 至…