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

Nginx安装与配置

1.下载安装包

官网下载地址:nginx: download

        可以先将安装包下载到本地再传到服务器,或者直接用wget命令将安装包下载到服务器,这里我们直接将安装包下载到服务器上。未安装wget命令的需要先安装wget,yum install -y wget

[root@reader app]# cd /usr/soft/
[root@reader soft]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz
--2023-11-03 22:35:48--  https://nginx.org/download/nginx-1.24.0.tar.gz
Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5704::6, ...
Connecting to nginx.org (nginx.org)|3.125.197.172|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1112471 (1.1M) [application/octet-stream]
Saving to: ‘nginx-1.24.0.tar.gz’nginx-1.24.0.tar.gz                            100%[===================================================================================================>]   1.06M  1.45MB/s    in 0.7s    2023-11-03 22:35:50 (1.45 MB/s) - ‘nginx-1.24.0.tar.gz’ saved [1112471/1112471][root@reader soft]# 

解压安装包

[root@reader soft]# tar -xvf nginx-1.24.0.tar.gz 

2.安装C语言编译环境及相关依赖

yum -y install gcc-c++	zlib zlib-devel	openssl openssl-devel pcre pcre-devel

3.执行./configure配置编译环境

        如果我们要指定nginx的安装路径(默认路径:/usr/local/nginx)或是需要添加相关nginx模块,在./configure 命令后需要添加相关参数,可以同时带多个参数。

        可以使用 ./configure --help 命令查看相关参数/指令:

[root@reader nginx-1.24.0]# ./configure --help--help                             print this message--prefix=PATH                      set installation prefix--sbin-path=PATH                   set nginx binary pathname--modules-path=PATH                set modules path--conf-path=PATH                   set nginx.conf pathname--error-log-path=PATH              set error log pathname--pid-path=PATH                    set nginx.pid pathname--lock-path=PATH                   set nginx.lock pathname--user=USER                        set non-privileged user forworker processes--group=GROUP                      set non-privileged group forworker processes--build=NAME                       set build name--builddir=DIR                     set build directory
.....

        我这里需要添加 --with-threads --with-http_ssl_module --with-http_gzip_static_module,大家根据个人需要进行添加,如果首次安装未添加,后续还是可以重新编译的(见另一篇博文)。

[root@reader nginx-1.24.0]# ./configure --prefix=/usr/local/nginx  --with-threads  --with-http_ssl_module  --with-http_gzip_static_module

4.编译安装nginx

make & make install

5.将nginx命令添加到全局命令(按需设置)

[root@reader etc]# vim /etc/profile# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc·····
export PATH=$PATH:${JAVA_PATH}export MYSQL_HOME="/usr/local/mysql"
export PATH="${MYSQL_HOME}/bin:${PATH}"export PATH=$PATH:/usr/local/nginx/sbin

添加完成后执行如下命令使配置生效

source /etc/profile

6.启动nginx

root@reader etc]# nginx
[root@reader etc]# ps -ef | grep nginx
root      7156     1  0 23:45 ?        00:00:00 nginx: master process nginx
nobody    7157  7156  0 23:45 ?        00:00:00 nginx: worker process
root      7161  4040  0 23:48 pts/0    00:00:00 grep --color=auto nginx

        如果未添加全局命令,就进入安装目录的sbin目录下执行./nginx

[root@reader sbin]# cd /usr/local/nginx/sbin/
[root@reader sbin]# ./nginx 
[root@reader sbin]# ps -ef | grep nginx
root      7175     1  0 Nov03 ?        00:00:00 nginx: master process ./nginx
nobody    7176  7175  0 Nov03 ?        00:00:00 nginx: worker process
root      7178  4040  0 00:00 pts/0    00:00:00 grep --color=auto nginx
[root@reader sbin]#

7.访问nginx

浏览器输入IP访问nginx,如果现实下图,说明配置并启动成功。

8.nginx 常用命令

[root@reader sbin]# nginx -h
nginx version: nginx/1.24.0
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]Options:-?,-h         : this help-v            : show version and exit    # 查看版本号-V            : show version and configure options then exit    # 查看版本及配置-t            : test configuration and exit              # 检查配置文件是否有问题-T            : test configuration, dump it and exit     # 检查配置文件是否有问题并转储-q            : suppress non-error messages during configuration testing-s signal     : send signal to a master process: stop, quit, reopen, reload-p prefix     : set prefix path (default: /usr/local/nginx/)   #设置前缀路径(默认是:/usr/share/nginx/)-e filename   : set error log file (default: logs/error.log)   #设置/指定error_log输出位置,默认位置安装目录下的 logs/error.log-c filename   : set configuration file (default: conf/nginx.conf)  #设置/指定配置文件配置文件,默认配置文件在安装目录下的 conf/nginx.conf-g directives : set global directives out of configuration file  #在配置文件之外设置全局指令[root@reader sbin]# -s signal 解释nginx -s reload  # 重新加载配置文件,关闭旧进程,启用新进程
nginx -s reopen	 # 重新打开日志文件
nginx -s stop    # 强制停止nginx
nginx -s quit    # 等待所有请求都处理完后再关闭nginx

        注意:单独说明 nginx -s reopen命令,执行该命令时nginx会先检查原日志文件(error.log 或 access.log)是否存在,如果存在,日志还是正常写入原文件中。如果原日志文件不存在或名称已修改,这时nginx才会重新生成一个空日志文件并将日志写入。亲测结果。

