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,关闭防火墙
这里将两台服务器分别记作V1
和V2
,配置步骤如下:
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主页