两个参考地址:

NGINX的百度百科:https://baike.baidu.com/item/nginx/3817705?fr=aladdin

NGINX的中文网站:http://www.nginx.cn/doc/

keepalived官网: http://www.keepalived.org/

获取安装包和源码

Nginx组件在Windows服务器上的安装与部署,重点是,生产环境建议还是使用Linux版本的NginxWindows 版本的 Nginx在访问量较大的网站上并不是十分稳定,可能出现需要定期重启得情况;

所以不建议在Windows服务器上安装和部署Nginx组件!

一、BIN包安装

获取最新的安装包,使用winscp或者lrzsz软件上传至服务器,

[root@localhost ~]# sha256sum Nginx_INSTALL_2016--05_00--.bin #计算文件sha值,文件名称以官网的为准
c39728537943b1d263da0d92a5af2824a21924437c955872bee58cda4b2ce336 Nginx_INSTALL_2016--05_00--.bin
#上面的一长串的字符就是我们要对比的内容
[root@localhost ~]# sh Nginx_INSTALL_2016--05_00--.bin #执行安装操作
#######省略输出########
clean the install tmp files......
try start the nginx...
Starting nginx (via systemctl): [ OK ]
start_success
try stop the nginx...
Stopping nginx (via systemctl): [ OK ]
stop success

出现如上信息表示安装成功,使用BIN包安装后,我们会帮你尝试启动服务并检测是否启动,如果再次执行安装命令

[root@localhost ~]# sh Nginx_INSTALL_2016--05_00--.bin #再次执行安装命令
.........省略输出......... we find nginx is install,you want reinstall?[y/n] #请输入`y`、`n`选择是否重新安装

如果确认重新安装,我们会将已有的nginx.conf文件备份为/root/nginx.conf.bak文件,且会自动加载到开机自启动项中

[root@localhost ~]# chkconfig --list   #检查是否设置开机启动项
...................省略输出...................
netconsole :off :off :off :off :off :off :off
network :off :off :on :on :on :on :off
nginx :off :off :on :on :on :on :off #出现该项就可以了

BIN包操作系统支持范围如下

BIN包目前支持的的操作系统如下,这里需要着重注意,BIN包支持安装的前提是系统需要最小化安装,如果未最小化安装肯定安装不成功!

二、源码编译安装

使用官网的源码编译安装Nginx,首先获取官方源码,我们需要准备的材料如下

2.1、安装系统依赖包

该步骤需要连接网络,且要可以使用yum源,对于RedHat的为授权用户可能需要进行换源操作

[root@localhost ~]# yum install gcc openssl openssl-devel zlib zlib-devel pcre pcre-devel patch GeoIP GeoIP-devel  #安装依赖包

# gcc:编译源码时需要
# openssl openssl-devel:配置ssl证书时需要,为了网站应用的安装,建议安装
# zlib zlib-devel:如果启动gzip压缩功能,则必须安装该包,为了更好的网络传输效率,建议安装
# pcre pcre-devel:如果需要使用Nginx的rewrite功能则需要安装包,在主流的网站类应用中可能会需要用到,建议安装
# patch:打Nginx补丁包时需要使用到
# GeoIP GeoIP-devel:实现Nginx定位地理位置信息的依赖包 #如果你的操作系统是Centos7.0或者RedHat7.0的需要更新一下systemd这个系统包,以解决开机启动项的问题
[root@localhost redis-3.0.]# yum update systemd

2.2、上传源码包并检查防火墙与selinux的设置

[root@localhost ~]#  setenforce  #  临时关闭selinx
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux #修改selinux的配置文件,下次重启时生效
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #关闭防火墙,如果想针对特殊端口配置请参照《Linux快速入门手册》 # Centos7或RedHat7以后关闭防火墙,重启后会再次开启
[root@localhost ~]# service firewalld stop
# Centos6或RedHat6关闭防火墙,重启后会再次开启
[root@localhost ~]# service iptables stop

2.3、编译安装Nginx

请按照上面表格中所列的内容上传所有的编译文件至服务器的/root目录下

