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文件中,运行下载命令时需要提前进到该目录
wget -c http://nginx.org/download/nginx-1.24.0.tar.gz
注意:如果没有wget命令,需要先安装:(centos版本命令:)yum install -y wget
三、开始安装
3.1、首先安装相应的依赖
我是直接在线安装,centos使用yum命令安装
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
执行脚本
···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配置文件
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
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。