linux下nginx的安装及配置

雨后的小木屋 2024-08-18 17:37:01 阅读 65

Linux下的nginx的安装及使用

一、了解nginx和linux环境1.1、Nginx1.2、linux用的centos1.3、连接linux的工具Xshell和Xftp,个人版

二、下载nginx2.1、手动下载安装2.2、联网直接安装(推荐)

三、开始安装3.1、首先安装相应的依赖3.2、开始安装

四、启动Nginx五、配置代理5.1、配置代理需要知道的前提5.2、配置代理

六、遇到的问题6.1、在执行安装nginx时,执行脚本时出现没有C编译不了???6.2、防火墙问题导致访问localhost:80无法访问成功

一、了解nginx和linux环境

1.1、Nginx

Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。Nginx是由伊戈尔·赛索耶夫为解决C10K问题而设计的,即同时处理大量客户端连接的问题。它特别注重高并发、高性能和低内存使用。

Nginx的主要特点包括:

高并发连接处理:Nginx使用异步事件驱动的方法来处理请求,这使得它在处理大量并发连接时非常高效。反向代理与负载均衡:Nginx可以作为反向代理服务器使用,帮助在多个后端服务器之间分配客户端请求,从而提高网站的可用性和性能。静态内容和索引文件的高效服务:Nginx非常擅长提供静态内容,它可以直接从硬盘读取静态文件并快速响应客户端请求。灵活的配置语言:Nginx的配置文件结构清晰,语法简单,易于理解和修改。低资源消耗:Nginx在保持高性能的同时,还能保持非常低的内存和CPU消耗。热部署:支持无缝重启,可以在不中断客户端连接的情况下更新配置或升级软件。

Nginx广泛应用于各种网站和应用中,特别是那些需要处理大量并发请求的场景,如大型门户网站、电商平台和云服务等。它的稳定性和高效性使其成为许多知名公司和网站的首选。

1.2、linux用的centos

1.3、连接linux的工具Xshell和Xftp,个人版

二、下载nginx

2.1、手动下载安装

官网:下载链接

在这里插入图片描述

下载后,手动上传到linux的自定义目录下(可以使用XFTP,个人免费版,如需链接,直接留言)

2.2、联网直接安装(推荐)

需要直接将压缩包放进/usr/local文件中,运行下载命令时需要提前进到该目录

<code>#下载nginx安装包

wget -c http://nginx.org/download/nginx-1.24.0.tar.gz

注意:如果没有wget命令,需要先安装:(centos版本命令:)yum install -y wget

在这里插入图片描述

在这里插入图片描述

三、开始安装

3.1、首先安装相应的依赖

我是直接在线安装,centos使用yum命令安装

<code>#安装nginx所需要的依赖包

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

安装成功!

在这里插入图片描述

另一篇很火的博客中提供了离线版(爱吃面条的猿)

在这里插入图片描述

3.2、开始安装

找到nginx安装包,在/usr/local/下

解压

<code>#解压安装包

tar -zxvf nginx-1.24.0.tar.gz

在这里插入图片描述

进入解压后的nginx-1.24.0

<code>cd ./nginx-1.24.0

在这里插入图片描述

执行脚本

···java

#执行配置脚本 --prefix是指定安装目录

./configure --prefix=/usr/local/nginx

···

在这里插入图片描述

然后执行两个命令,进行编译安装

<code>make

make install

在这里插入图片描述

四、启动Nginx

首先进入到nginx路径下,刚才的安装路径

<code>#启动脚本是在

# /usr/local/nginx/sbin/nginx

#启动,

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#停止

/usr/local/nginx/sbin/nginx -s stop

#重载

/usr/local/nginx/sbin/nginx -s reload

#杀掉nginx

/usr/local/nginx/sbin/nginx -s quit

访问:ip(localhost)+端口,端口默认为80,

在这里插入图片描述

安装到此结束!!!

如果访问不了,可能是防火墙的问题(ip访问的时候),可以看下边总结了

五、配置代理

5.1、配置代理需要知道的前提

了解nginx里面各个文件夹是干什么的?

conf:这个目录包含Nginx的配置文件。最重要的是 nginx.conf 文件,这是Nginx的主配置文件。html:这个目录通常用作Nginx的默认文档根目录。也就是说,如果您没有为服务器指定其他的根目录,Nginx会从这个目录中提供静态文件。默认情况下,它包含一个简单的 index.html 页面,通常用于测试Nginx服务器是否正常运行。logs:这个目录用于存放日志文件。其中最常见的有 access.log 和 error.log。access.log 记录所有的访问请求,而 error.log 记录错误信息,这对于调试和监控服务器状态非常有用。sbin:这个目录包含Nginx的可执行文件,通常是 nginx 本身。这是用来启动、停止或重载Nginx配置的主要执行文件。

