您现在的位置是:首页 > 正文

服务器安装nginx

2024-04-01 03:22:50阅读 1

第二篇文章,安装nginx

服务器安装nginx

之前使用阿里云的时候,是默认安装的,这次切换腾讯云发现已经安装好,所以如果你的服务器上已经安装,则忽略。

安装必备插件

首先得判断服务器上是否安装了gcc , openssl,pcre ,pcre-devel等库。
使用命令

gcc -v  #查看服务器gcc版本
openssl version  #查看openssl的版本
rpm -qa |grep pcre  #查看系统中是否安装了pcre

如果没有安装这些插件,那么使用如下命令安装插件

#gcc是linux下的编译器
yum -y install gcc 
#pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel 
#zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
#openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔
yum install -y openssl openssl-devel

安装nginx

查看服务器上openssl的版本

使用命令

openssl version 

因为openssl的版本和nginx的版本可能又不兼容的问题,或导致后来,nginx配置ssl证书的时候,编译报错。
我的openssl的版本是

OpenSSL 1.1.1g FIPS  21 Apr 2020

google了一下,应该安装nginx-1-17-9的版本

nginx的安装位置和编译/下载位置

我的服务器上根目录下有个develop文件夹,专门用来下载,编译相关的文件,但是linux安装的位置并不是这个位置。需要注意这点。

我的linux服务器中nginx的下载,编译位置是/develop
安装位置,系统默认/usr/local/nginx
如果你看完这篇文章后,觉得不方便,可以直接在/usr/local这个目录下新建nginx文件夹,然后直接操作

切换下载目录,下载nginx安装包并解压

cd /develop
wget http://nginx.org/download/nginx-1.17.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz

你可以看到下图中我的服务器上有两个nginx,其中nginx-1.9.9这个版本和openssl不兼容,所以重新下载新的。
在这里插入图片描述

编译nginx

首先我的nginx在服务器上的位置是 /develop/nginx-1.17.9
切换到这个目录下,开始执行下面的命令,进行编译
总共三条命令,有可能会有报错,那么报错和解决方案如下

第一条命令

--prefix=/usr/local/nginx --with-http_ssl_module --with-pcre  
#运行后能看到下面第一张图和第二张图,代表这条命令执行成功
#如果报错 nginx error: the HTTP rewrite module requires the PCRE library
#那么文章最上面的插件,你没有安装,直接yum -y install pcre-devel 即可

在这里插入图片描述
在这里插入图片描述

第二条命令

make
#执行后,有可能报错
#src/core/ngx_murmurhash.c:37:11: 错误:this statement may fall through [-Werror=implicit-fallthrough=]
#错误如同下图,这个问题是将警告当成错误处理了
#解决方案
#找到nginx目录下的的objs目录。打开Makefile文件。去掉CFLAGS中的-Werror
#再重新make
# -Wall 表示打开gcc的所有警告
# -Werror,它要求gcc将所有的警告当成错误进行处理

make报错
make可能报错错误

cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_murmurhash.o \
	src/core/ngx_murmurhash.c
src/core/ngx_murmurhash.c: 在函数‘ngx_murmur_hash2’中:
src/core/ngx_murmurhash.c:37:11: 错误:this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[2] << 16;
         ~~^~~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:38:5: 附注:here
     case 2:
     ^~~~
src/core/ngx_murmurhash.c:39:11: 错误:this statement may fall through [-Werror=implicit-fallthrough=]
         h ^= data[1] << 8;
         ~~^~~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:40:5: 附注:here
     case 1:
     ^~~~
cc1:所有的警告都被当作是错误
make[1]: *** [objs/Makefile:445:objs/src/core/ngx_murmurhash.o] 错误 1
make[1]: 离开目录“/develop/nginx-1.9.9”
make: *** [Makefile:8:build] 错误 2

解决make的错误

vi Makefile   #删除下图中的配置,保存即可

在这里插入图片描述
回到nginx的目录下,重新make,又出现一个新的错误,直接找到这个报错的文件,然后注释这行代码

src/os/unix/ngx_user.c: 在函数‘ngx_libc_crypt’中:
src/os/unix/ngx_user.c:36:7: 错误:‘struct crypt_data’没有名为‘current_salt’的成员
     cd.current_salt[0] = ~salt[0];
pwd
# /develop/nginx-1.9.9/src/os/unix
vi ngx_user.c
#注释报错的这行代码,注释代码使用的是/*  */来注释
重新回到nginx目录,编译make,看到第二张图即可

在这里插入图片描述
在这里插入图片描述
第三条命令

make install 

在这里插入图片描述

添加nginx环境变量