[root@reader sbin]# cd ../logs/
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  378 Nov  4 00:40 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# nginx -s reopen & ll
[1] 7320
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  378 Nov  4 00:40 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# nginx -s reopen & ll
[2] 7322
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  441 Nov  4 00:41 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[1]   Done                    nginx -s reopen
[root@reader logs]# nginx -s reopen & ll
[3] 7324
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  504 Nov  4 00:42 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[2]   Done                    nginx -s reopen
[root@reader logs]# mv error.log error_1.log & ll
[4] 7330
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[3]   Done                    nginx -s reopen
[4]+  Done                    mv -i error.log error_1.log
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# nginx -s reopen & ll
[1] 7334
total 12
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# ll
total 16
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root   63 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[1]+  Done                    nginx -s reopen
[root@reader logs]# 
[root@reader logs]# ll
total 16
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root   63 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# ll
total 16
-rw-r--r-- 1 nobody root 1890 Nov  4 00:37 access.log
-rw-r--r-- 1 nobody root  567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root   63 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root    5 Nov  3 23:59 nginx.pid
[root@reader logs]# 
[root@reader logs]# 
[root@reader logs]# rm -rf access.log 
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root 567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root  63 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root   5 Nov  3 23:59 nginx.pid
[root@reader logs]# nginx -s reopen
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root   0 Nov  4 00:43 access.log
-rw-r--r-- 1 nobody root 567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root 126 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root   5 Nov  3 23:59 nginx.pid
[root@reader logs]# 
[root@reader logs]# mv access.log access_1.log
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root   0 Nov  4 00:43 access_1.log
-rw-r--r-- 1 nobody root 567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root 126 Nov  4 00:43 error.log
-rw-r--r-- 1 root   root   5 Nov  3 23:59 nginx.pid
[root@reader logs]# nginx -s reopen
[root@reader logs]# 
[root@reader logs]# ll
total 12
-rw-r--r-- 1 nobody root   0 Nov  4 00:43 access_1.log
-rw-r--r-- 1 nobody root   0 Nov  4 00:44 access.log
-rw-r--r-- 1 nobody root 567 Nov  4 00:42 error_1.log
-rw-r--r-- 1 nobody root 189 Nov  4 00:44 error.log
-rw-r--r-- 1 root   root   5 Nov  3 23:59 nginx.pid
[root@reader logs]# 

9.设置nginx开机自启动

        源码解压编译安装的需要手动在/lib/systemd/system目录下创建nginx.service文件。

        nginx.service文件内容如下