5.2、配置代理

查看conf配置文件

<code>#找到nginx的配置文件,编辑

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

在这里插入图片描述

配置文件的详细解释:

<code>#user nobody;#运行nginx的默认账号

#nginx进程数,建议设置为等于CPU总核心数。

worker_processes 1;

#事件区块开始

events {

#单个进程最大链接数(最大连接数=连接数*进程数)

#根据硬件调整,与前面工作进程配合起来用,尽量大,但别把CPU跑到100%就行,每个进程允许的最多连接数,理论上为每台nginx服务器的最大连接数

worker_connections 1024;

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持

http {

#include:导入外部文件mime.types,将所有types提取为文件,然后导入到nginx配置文件中。

include mime.types;

#默认文件类型

default_type application/octet-stream;

#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设置为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载,注意:如果图片显示不正常把这个改成off

#sendfile指令指定,nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用,必须设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime

sendfile on;

#长连接超时事件,单位是秒

keepalive_timeout 65;

#第一个server区块开始,表示一个独立的虚拟主机站点

server {

#提供服务的端口,默认80

listen 80;

#提供服务的域名主机名

server_name localhost;

#对 “/” 启动反向代理,第一个location区块开始

location / {

root html; #服务默认启动目录,可以改成指定的目录位置

index index.html index.htm; #默认的首页文件,多个用空格分开

}

#错误页面路由

error_page 500 502 503 504 /50x.html; # 出现对应的http状态码是,使用50x.html回应客户

location = /50x.html { # location区块开始,访问50x.html

root html; # 指定对应的站点目录为html

}

}

}

配置文件作用域:

在这里插入图片描述

全局区域:从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。必须上面的第一行配置

<code># 允许的work process数

worker_processes 1;

# 引入其他配置文件,其他配置文件可以放在conf目录下的domains文件夹下(没有自己创建一个)

include domains/helloWord.conf

这是Nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理也越多,但是会受硬件、软件的设备的制约。

events区域:events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker_process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大链接数等。

worker_connections 1024;

样例中就表示每个work process支持的最大连接数为1024,这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。

http区域块:这块是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。这里http块包含:http全局块、server 块

在这里插入图片描述

http全局块:http全局块配置的指定包括文件引入、MIME-TYPE定义、日志自定义、连接超时事件、单链接请求数上限等。

server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。每个server块也分为server全局块以及可以同时包含多个location块。

全局server块:最常见的配置就是本虚拟机主机的监听配置和本虚拟机的名称或IP配置。location块:一个server块可以配置多个location块。这块的主要作用就是基于nginx服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等共鞥,还有许多第三方模块的配置也可以在这里进行。

六、遇到的问题

6.1、在执行安装nginx时,执行脚本时出现没有C编译不了???

<code>#执行配置脚本 --prefix是指定安装目录

./configure --prefix=/usr/local/nginx

checking for OS

Linux 3.10.0-1160.el7.x86_64 x86_64

checking for C compiler … not found

./configure: error: C compiler cc is not found

解决办法:

由于我自己使用的时centos系统,所以运行以下命令,安装相应的工具

sudo yum groupinstall "Development Tools"

补充:其它系统怎么办?

以下是一些常见Linux发行版安装GCC(GNU Compiler Collection)的命令:

对于基于Debian的系统(如Ubuntu):

sudo apt update

sudo apt install build-essential

这将安装GCC和其他重要的开发工具。

对于基于RPM的系统(如CentOS):

sudo yum groupinstall "Development Tools"

这个命令会安装GCC和一组开发工具。

对于Fedora:

sudo dnf groupinstall "Development Tools"

这也会安装GCC和其他开发工具。

安装完成后,就可以重新运行 ./configure 命令,完美!!!

6.2、防火墙问题导致访问localhost:80无法访问成功

如果浏览器访问不通,请检查是否开启防火墙限制,将防火墙关闭或将端口加入到防火墙白名单中,这里nginx的默认端口为80

放行端口

#查看已放行的端口

firewall-cmd --list-all

#将80端口加入到防火墙放行白名单中,并重载防火墙

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --reload

关闭防火墙

#临时关闭防火墙

systemctl stop firewalld.service

#永久关闭防火墙

systemctl disable firewalld.service

设置nginx 的开机启动

vim /etc/rc.local

文本底部追加

/usr/local/nginx/sbin/nginx

【注】如有不妥,还请大佬指正!

[参考文献]

1、https://blog.csdn.net/weixin_50003028/article/details/132567183



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。