文章目录
准备工作
一、linux上安装nginx
1.安装依赖
yum install gcc-c++
连接成功
Last login: Tue May 18 09:54:43 2021
[root@localhost ~]# gcc-c++
bash: gcc-c++: 未找到命令...
[root@localhost ~]# yum install gcc-c++
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 gcc-c++.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 libstdc++-devel = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libstdc++ = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libmpc.so.3()(64bit),它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 libgomp = 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 cpp = 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libgcc >= 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 glibc-devel >= 2.2.90-12,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
---> 软件包 libmpc.x86_64.0.1.0.1-3.el7 将被 安装
---> 软件包 libstdc++.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libstdc++.x86_64.0.4.8.5-44.el7 将被 更新
---> 软件包 libstdc++-devel.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在检查事务
---> 软件包 cpp.x86_64.0.4.8.5-44.el7 将被 安装
---> 软件包 glibc-devel.x86_64.0.2.17-324.el7_9 将被 安装
--> 正在处理依赖关系 glibc-headers = 2.17-324.el7_9,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc = 2.17-324.el7_9,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc-headers,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
---> 软件包 libgcc.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libgcc.x86_64.0.4.8.5-44.el7 将被 更新
---> 软件包 libgomp.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libgomp.x86_64.0.4.8.5-44.el7 将被 更新
--> 正在检查事务
---> 软件包 glibc.x86_64.0.2.17-196.el7 将被 升级
--> 正在处理依赖关系 glibc = 2.17-196.el7,它被软件包 glibc-common-2.17-196.el7.x86_64 需要
---> 软件包 glibc.x86_64.0.2.17-324.el7_9 将被 更新
---> 软件包 glibc-headers.x86_64.0.2.17-324.el7_9 将被 安装
--> 正在处理依赖关系 kernel-headers >= 2.2.1,它被软件包 glibc-headers-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 kernel-headers,它被软件包 glibc-headers-2.17-324.el7_9.x86_64 需要
--> 正在检查事务
---> 软件包 glibc-common.x86_64.0.2.17-196.el7 将被 升级
---> 软件包 glibc-common.x86_64.0.2.17-324.el7_9 将被 更新
---> 软件包 kernel-headers.x86_64.0.3.10.0-1160.25.1.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
====================================================================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================================================================
正在安装:
gcc-c++ x86_64 4.8.5-44.el7 base 7.2 M
为依赖而安装:
cpp x86_64 4.8.5-44.el7 base 5.9 M
gcc x86_64 4.8.5-44.el7 base 16 M
glibc-devel x86_64 2.17-324.el7_9 updates 1.1 M
glibc-headers x86_64 2.17-324.el7_9 updates 691 k
kernel-headers x86_64 3.10.0-1160.25.1.el7 updates 9.0 M
libmpc x86_64 1.0.1-3.el7 base 51 k
libstdc++-devel x86_64 4.8.5-44.el7 base 1.5 M
为依赖而更新:
glibc x86_64 2.17-324.el7_9 updates 3.6 M
glibc-common x86_64 2.17-324.el7_9 updates 12 M
libgcc x86_64 4.8.5-44.el7 base 103 k
libgomp x86_64 4.8.5-44.el7 base 159 k
libstdc++ x86_64 4.8.5-44.el7 base 306 k
事务概要
====================================================================================================================================================================================
安装 1 软件包 (+7 依赖软件包)
升级 ( 5 依赖软件包)
总计:57 M
总下载量:42 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/cpp-4.8.5-44.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY ] 5.3 MB/s | 8.7 MB 00:00:06 ETA
cpp-4.8.5-44.el7.x86_64.rpm 的公钥尚未安装
(1/7): cpp-4.8.5-44.el7.x86_64.rpm | 5.9 MB 00:00:01
glibc-headers-2.17-324.el7_9.x86_64.rpm 的公钥尚未安装 29% [=================== ] 5.6 MB/s | 12 MB 00:00:05 ETA
(2/7): glibc-headers-2.17-324.el7_9.x86_64.rpm | 691 kB 00:00:00
(3/7): glibc-devel-2.17-324.el7_9.x86_64.rpm | 1.1 MB 00:00:00
(4/7): gcc-c++-4.8.5-44.el7.x86_64.rpm | 7.2 MB 00:00:01
(5/7): libstdc++-devel-4.8.5-44.el7.x86_64.rpm | 1.5 MB 00:00:00
(6/7): kernel-headers-3.10.0-1160.25.1.el7.x86_64.rpm | 9.0 MB 00:00:01
(7/7): gcc-4.8.5-44.el7.x86_64.rpm | 16 MB 00:00:06
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 6.6 MB/s | 42 MB 00:00:06
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>"
指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
软件包 : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : libgcc-4.8.5-44.el7.x86_64 1/18
正在更新 : glibc-2.17-324.el7_9.x86_64 2/18
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
正在更新 : glibc-common-2.17-324.el7_9.x86_64 3/18
正在安装 : libmpc-1.0.1-3.el7.x86_64 4/18
正在更新 : libstdc++-4.8.5-44.el7.x86_64 5/18
正在安装 : libstdc++-devel-4.8.5-44.el7.x86_64 6/18
正在安装 : cpp-4.8.5-44.el7.x86_64 7/18
正在更新 : libgomp-4.8.5-44.el7.x86_64 8/18
正在安装 : kernel-headers-3.10.0-1160.25.1.el7.x86_64 9/18
正在安装 : glibc-headers-2.17-324.el7_9.x86_64 10/18
正在安装 : glibc-devel-2.17-324.el7_9.x86_64 11/18
正在安装 : gcc-4.8.5-44.el7.x86_64 12/18
正在安装 : gcc-c++-4.8.5-44.el7.x86_64 13/18
清理 : libstdc++-4.8.5-16.el7.x86_64 14/18
清理 : libgomp-4.8.5-16.el7.x86_64 15/18
清理 : glibc-common-2.17-196.el7.x86_64 16/18
清理 : glibc-2.17-196.el7.x86_64 17/18
清理 : libgcc-4.8.5-16.el7.x86_64 18/18
验证中 : gcc-c++-4.8.5-44.el7.x86_64 1/18
验证中 : libstdc++-4.8.5-44.el7.x86_64 2/18
验证中 : glibc-common-2.17-324.el7_9.x86_64 3/18
验证中 : glibc-2.17-324.el7_9.x86_64 4/18
验证中 : cpp-4.8.5-44.el7.x86_64 5/18
验证中 : glibc-devel-2.17-324.el7_9.x86_64 6/18
验证中 : gcc-4.8.5-44.el7.x86_64 7/18
验证中 : libstdc++-devel-4.8.5-44.el7.x86_64 8/18
验证中 : libmpc-1.0.1-3.el7.x86_64 9/18
验证中 : glibc-headers-2.17-324.el7_9.x86_64 10/18
验证中 : libgcc-4.8.5-44.el7.x86_64 11/18
验证中 : libgomp-4.8.5-44.el7.x86_64 12/18
验证中 : kernel-headers-3.10.0-1160.25.1.el7.x86_64 13/18
验证中 : libgcc-4.8.5-16.el7.x86_64 14/18
验证中 : glibc-2.17-196.el7.x86_64 15/18
验证中 : libstdc++-4.8.5-16.el7.x86_64 16/18
验证中 : glibc-common-2.17-196.el7.x86_64 17/18
验证中 : libgomp-4.8.5-16.el7.x86_64 18/18
已安装:
gcc-c++.x86_64 0:4.8.5-44.el7
作为依赖被安装:
cpp.x86_64 0:4.8.5-44.el7 gcc.x86_64 0:4.8.5-44.el7 glibc-devel.x86_64 0:2.17-324.el7_9 glibc-headers.x86_64 0:2.17-324.el7_9
kernel-headers.x86_64 0:3.10.0-1160.25.1.el7 libmpc.x86_64 0:1.0.1-3.el7 libstdc++-devel.x86_64 0:4.8.5-44.el7
作为依赖被升级:
glibc.x86_64 0:2.17-324.el7_9 glibc-common.x86_64 0:2.17-324.el7_9 libgcc.x86_64 0:4.8.5-44.el7 libgomp.x86_64 0:4.8.5-44.el7 libstdc++.x86_64 0:4.8.5-44.el7
完毕!
[root@localhost ~]#
遇到需要确认的输入y就好
2.选定源码目录
可以是任何目录,本文选定的是/usr/local/src
cd /usr/local/src
3.安装PCRE库
依次执行以下指令
cd /usr/local/src
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44
./configure
make
make install
4.安装zlib库
cd /usr/local/src
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
5.安装ssl
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
6.安装nginx
cd /usr/local/src
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-file-aio \
--with-http_realip_module \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.44 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.1g
make -j2
make install
–with-pcre=/usr/local/src/pcre-8.44 指的是pcre-8.44 的源码路径。
–with-zlib=/usr/local/src/zlib-1.2.11指的是zlib-1.2.11 的源码路径。
7.启动
确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx
netstat -ano|grep 80
sudo /usr/local/nginx/nginx
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
8.问题排查-开放防火墙
ps -ef|grep nginx
查看nginx是否启动,如已启动,在本机上可以访问,在其他电脑不能访问.修改防火墙
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp |grep 80//查看所有80端口使用情况
再次访问
成功
二、安装JDK
1.移除系统原有的JDK
输入 java -version
查看是否存在
发现有输入:rpm -qa | grep java
检测jdk的安装包
接着进行一个个删除包,输入:rpm -e --nodeps +包名
最后再次:rpm -qa | grep java检查是否删除完即可
创建文件夹
2.下载JDK
百度云连接
链接:https://pan.baidu.com/s/1UnBf5UCqyBNfd3NWF-ay_A
提取码:ktps
登录Oracle账号后自动下载
命令 tar -zxvf jdk-8u221-linux-x64.tar.gz 解压
用 vim /etc/profile 命令 配置环境变量,按下 键盘上的 i 进入编辑模式
或者像我这样使用shell编辑
在配置文件之后添加环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_291
export JRE_HOME=/usr/local/java/jdk1.8.0_291/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
3.测试
输入javac 不会出现不可执行指令
再输入java -version
安装jdk完成
三、安装tomcat
https://tomcat.apache.org/download-80.cgi
百度云
链接:https://pan.baidu.com/s/1Ukd3Y-SF6ZQyrC6AuKxHYg
提取码:0jg9
1.在 /usr/local/ 下新建 tomcat文件夹
cd /usr/local/
mkdir tomcat
2.上传tomcat并复制
复制三份,修改配置文件
修改端口避免冲突
3.修改nginx配置文件,配置反向代理
upstream clustertomcat{
server 192.168.137.133:8081 weight=5;
server 192.168.137.133:8082 weight=1;
server 192.168.137.133:8083 weight=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://clustertomcat;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
添加这两块
3.1测试
可用, 进入下一步
四、使用keepalived实现nginx的高可用
安装keepalived
官网百度云 1.2.18
链接:https://pan.baidu.com/s/1384O3bWLrZUkD0zYqSOU6A
提取码:0und
新建server文件夹
mkdir /use/local/server
cd /use/local/server
上传到/use/local/server
解压
tar -zxvf keepalived-1.2.18.tar.gz
开始安装
cd keepalived-1.2.18
./configure --prefix=/usr/local/server/keepalived
make && make install
添加开机自启动
cp /usr/local/server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/server/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/server/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keeplived /usr/sbin/
ln -s /usr/local/server/keepalived/sbin/keepalived /sbin/
chkconfig keepalived on
配置keepalived
这里有两台电脑
编号 | IP |
---|---|
主机一 | 192.168.137.132 |
主机二 | 192.168.137.134 |
配置主节点
修改hosts文件
vi /etc/hosts
查看本机网卡
ifconfig
cd /usr/local/server/keepalived/etc/keepalived/
ls
修改keepalived.conf配置文件
#主节点的配置文件
global_defs {
router_id keep134; #全局变量和主机名保持一致
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #执行脚本的位子
interval 2 # 查询间隔时间2S
weight -20 # 权重-20
}
vrrp_instance VI_1 {
state MASTER #表示主节点
interface ens33 #和本机网卡保持一致
virtual_router_id 134 #最好和IP尾数保持一致
mcast_src_ip 192.168.137.134 $本机IP
priority 100 #初始分值
nopreempt #表示重启后仍然充当主节点
advert_int 1
authentication {
# 验证
auth_type PASS #密码验证
auth_pass 1111
}
track_script {
chk_nginx #执行脚本
}
virtual_ipaddress {
192.168.137.130 # 虚拟IP,可换行表示多个
}
}
修改从节点,只有配置文件有一点不一样,修改hosts,查看网卡都一样,不再贴出
#从节点的配置文件
global_defs {
router_id keep132;
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP # 表示从节点
interface ens33
virtual_router_id 132
priority 90
mcast_src_ip 192.168.137.132 #本机IP
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.137.130
}
}
配置执行脚本
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-header |wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq 0 ]; then
/usr/local/nginx/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then
killall keepalived
fi
fi
再把keepalived的配置文件复制到/etc/keepalived 下
cp /usr/local/server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
五、测试
开始测试前,为了区分,修改nginx的index.html页面
cd /usr/local/nginx/html/
在welcome 这里加上本机IP,方便区分
浏览器访问虚拟ip跳转主节点
关闭主节点的nginx,再次访问
启动主节点的nginx
cd /usr/local/nginx/
./nginx
脚本中有执行killall keepalived,这里还要启动keepalived
[root@localhost nginx]# cd /usr/local/server/keepalived/sbin/
[root@localhost sbin]# ls
keepalived
[root@localhost sbin]# keepalived
再次访问虚拟ip 192.168.137.130
已自动切换为134