#编译安装libmaxminddb
[root@node1 ~]# tar -zxvf libmaxminddb-1.2..tar.gz
[root@node1 ~]# cd libmaxminddb-1.2.
[root@node1 ~]# ./configure && make && make install
[root@node1 ~]# cp -rf /usr/local/include/maxminddb*.h /usr/include/
[root@node1 ~]# ldconfig /usr/local/lib #此步骤必须做因为部分系统可能出现无法加载依赖库的问题 #解压安装包 [root@localhost ~]# tar -zxvf nginx-1.10..tar.gz
[root@localhost ~]# tar -zxvf nginx_upstream_check_module.tar.gz
[root@localhost ~]# tar -zxvf nginx-module-vts.tar.gz
[root@localhost ~]# tar -zxvf ngx_http_geoip2_module-2.0.tar.gz
[root@localhost ~]# cd nginx-1.10. #必须要进入到nginx的源码目录中,因为下面的打布丁步骤与目录路径密切相关
[root@localhost nginx-1.10.]# patch -p0 < ../nginx_upstream_check_module/check_1.9.2+.patch #添加后端健康检查的补丁
############命令输出##################
patching file src/http/modules/ngx_http_upstream_hash_module.c
patching file src/http/modules/ngx_http_upstream_ip_hash_module.c
patching file src/http/modules/ngx_http_upstream_least_conn_module.c
patching file src/http/ngx_http_upstream_round_robin.c
patching file src/http/ngx_http_upstream_round_robin.h #开始编译Nginx,启用性能监控插件,后端检查插件,安装置/opt/nginx1.10.3
[root@localhost nginx-1.10.]# ./configure --with-stream --add-module=../nginx_upstream_check_module --add-module=../nginx-module-vts --add-module=../ngx_http_geoip2_module-2.0 --with-http_ssl_module --prefix=/opt/nginx1.10.3
[root@localhost nginx-1.10.]# make
[root@localhost nginx-1.10.]# make install ####Nginx的配置工作
[root@localhost ~]# ln -s /opt/nginx1.10.3 /usr/local/nginx #在/usr/local目录下创建一个nginx的链接,服务的启动脚本依赖该目录
[root@localhost ~]# cp -rf nginx.conf /usr/local/nginx/conf/ #将配置模板文件覆盖默认配置文件
cp: overwrite ‘/usr/local/nginx/conf/nginx.conf’? y #确认覆盖
[root@localhost ~]# cp htpasswd /usr/local/nginx/conf/ #复制密码文件至配置文件目录,如果没有该文件会导致性能监控插件页面打不开
[root@localhost ~]# cp -rf GeoLite2-City.mmdb /usr/local/nginx/conf/ #将地理位置书库拷贝至默认配置文件文件夹
[root@localhost ~]# cp -rf GeoLite2-Country.mmdb /usr/local/nginx/conf/ #将地理位置数据库拷贝至默认配置文件文件夹
[root@localhost ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile && source /etc/profile #将Nginx安装路径加入到环境变量中
[root@localhost ~]# cp nginx /etc/init.d/ #拷贝Nginx的启动脚本以注册服务
[root@localhost ~]# chmod +x /etc/init.d/nginx #赋予启动脚本可执行权限
[root@localhost ~]# useradd -r -M nginx # 添加一个nginx用户
[root@localhost ~]# chmod +x -R /usr/local/nginx # 给nginx安装目录添加可执行权限
[root@localhost ~]# chkconfig nginx on #设置nginx随机启动

三、验证是否安装成功

按照前面的章节完成Nginx的安装,不管是BIN包还是编译安装都支持如下方式启动与停止Nginx

service nginx start # 启动Nginx
service nginx stop # 停止Nginx
service nginx restart # 重新启动Nginx

为了检验是否安装成功,可以在浏览器端输入http://ip:port/xxx访问地址, 输入用户名和密码即可见如下图所示的监控数据表示安装成功

四、卸载

不管使用BIN包安装还是编译安装,卸载Nginx的方式是一样的,删除安装文件即可,但是如果代理一些静态网站,则需要将网站目录事先备份出来。

[root@localhost ]# service nginx stop # 停止正在运行的Nginx
[root@localhost ]# rm -rf /opt/nginx1.10.3
[root@localhost ]# rm -rf /usr/local/nginx
[root@localhost ]# rm -rf /etc/init.d/nginx

五、Nginx高可用配置

配置Nginx的高可用之前请确认正确安装部署单台服务器上的NginxNginx高可用的实现借助于keepalived,因此配置Nginx的关键在于安装与配置keepalived

5.1、编译安装部署keepalived

需要在集群内每一台服务器上安装配置keepalived。从官网获取到keepalived的安装部署包。具体的安装材料需求如下:

[root@localhost ~]# yum install gcc openssl  openssl-devel  popt popt-devel #编译与功能依赖包
[root@localhost ~]# tar -zxvf keepalived-1.2..tar.gz #解压安装部署包
[root@localhost keepalived-1.2.]# cd keepalived-1.2.
#编译安装keepalived
[root@localhost keepalived-1.2.]# ./configure
[root@localhost keepalived-1.2.]# make
[root@localhost keepalived-1.2.]# make install
[root@localhost keepalived-1.2.]# cp /usr/local/sbin/keepalived /usr/sbin/
[root@localhost keepalived-1.2.]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@localhost keepalived-1.2.]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost keepalived-1.2.]# chmod +x /etc/init.d/keepalived
[root@localhost keepalived-1.2.]# chkconfig keepalived on
[root@localhost keepalived-1.2.]# mkdir /etc/keepalived

