Nginx 安装教程
1、Nginx 简介
1.1、Nginx概述
Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
1.2、Nginx作为web服务器
Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。
Nginx是什么?Nginx介绍及Nginx的优点
Web Server Survey
1.3、正向代理
-
Nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。
-
**正向代理:**如果把局域网外的Inter***想象成一个巨大的资源库,则局域网中的客户端要访问Inter***,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
1.4、反向代理
-
**反向代理:**其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
1.5、负载均衡
-
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
-
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?
-
我们首先想到的可能是升级服务器的配置,比如提高CPU执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能够满足需求的。那么怎么办呢?
-
上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
1.6 、动静分离
-
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
2、Nginx 安装
2.1、进入Nginx官网,下载
nginx官网 nginx-1.12.2.tar.gz
2.2、需要的安装包
### 这些安装包是在你离线没有网络的情况下安装的
pcre-8.37.tar.gz rewrite正则相关pcre:URL重写软件,实现伪静态\URL跳转等、SEO优化。
openssl-1.0.1t.tar.gz https加密访问用它
zlib-1.2.8.tar.gz 提供数据压缩用
nginx-1.12.2.tar.gz
链接:https://pan.baidu.***/s/19IlP0m0UG1_iv6mobcaNwg
提取码:w3sk
Nginx 安装包 需要自行下载
2.3、在线安装nginx(编译安装)
下面的操作需要在Linux 上面进行,如果不熟悉Linux安装的教程请看下面的这篇Linux安装教程
Linux安装
2.3.1、安装pcre
- 联网下载pcre
- mkdir -p /opt/tools
- cd /opt/tools
-
wget http://downloads.sourceforge.***/project/pcre/pcre/8.37/pcre-8.37.tar.gz
- 如果没找到wget 命令 则执行 yum install -y wget即可随后重新执行上面的wget命令下载,确保此时你网络是畅通的
- 解压压缩文件
- 使用命令 tar -zxvf pcre-8.37.tar.gz
- cd pcre-8.37
- ./configure完成后,执行make,最后执行make install,如果没有make命令则执行yum install -y make
- pcre-config --version 检查版本 出现 8.37 说明成功了
2.3.2、安装openssl、zlib、g***依赖
yum -y install make zlib zlib-devel g***-c++ libtool openssl openssl-devel
configure参数作用
nginx -V 查看安装的参数及模块
参数作用:
--prefix=PATH 路径 如果不指定nginx默认安装位置在 /usr/local
--user=USER 用户
--group=GROUP 组
--with-pcre 伪静态
--with-http_stub_status_module 状态
--with-http_ssl_module 加密 443
例如
./configure --user=www --group=www --prefix=/application/nginx-1.12.2/ --with-http_stub_status_module --with-http_ssl_module --with-pcre
### 这不需要执行
2.3.3、安装nginx
- 联网下载nginx
- cd /opt/tools
- wget http://nginx.org/download/nginx-1.12.2.tar.gz
- 解压压缩文件
- 使用命令 tar -zxvf nginx-1.12.2.tar.gz
- cd nginx-1.12.2
- 使用命令解压 ./configure完成后,执行make && make install
- 启动nginx
- cd /usr/local/nginx/sbin
- ./nginx
2.3.4、访问Nginx
-
在windows系统中访问linux中nginx,默认不能访问的,因为防火墙问题,关闭防火墙-开放访问的端口号,80端口
-
查看开放的端口号
- firewall-cmd --list-all
-
设置开放的服务或端口号
- firewall-cmd --add-service=http --permanent
- firewall-cmd --add-port=80/tcp --permanent
-
重启防火墙
-
firewall-cmd --reload
-
查看 firewall-cmd --list-all
-
-
访问 ip:port
2.3.5 、扩展 (可以不需要进行操作)
-
配置环境变量PATH,加入nginx命令路径
-
vim /etc/profile增加:
- export PATH=“/usr/local/nginx/sbin/:$PATH”
-
增加后执行下面,使之生效
-
. /etc/profile 或者是 source /etc/profile
-
echo $PATH
/usr/local/nginx/sbin/:/usr/local/nginx/sbin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
-
现在在如何目录输入 nginx -v都可以有对应的结果,不会出现nginx命令找不到了。
nginx version: nginx/1.12.2
-
-
-
改成systemctl启动方式
-
vim /usr/lib/systemd/system/nginx.service
[Unit] Description=The nginx HTTP and reverse proxy server After=***work-online.target remote-fs.target nss-lookup.target Wants=***work-online.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true [Install] WantedBy=multi-user.target
-
添加对应执行权限
chmod 777 /usr/lib/systemd/system/nginx.service # 任何用户都可以对这个文件进行可读可写可执行操作 systemctl enable nginx # 设置开机自动 pkill nginx # 杀掉之前的启动的nginx systemctl start nginx # 启动nginx lsof -i :80 # 查看80端口占用 如果没有这个命令则执行 yum install -y lsof ***MAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 21105 root 6u IPv4 67730 0t0 TCP *:http (LISTEN) nginx 21106 nobody 6u IPv4 67730 0t0 TCP *:http (LISTEN)
-
-
至此 就完成了 实际上2.3.5做的操作就是yum里面完成的操作。
-
通过systemctl这个命令启动。
2.4、离线安装nginx
2.4.1、安装prce
-
mkdir -p /opt/tools
-
cd /opt/tools
-
把压缩包上传到 /opt/tools下面 可以用一些远程上传文件工具
-
解压缩 pcre-8.37.tar.gz 包
-
tar -zxvf pcre-8.37.tar.gz
-
cd pcre-8.37 执行./configure
-
ps 如果提示错误,需要提前安装g***++
执行 cd /run/media/root/CentOS 7 x86_64/Packages(已经从中拷贝出来了26个安装包,直接使用准备好的文件夹rpmg***安装即可) rpm -Uvh *.rpm --nodeps –force 或者通过yum安装 yum -y install g*** yum -y install g***-c++ 检查安装后版本 g*** -v g++ -v
-
-
./configure完成后,执行make,最后执行make install。
-
2.4.2、安装openssl
- cd /opt/tools
- 把压缩包上传到 /opt/tools下面
-
解压缩 openssl-1.0.1t.tar.gz 包
- tar -zxvf openssl-1.0.1t.tar.gz
- cd openssl-1.0.1t 执行./config
- ./config完成后,执行make,最后执行make install。
2.4.3、安装zlib
- cd /opt/tools
- 把压缩包上传到 /opt/tools下面
-
解压缩 zlib-1.2.8.tar.gz 包
- tar -zxvf zlib-1.2.8.tar.gz
- cd zlib-1.2.8 执行./configure
- ./configure完成后,执行make,最后执行make install。
2.4.4、安装Nginx
- cd /opt/tools
- 把压缩包上传到 /opt/tools下面
-
解压缩nginx-1.12.2.tar.gz包
- tar -zxvf nginx-1.12.2.tar.gz
- cd nginx-1.12.2 执行./configure
- ./configure完成后,执行make,最后执行make install。
2.4.5、访问Nginx【参照2.3.4】
2.5、通过yum方式安装
2.5.1、配置nginx源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.5.2 、安装并启动
- yum install nginx -y 安装nginx
- systemctl start nginx 启动nginx
- systemctl enable nginx 设置开机自启动
- systemctl status nginx 查看nginx服务状态
2.5.3、 验证安装是否成功
-
通过ip:port访问
-
nginx -v 输入nginx version: nginx/x.x.x 版本 说明nginx安装成功了
2.6、通过Docker方式安装
2.6.1、安装nginx镜像
-
可以自己构建进行,也可以使用nginx官方镜像
- docker pull nginx 拉取nginx最新的镜像
-
启动nginx
- docker run -d -p 80:80 nginx
- -d 参数是让容器以后台方式运行。
- -p 参数是让宿主机的80端口与容器80端口做一个映射使其能访问到容器服务。
- ps 映射端口的时候需要检查宿主机的80端口是否被占用。
- 查看 端口 losf -i :80 如果用80端口已经在使用那就换一个没有被使用的端口。
-
访问nginx ip:port