部署发布

Centos中使用nginx部署

1.安装编译工具以及库文件

  $ yum -y install make gcc-c++ libtool

2.安装 PCRE

  $ cd /usr/local
  $ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
  $ tar zxvf pcre-8.35.tar.gz
  $ cd pcre-8.35
  $ ./configure
  $ make && make install
  $ pcre-config --version

3.安装 zlib 库

  $ cd /usr/local/
  $ wget http://zlib.net/zlib-1.2.11.tar.gz
  $ tar -zxvf zlib-1.2.11.tar.gz
  $ cd zlib-1.2.11
  $ ./configure
  $ make
  $ make install

4.安装nginx

  $ cd /usr/local/
  $ wget http://nginx.org/download/nginx-1.8.0.tar.gz
  $ tar -zxvf nginx-1.8.0.tar.gz
  $ cd nginx-1.8.0
  $ ./configure 
  $ make
  $ make install

5.配置nginx(nginx安装目录conf下的nginx.config)

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       ####;    // 端口
        server_name ###.###.###.###;  // 服务器地址
        index index.html index.htm;
        location / {
            root /webResource; // 项目打包后文件的地址
            try_files $uri $uri/ @router;
            index  index.html index.htm;
        }

        location @router {
            rewrite ^.*$ /index.html last;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

6.打包项目工程

  npm run build

7.将打包后的文件上传到nginx服务器中

有条件的同学可以自建CI

  scp -r AAA root@BBB:/CCC
  • AAA: 本地工程的打包后的文件(buil d)路径
  • root: 用户名
  • BBB: 服务器的地址
  • CCC: 服务器nginx中存放静态文件的目录(例如上面我们配置的/webResource)

8.nginx安装目录sbin下重启nginx服务器

  ./nginx -s reload

windows中使用nginx部署

1.官网安装nginx

2.配置nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       ####;    // 端口
        server_name ###.###.###.###;  // 服务器地址
        index index.html index.htm;
        location / {
            root /webResource; // 项目打包后文件的地址
            try_files $uri $uri/ @router;
            index  index.html index.htm;
        }

        location @router {
            rewrite ^.*$ /index.html last;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

3.将打包后的文件上传到nginx服务器中

有条件的同学可以自建CI

  scp -r AAA root@BBB:/CCC
  • AAA: 本地工程的打包后的文件(build)路径
  • root: 用户名
  • BBB: 服务器的地址
  • CCC: 服务器nginx中存放静态文件的目录(例如上面我们配置的/webResource)

4.双击nginx.exe 重启服务器

Centos中使用tomcat部署

1.官网下载tomcat Linux版安装包并解到Centos任意目录下

2.打包项目工程

  npm run build

3.将打包后的文件上传到tomcat服务器webapps目录的ROOT目录下

路径:%TOMCAT_HOME%/webapps/ROOT/

4.执行startup.sh启动Tomcat

./%TOMCAT_HOME%/bin/startup.sh

5.使用tomcat默认端口、根路径访问项目

地址:localhost:8080/

windows中使用tomcat部署

1.官网下载tomcat windows版安装包并解压到windows任意目录

2.将打包后的文件上传到tomcat服务器webapps目录的ROOT目录下

路径:%TOMCAT_HOME%/webapps/ROOT/

3.双击startup.bat启动Tomcat

4.使用tomcat默认端口、根路径访问项目

地址:localhost:8080/

Windows高可用部署

本示例使用两台Windows server2019服务器进行演示

使用ipconfig查看系统的网络情况,分别给两台服务器设置静态ip,关闭防火墙

这里将两台服务器分别记作V1V2,配置步骤如下:

1. 安装NLB服务

(1) 在V1中打开【服务器管理器】,选择【添加角色和功能】

(2) 进入【开始之前】界面,安装条件确认无误,点击下一步

(3) 进入【开始之前】界面,系统默认选择【基于条件或基于功能的安装】,点击下一步

(4) 进入【服务器选择】界面,系统默认选择【从服务器池中选择服务器】,核对服务器名称和IP地址无误后,点击【下一步】

(5) 进入【服务器角色】界面,直接点击【下一步】

(6) 进入【功能】界面,勾选【网络负载平衡】,在弹出的对话框中,点击【添加功能】,接着会返回【服务器角色】界面,可以看到【网络负载平衡)】已被勾选,点击【下一步】

(7) 进入【确认】界面,确认无误后,点击【安装】。

(8) 进入【结果】界面,等待一段时间后,系统提示NLB安装完成后,即可以关闭安装界面。

(9) 在V2上重复(1)~(8)的步骤安装NLB服务

2. 创建NLB集群

(1) 在V1上打开【服务器管理器】——>【工具】——>【网络负载平衡管理器】

(2) 在左侧找到【网络负载平衡群集】,点击鼠标右键,选择【新建群集】

(3) 在主机栏中输入V1的IP地址192.168.137.201,然后点击【连接】,连接成功后,下方窗口会显示V1的IP地址及网卡名称,点击【下一步】。

(4) 在【优先级】中选择最高级【1】,即V1在该群集中优先对外提供服务,点击【下一步】。

(5) 设置负载平衡群集的共享群集IP地址,点击【添加】,设置群集IP地址为192.168.137.200,点击【确定】,返回后点击【下一步】。

  这里的192.168.137.200是负载平衡群集的虚拟IP地址,即两台NLB服务器均提供相同的服务,但是从逻辑上聚合为一台服务器,192.168.137.200是这台服务器的IP地址。

(6) 设置群集相关参数,群集的操作模式有单播、多播和IGMP多播。


  单播模式下,各个节点的网络适配器将重新制定一个新的虚拟MAC地址;

  多播模式下,各个节点的网络适配器保留原有的MAC地址。

  选择【多播】,点击【下一步】。

(7) 点击【完成】

(8) 返回【网络负载平衡管理器】主页后,看到IP地址为192.168.137.200的群集已经被创建成功,已有成员V1。

(9) 点击设置的虚拟ip,右键设置群集属性,点击端口设置,设置筛选模式为单一主机。

3. 将服务器添加到集群

(1) 对192.168.137.200群集点击鼠标右键,选择【添加主机到群集】

(2) 输入V2的IP地址:192.168.137.202,点击【连接】,需要等到一段时间,弹出连接凭据提示框,输入V2的管理员用户账户和密码,点击【确定】。等待一段时间后,下方接口中显示V2的IP地址,选择192.168.137.202的接口,点击【下一步】。

(3) 设置V2的优先级,V1设置为优先级最高的“1”,那么V2的优先级设置为“2”。V1出现故障时,V2继续对外提供服务,接着点击【下一步】。最后点击完成即可。

(4) 返回网络负载平衡管理器主页后,等到一段时间,V2的状态从“挂起”变为“已聚合”说明V2成功加入到192.168.137.200群集中。

(5) 如果有第三台服务器,重复(1)~(4)步骤即可。

4. 两台服务器安装nginx,并验证结果

Linux高可用部署

本示例分别使用Centos7作为MASTER和Ubuntu作为BACKUP服务器进行演示

可以给两台服务器分别设置静态IP,关闭防火墙

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

本示例配置的IP如下:Centos IP:192.168.137.138 ;Ubuntu IP:192.168.137.88 ;Virtual IP:192.168.137.200

1.Centos7安装nginx

(1)安装过程参考Centos中使用nginx部署

nginx常用命令参考:


#启动
/usr/local/nginx/sbin/nginx  

#修改配置文件重新加载
/usr/local/nginx/sbin/nginx  -s reload 

#关闭
/usr/local/nginx/sbin/nginx

2.Centos7安装与配置Keepalived

(1)联网下载到/usr/local目录下并解压

有可能会提示连接不成功,加上它提示的命令再下载就好了


cd /usr/local

wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz

tar zxvf keepalived-1.4.2.tar.gz

(2)安装相关依赖,有就不用下载了

yum install -y gcc openssl-devel popt-devel

(3)编译

cd keepalived-1.4.2

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

make

make install

(4)相关配置

cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

(5)配置keepalived.conf文件

vi /etc/keepalived/keepalived.conf

主机配置文件


! Configuration File for keepalived

global_defs {
  #一个没重复的名字即可
  router_id Centos7     
}

# 检测nginx是否运行

vrrp_script chk_nginx {

​    # nginx自动运行脚本路径

​    script "/etc/keepalived/nginx_check.sh" 

​    interval 2

# 权重减少20,减少完要比从机的值小

​    weight -20

}

vrrp_instance VI_1 {

  # MASTER代表主机

  state MASTER

  # 网卡名字  通过ip addr 可以查看

  interface eth0

  # 同一个keepalived集群的virtual_router_id相同

  virtual_router_id 51

  # 权重,master要大于slave

  priority 100

  # 主备通讯时间间隔

  advert_int 1

  # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式

  # 本机ip

  unicast_src_ip 192.168.137.138

  unicast_peer {

​    # 其他机器ip

​    192.168.137.88

  }

  # 设置nopreempt防止抢占资源

  nopreempt

  # 主备保持一致

  authentication {

​    auth_type PASS

​    auth_pass 1111

  }

  # 与上方nginx运行状况检测呼应

  track_script {

​    chk_nginx

  }

  virtual_ipaddress {

​    # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)

​    192.168.137.200

  }

}

(6)配置nginx自动运行脚本

主从机都需配置检测nginx是否在运行,不在运行就直接启动nginx的脚本,将脚本文件和keepalived放在一起

脚本名称 nginx_check.sh (注意这里需与keepalived.conf里文件名一致)

只要配置好了,以后直接启动keepalived就好了,keepalived运行之后就会检测nginx是否在运行,不在运行就通过脚本去启动


#!/bin/bash

A=`ps -C nginx ––no-header |wc -l`

if [ $A -eq 0 ];then

  /usr/local/nginx/sbin/nginx

  sleep 2

  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

​    killall keepalived

  fi

fi

自动重启不了解决方案

查看脚本是否有运行的权限

如果你是root登陆的话(不是的话,切换到root用户,对*.sh 赋可执行的权限)

chmod 777*.sh
或者
chmod +x *.sh

keepalived常用命令


#启动
service keepalived start

#停止
service keepalived stop

#查看状态
service keepalived status

(7) keepalived 开机自启动

systemctl start keepalived.service //启动
systemctl enable keepalived.service //开机自启动

3.Ubuntu安装nginx

(1) 安装nginx

sudo apt-get install nginx

4.Ubuntu安装与配置keepalived

(1) 安装keepalived

直接使用apt安装,安装在/etc/目录下

sudo apt-get install keepalived

(2) 设置keepalived随系统自启动

sudo vi /etc/rc.local

添加以下内容:

#!/bin/sh -e
service keepalived start &
 
exit 0

systemctl enable keepalived.service 

(3)配置keepalived.conf文件

sudo vi /etc/keepalived/keepalived.conf

从机配置文件

global_defs {
    #一个没重复的名字即可
    router_id Ubuntu
}

# 检测nginx是否运行
vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh"
        interval 2

        weight -20   
}