5.2、配置Nginx高可用

主节点的配置

如上图所示,首先在Nginx_Master节点上配置keepalived

[root@localhost ~]# vi /etc/keepalived/keepalived.conf #创建keepalived的配置文件

#####配置文件内容###########
! Configuration File for keepalived global_defs {
notification_email {
#abc@example.com
}
#notification_email_from admin@example.com
#smtp_server smtp.example.com
#smtp_connect_timeout
router_id nginx_master
} vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/80" #监控本地Nginx端口,根据实际配置
interval
weight -
} vrrp_instance VI_1 {
state MASTER #主服务器
interface eth0 #通信网卡,根据实际配置
virtual_router_id #路由标识,同网段内不可冲突且需与备用服务器一致
priority #优先级,-
advert_int
authentication {
auth_type PASS
auth_pass qwe123!@#
}
virtual_ipaddress {
192.168.202.200 #虚拟IP,根据实际配置
}
track_script {
chk_http_port
}
}
[root@localhost ~]# service keepalived start #启动keepalived服务

从节点的配置

编辑从节点的keepalived配置文件。

[root@localhost ~]# vi /etc/keepalived/keepalived.conf #创建keepalived的配置文件

#####配置文件内容###########
! Configuration File for keepalived global_defs {
notification_email {
#abc@example.com
}
#notification_email_from admin@example.com
#smtp_server smtp.example.com
#smtp_connect_timeout
router_id nginx_backup
} vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/80" #监控本地Nginx端口
interval #执行间隔
weight - #执行失败,服务优先级-
} vrrp_instance VI_1 {
state BACKUP #备用服务器
interface eth0 #通信网卡,根据实际配置
virtual_router_id #路由标识,需与主服务器一致,同网段内不可冲突
priority #优先级,比主服务器要低,-
advert_int
authentication {
auth_type PASS
auth_pass qwe123!@#
}
virtual_ipaddress {
192.168.202.200 #虚拟IP,根据实际配置
}
track_script {
chk_http_port
}
}
[root@localhost ~]# service keepalived start #启动keepalived服务