[Unit]
Description=nginx service
After=network.target [Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true [Install] 
WantedBy=multi-user.target
上述文件各行解释说明
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

        创建完成后,执行如下命令,设置开机启动。

systemctl enable nginx.service

        查看开机启动项,检查是否设置成功。

systemctl list-unit-files | grep nginx
[root@reader logs]# systemctl enable nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@reader logs]# 
[root@reader logs]# 
[root@reader logs]# 
[root@reader logs]# systemctl list-unit-files | grep nginx
nginx.service                               enabled  
[root@reader logs]# 

其它命令

启动nginx服务 :  systemctl start nginx.service
停止nginx服务 :  systemctl stop nginx.service
设置开机自启动 :  systemctl enable nginx.service
停止开机自启动 :  systemctl disable nginx.service
查看服务当前状态: systemctl status nginx.service
重新启动服务   :  systemctl restart nginx.service
查看所有已启动服务:systemctl list-units --type=service

相关文章:

Nginx安装与配置

1.下载安装包 官网下载地址:nginx: download 可以先将安装包下载到本地再传到服务器,或者直接用wget命令将安装包下载到服务器,这里我们直接将安装包下载到服务器上。未安装wget命令的需要先安装wget,yum install -y wget [root…...

linux笔记总结-基本命令

参考: 1.Linux 和Windows比 比较 (了解) 1. 记住一句经典的话:在 Linux 世界里,一切皆文件 2. Linux目录结构 /lib • 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几 乎所有…...

[PHP]禅道项目管理软件ZenTaoPMS源码包 v16.4

禅道项目管理软件ZenTaoPMS一键安装包是一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。注重实效的管理思想,合理的软件…...

Required String parameter ‘name‘ is not present

[org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter name is not present] 服务端有参数name,客户端没有传上来...

路由器基础(五): OSPF原理与配置

开放式最短路径优先 (Open Shortest Path First,OSPF) 是一个内部网关协议 (Interior Gateway Protocol,IGP),用于在单一自治系统(Autonomous System,AS) 内决策路由。OSPF 适合小型、中型、较大规模网络。OSPF 采用Dijkstra的最短路径优先算法 (Shortest Pat…...

Leetcode1128. 等价多米诺骨牌对的数量

Every day a Leetcode 题目来源&#xff1a;1128. 等价多米诺骨牌对的数量 解法1&#xff1a;暴力 代码&#xff1a; class Solution { public:int numEquivDominoPairs(vector<vector<int>> &dominoes){int n dominoes.size(), count 0;for (int i 0;…...

Dev-C调试的基本方法2-2

3.3 跳出函数 在图6所示的状态下&#xff0c;点击单步调试&#xff08;F7&#xff09;会继续调试下一行&#xff0c;而如果想结束在函数中的调试&#xff0c;则点击图4③所示的跳出函数&#xff0c;或CtrlF8按键跳出f()函数&#xff0c;程序将会停在图5所示的第11行处。 3.4 …...

企业之间的竞争,ISO三体系认证至关重要!

ISO三体系认证是指ISO 9001质量管理体系认证、ISO 14001环境管理体系认证、ISO 45001(OHSAS18001)职业健康安全管理体系认证。企业&#xff08;组织&#xff09;自愿申请、通过ISO三体系认证&#xff0c;并贯彻落实&#xff0c;确实能获益多多。 ISO 9001质量管理体系 我们经…...

node教程(四)Mongodb+mongoose

文章目录 一、mongodb1.简介1.1Mongodb是什么&#xff1f;1.2数据库是什么&#xff1f;1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…...

作为一个初学者,该如何入门大模型?

在生成式 AI 盛行的当下&#xff0c;你是否被这种技术所折服&#xff0c;例如输入一段简简单单的文字&#xff0c;转眼之间&#xff0c;一幅精美的图片&#xff0c;又或者是文笔流畅的文字就展现在你的面前。 相信很多人有这种想法&#xff0c;认为生成式 AI 深不可测&#xf…...

编译支持GPU的opencv,并供python的import cv2调用

下载opencv和opencv_contrib&#xff0c;cmake过程中要下载的一些包可以手动下载配置&#xff0c;如果网络较好&#xff0c;也可以等待自动下载。主要记录的是cmake命令&#xff1a; cmake -D CMAKE_BUILD_TYPERELEASE \-D BUILD_opencv_python3YES \-D CMAKE_INSTALL_PREFIX/…...

Bug记录

那些年写过的很小的bug&#xff1a; Bug1&#xff1a; if args.model IRNN or irnn:# some code这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串&#xff0c;因此它在布尔上下文中被视为 True。所以条件总是为真&#xff0c;而不会考虑 args.model 的…...

web3 React dapp中编写balance组件从redux取出并展示用户资产

好啊 上文WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量中 我们拿到了用户的一个本身 和 交易所token数量 并放进了redux中做了一个全局管理 然后 我们继续 先 起来ganache的一个模拟环境 ganache -d然后 我们启动自己的项目 顺手发…...

BIOS开发笔记 - DDR中的时序参数

通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。 一、外部信号 图1 DDR4的外部线路图 DDR是一种高带宽的传输接口,其外部信号较多,图1是一个DDR4的外部线路图,以下对图中跟通…...

语义分割 - 简介

语义分割是计算机视觉领域的一项重要任务&#xff0c;旨在将图像中的每个像素标记为对应的语义类别。与传统的图像分类任务不同&#xff0c;语义分割不仅要识别整个图像的类别&#xff0c;还需要对图像中的每个像素进行分类&#xff0c;从而实现对图像的像素级别理解。 语义分…...

ch0_OSI 七层网络协议介绍

目录 概述 1、三网融合的概念 三网&#xff1a;电信网络、有线电视网络、计算机网络 概念&#xff1a;把上述三种网络融合成一种网络 2、计算机网络的定义、分类 定义&#xff1a;计算机网络是将地理位置不同的独立计算机系统&#xff0c;通过传输介质链接起来&#xff0c…...

超声波俱乐部分享:百度世界大会点燃AI创业者新希望

10月22日&#xff0c;2023年第十三期超声波俱乐部内部分享会在北京望京举行。本期的主题是&#xff1a;百度世界大会点燃AI创业者新希望。 到场的嘉宾有&#xff1a;超声波创始人杨子超&#xff0c;超声波联合创始人、和牛商业创始人刘思雨&#xff0c;中国国际经济交流中心研…...

【项目管理】项目计划中常见影响进度的风险汇总

哈喽&#xff0c;大家好&#xff0c;我是雷工。 在项目实施过程中针对项目进度的计划常常会有各种各样的的风险&#xff0c;相比出了问题去救火与填坑&#xff0c;能够提前预知风险&#xff0c;并提前调整计划&#xff0c;更能有利于项目的如期交付。 以下为项目计划中影响进度…...

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序&#xff0c;用于下载图片。代码如下&#xff1a; import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…...

Java 为什么不推荐在 while 循环中使用 sleep() 我悟了

文章目录 前言原因是否正确方案是否合理定时轮询场景事件机制等待和唤醒 个人简介 前言 最近逛 CSDN 看到一篇文章&#xff0c;文章大意是说为什么在循环中不推荐使用 sleep 操作&#xff0c;原因在于线程挂起和唤醒会有很大的性能消耗&#xff0c;并推荐使用 Timer 及 Schedu…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...