vrrp_instance VI_1 {

    # 代表是从机
    state BACKUP

    # 网卡名字,ip addr获取
    interface eth0

    # 同一个keepalived集群的virtual_router_id相同
    virtual_router_id 51

    # 权重,master要大于slave
    priority 90

    # 主备通讯时间间隔
    advert_int 1

    # 如果两节点的上联交换机禁用了组播,则采用vrrp单播通告的方式
    # 本机ip
    unicast_src_ip 192.168.137.88
    unicast_peer {
        # 其他机器ip
        192.168.137.138
    }

    # 设置nopreempt防止抢占资源
    nopreempt

    # 主备保持一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    # 与上方nginx运行状况检测呼应
    track_script {
        chk_nginx
    }

    virtual_ipaddress {
        # 虚拟ip地址(VIP,一个尚未占用的内网ip即可)
        192.168.137.200
    }
}

(4)配置nginx自动运行脚本

参考主机配置nginx自动运行脚本

5.测试

(1) 主从机分别启动keepalived

(2) 主从机分别查看ip addr ,可以看到主机eth0网卡有两个ip地址,分别是192.168.137.138和192.168.137.200

(3) 访问192.168.137.200,可以看到成功访问到192.168.137.138的nginx主页

(4) 将主机挂起,分别查看主从机ip addr,可以看到主机eth0网卡ip只剩下192.168.137.138,而从机eth0网卡有两个ip地址,分别是192.168.137.88和192.168.137.200

(5) 访问192.168.137.200,可以看到成功访问到192.168.137.88的nginx主页

2022-08-29
0