分别在主服务器和从服务器上依次启动nginxkeepalived`服务即可启用高可用构架。

如何检验高可用构架

首先按照上节所说的配置配置好keepalived,并按照顺序启动服务,检测方法如下。

  • 在主服务器上使用ip addr查看主服务器是否获取到虚拟IP
  • [root@localhost ~]# ip addr
    : lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN #本地网卡不用看
    link/loopback ::::: brd :::::
    inet 127.0.0.1/ scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::/ scope host
    valid_lft forever preferred_lft forever
    : enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen #网卡名为你配置文件中的值
    link/ether ::::7c:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.149.177/ brd 192.168.149.255 scope global enp0s3
    valid_lft forever preferred_lft forever
    inet 192.168.149.190/ scope global enp0s3 #虚拟IP
    valid_lft forever preferred_lft forever
    • 确认好虚拟IP已经绑定在指定网卡上,在浏览器中键入http://虚拟IP:port/xxx能够看到监控页面即可,完成以上检测方可进行第二步配置,否则请检查你的配置是否按照文档进行配置。

    • 确认单台服务器能够正确访问,可以将主服务器nginx服务停止,再次使用ip addr观察虚拟IP是否在绑定网卡上(正确的状态是不应该存在),确认不存在后,在从服务器上使用ip addr查看虚拟ip是否切换到从服务器上(方法同主服务器上的操作),确认虚拟IP存在后再次访问http://虚拟IP:port/xxxx如果依然可用即可证明高可用的Nginx配置成功!

linux安装部署Nginx的更多相关文章

  1. centos7 下 安装部署nginx

    centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...

  2. Linux安装部署jdk+tomcat+mysql

    Linux安装部署测试环境 1. JDK安装下载 安装 yum search jdk 找到合适的jdk版本,以下图中的版本为例 yum install java-1.8.0-openjdk.x86_6 ...

  3. Linux安装部署FTP服务器

    Linux安装部署FTP服务器   本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚 ...

  4. linux 安装命令 nginx 部署

    [TOC] # 安装anocanda wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh安装:bash A ...

  5. 一、Nginx笔记--linux下载安装部署Nginx

    Nginx 到底是什么? Nginx  是⼀个⾼性能的HTTP和反向代理web服务器,核⼼特点是占有内存少,并发能⼒强 Nginx ⼜能做什么事情(应⽤场景) Http服务器(Web服务器) 性能⾮常 ...

  6. Linux安装配置Nginx

    之所以搭建Nginx,是因为要做一个图片服务器,之前已经搭建好了Ftp,要想实现通过网页的src标签显示图片需要,搭建web服务器(虽然也可以通过在img标签中的src属性里面写“ ftp://用户名 ...

  7. Linux安装部署Redis(超级详细)

    前言 网上搜索了一筐如何在Linux下安装部署Redis的文章,各种文章混搭在一起勉强安装成功了.自己也记录下,方便后续安装时候有个借鉴之处. Redis版本 5.0.4 服务器版本 Linux Ce ...

  8. linux 安装配置Nginx

    简介: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国 ...

  9. Linux 安装配置 Nginx

    前言 准备用flask做一个自己的博客网站,打算用Nginx来部署,所以在阿里云的服务器上安装Nginx,参考了很多教程,现在将步骤以及自己遇到的坑写下来,希望能对别人有所帮助. 我用的服务器是阿里云 ...

随机推荐

  1. C++ 调用 opencv 读取视频文件列表并处理

    //g++ trans_video.cpp -o trans_video `pkg-config opencv --libs --cflags` -L/usr/lib/x86_64-linux-gnu ...

  2. JavaScript 数组(Array)对象

    1.Array相关的属性和方法 Array对象属性 constructor 返回对创建此对象的数组函数的引用: length 设置或返回数组中元素的数目: prototype 使您有能力向对象添加属性 ...

  3. 3 jmeter的两种录制方法

    录制1-badboy(推荐) badboy是一款自动化测试工具,它可以完成简单的功能测试和性能测试.其实它是一款独立的测试工具,只不过它录制东西导出的格式适用于jmeter,所以我们经常把jmeter ...

  4. .NET Core 指南 官方

    https://docs.microsoft.com/zh-cn/dotnet/core/index

  5. Redis入门到高可用(十二)—— pipeline

    一.回忆通信模型 二.流水线 1.什么是流水线 2.pipeline-Jedis实现 3.与原生M(mget,mset等)操作对比 M操作是原子操作 pipeline命令是非原子的,Redis服务器会 ...

  6. 八种排序算法--java实现(转)

    (转:http://blog.csdn.net/without0815/article/details/7697916) 8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中, ...

  7. MRPT编译

    今天尝试编译一下MRPT,主要是为了学习里面的路径规划算法. 自主探索,未知环境探索...... 编译的过程中遇到一个问题就是wxWidgets老是检测不到,让我添加它的root目录.明明wxWidg ...

  8. 【Scrum】-NO.40.EBook.1.Scrum.1.001-【敏捷软件开发:原则、模式与实践】- Scrum

    1.0.0 Summary Tittle:[Scrum]-NO.40.EBook.1.Scrum.1.001-[敏捷软件开发:原则.模式与实践]- Scrum Style:DesignPattern ...

  9. 【Tools】-NO.10.Tools.2.IDEA.1.001-【IDEA Configuration】-

    1.0.0 Summary Tittle:[Tools]-NO.10.Tools.2.IDEA.1.001-[IDEA Configuration]- Style:Tools Series:IDEA ...

  10. [LeetCode] questions conlusion_InOrder, PreOrder, PostOrder traversal

    Pre: node 先,                      Inorder:   node in,           Postorder:   node 最后 PreOrder Inorde ...