最好将nginx配置到环境变量中,不然接下来,配置ssl证书的时候,
需要重启nginx,会报错:-bash: nginx: 未找到命令

修改/etc/profile

添加如下配置
# nginx exvironmenet
export PATH=$PATH:/usr/local/nginx/sbin

重新读取配置

source /etc/profile

主要nginx的命令如下

/usr/local/nginx/sbin/nginx   启动
/usr/local/nginx/sbin/nginx -s stop  停止
/usr/local/nginx/sbin/nginx -s reload  重新载入
/usr/local/nginx/sbin/nginx -v  查看版本
/usr/local/nginx/sbin/nginx -t  测试配置文件是否正常

修改nginx配置,主要是端口

#注意这一步,使用命令 whereis nginx,看nginx被安装到那个目录下了 
#结果是/usr/local/nginx ,和下载,编译程序的目录不是同一个目录
#找到 nginx目录下的conf文件夹下的nginx.conf文件
默认的http,不需要修改这个配置文件,只需要保证你的腾讯云服务器中的安全组,打开了相应端口,如下
443 是ssl端口,用于https协议

我在这里http的端口是81
在这里插入图片描述

启动nginx

#还在这个目录下 /usr/local/nginx/sbin,开始启动nginx
nginx

直接访问你的IP,看到像下面这个网页即可
在这里插入图片描述

网站文章

  • 音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    前言前一篇我们知道了如何配置FFmpeg开发环境,接下来,就开始简单的推流吧。说道推流前,我们要知道常用的几个直播推流协议。直播推流协议在搭建服务之前先了解下目前主流的几个直播协议:RTMP:实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 ...

    2024-04-01 03:22:07
  • 引用数据类型_Java基础数据类型和引用类型的区别

    引用数据类型_Java基础数据类型和引用类型的区别

    一、数据类型Java中的数据类型分为两大类,基本数据类型和引用数据类型。1、基本数据类型基本数据类型只有8种,可按照如下分类 ①整数类型:long、int、short、byte ②浮点类型:float、double ③字符类型:char ④布尔类型:booleanNo.数据类型大小/位可表示数据范围默认值1byte(字节型)8-128~12702short(短整型)16-32768~32...

    2024-04-01 03:21:59
  • MySQL查询优化

    MySQL查询优化

    表数据皆为随机生成,身份证号、手机号、姓名、微信号等若有相同,纯属巧合。生成的数据仅用于测试说明问题,不必理会合理性。2.1.1、【用户表】t_user数据量:150w。

    2024-04-01 03:21:52
  • MySQL JDBC编程

    MySQL JDBC编程

    简单介绍了JDBC编程及对功能进行了封装。

    2024-04-01 03:21:11
  • 系统架构与高可用

    系统架构与高可用

    前言 简单聊聊博主的背景吧,博主是Java开发,刚毕业就来到这个刚创立的公司(当然是有一点背景的),公司开发人数从80来人到现在的430人,期间系统进行多次调整。 而我除了写代码业务实现外,刚好有机会接触了一些类似架构、运维、以及新系统初期设计讨论的工作,这大大满足了我的好奇心,这是幸运的。 我大部分的知识是从工作中学习到的,开始知识点是零散,喜欢做笔记,一旦遇到我们没有听过的技术名词或者业...

    2024-04-01 03:21:04
  • SpringCloud负载均衡原理

    SpringCloud负载均衡原理org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer private Respo...

    2024-04-01 03:20:15
  • 安装Anaconda的注意事项

    安装Anaconda的注意事项

    Anaconda是Python的集成安装包,把Python中常用的库都集成了,对于初学者来说还是很友好的,不过在安装过程中也有一些陷阱,下面把我自己安装中碰到的问题记录一下: 对系统的要求 WIN10...

    2024-04-01 03:20:08
  • 如何训练一个词向量

    如何训练一个词向量

    现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于 word2vec 的博文 wor...

    2024-04-01 03:20:01
  • Google浏览器(Chrome)快捷键大全

    Chrome窗口和标签页快捷键:Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shift+N 在隐身模式下打开新窗口 Ctrl+O,然后选择文件 在谷歌浏览器中打开计算机上的文件 按住 Ctrl 键,然后点击链接 从后台在新标签页中打开链接,但您仍停留在当前标签页中 按住 Ctrl+Shift 键,然后点击链接 在新标签页中打开链接,同时切换到新打开的标签

    2024-04-01 03:19:54
  • Material-UI 5 即将推出

    Material-UI 5 即将推出

    编者导语你好,我是小弋。‍‍‍‍Material-UI 4 发布已经快两年了,终于,Material-UI 5 来了。我们今天来看看,到底推出哪些值得我们关注的信息。从官网我们可以看到此次...

    2024-04-01 03:19:08