目前还没有把spring-boot redis shiro-session共享的代码提交推送。
一、操作系统的安装
用虚拟机软件VirtualBox安装centeOS7操作系统(co_7_64_57.3_1)。
下载操作系统,我们选择最小化安装,安装过程省略...
VirtualBox配置网络主机
用虚拟机软件VirtualBox安装,注意网卡选择桥接网卡和仅主机网络
安装必要的软件和关闭防火墙
yum install vim
yum install wget
yum install git
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
在阿里源上下载的系统,还要关闭selinux
vi /etc/selinux/config
把文件中未注释的两行全部注释
配置网卡--由于我们选择了桥接和仅主机网络,桥接网络我们不用管他,我们配置仅主机网络,用ip addr 命令查看哪块网卡是仅主机网络
[root@work ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:37:db:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global noprefixroute dynamic enp0s3
valid_lft 5299sec preferred_lft 5299sec
inet6 fe80::2ad2:7094:bc38:db21/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:4a:66:b9 brd ff:ff:ff:ff:ff:ff
inet 192.168.57.7/24 brd 192.168.57.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::6030:cb73:bc03:4583/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@work ~]#
我们看到网卡enp0s8是仅主机网络,打开该网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
需要把dhcp改成static,在最后加上本机地址
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s8"
UUID="0f9cfaee-f4ee-4767-b654-da31046131ba"
DEVICE="enp0s8"
ONBOOT="yes"
IPADDR="192.168.57.7"
关闭虚拟机:
shutdown now
根据需要复制我们刚建好的虚拟机
我们要建立负载均衡,所以我们要复制一台nginx服务器、一台redis数据库服务器、至少两台web服务器、一台mysql数据库服务器
以上虚拟机复制出来,并参考上一步配置好网络
配置如下:
nginx服务器|192.168.57.4|co_7_64_57.4_2
web服务器1|192.168.57.5|co_7_64_57.5_3
web服务器2|192.168.57.6|co_7_64_57.6_4
mysql服务器|192.168.57.7|co_7_64_57.7_5
redis数据库服务器|192.168.57.8|co_7_64_57.8_6
二、安装redis
用ssh连接到我们的redis服务器
ssh root@192.168.57.8
cd 到我们的安装目录
cd /usr/local/
下载redis软件包
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
解压软件包
tar -zxvf redis-4.0.6.tar.gz
安装gcc
yum install gcc
安装
cd redis-4.0.6
make MALLOC=libc
cd src/ && make install
配置redis
cd /etc/
mkdir redis
cd redis
cp /usr/local/redis-4.0.1/redis.conf /etc/redis/
vi /etc/redis/redis.conf
把redis的配置拷贝到/etc/redis/ 中
修改:
69 #bind 127.0.0.1
500 requirepass 123456
136 daemonize yes
需要修改以上三行:取消绑定本机;设置访问密码;让redis服务在后台运行。
启动redis
/usr/local/redis-4.0.6/src/redis-server /etc/redis/redis.conf
查看是否启动
[root@work]~# ps -aux | grep redis
root 966 0.1 0.2 142416 2424 ? Ssl 18:46 0:04 /usr/local/redis-4.0.6/src/redis-server *:6379
root 1262 0.0 0.0 112824 980 pts/0 S+ 19:53 0:00 grep --color=auto redis
[root@work]~#
连接到redis
[root@work]~# /usr/local/redis-4.0.6/src/redis-cli -h 127.0.0.1 -a 123456
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
开机自启动
在/root/目录下创建auto_start.sh的文件
vim auto_start.sh
写入以下内容
#! /bin/sh
/usr/local/redis-4.0.6/src/redis-server /etc/redis/redis.conf
给予执行权限
chmod +x auto_start.sh
给予开机自启动文件的执行权限
chmod +x /etc/rc.d/rc.local
把我们定义的脚本写入上面的文件中
vim /etc/rc.d/rc.local
/root/auto_start.sh
重启,看是否生效
检验:打开mp项目,把redis的地址指向我们刚才配置好的redis服务器
spring:
redis:
database: 0
host: 192.168.57.8
port: 6379
password: 123456 # 密码(默认为空)
timeout: 6000 # 连接超时时长(毫秒
运行项目看是否运行得起来。
三、安装mysql
用ssh连接到我们的mysql服务器
ssh root@192.168.57.7
下载更改源
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装
yum -y install mysql-community-server
启动配置
systemctl start mysqld.service
systemctl status mysqld.service
systemctl enable mysqld.service
查看更改密码
grep "password" /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Password123!';
重启mysql服务
systemctl restart mysqld
设置远程访问
grant all privileges on *.* to 'root'@'%' identified by 'Password123!' with grant option;
flush privileges;
测试
用我们本地的数据库工具连接到mysql服务器中
mycli -h192.168.57.7 -uroot -pPassword123!
创建mp项目的数据库
mysql root@192.168.57.7:(none)> create database mp;
mysql root@192.168.57.7:(none)> use mp
还原mp数据库
mysql root@192.168.57.7:mp> source /Users/wenpingao/Documents/Develop/Java/Project/mp/mp.sql
修改mp项目配置
spring:
redis:
database: 0
host: 192.168.57.8
port: 6379
password: 123456 # 密码(默认为空)
timeout: 6000 # 连接超时时长(毫秒
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.57.7:3306/mp?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
username: root
password: Passwrod123!
filters: stat,wall,log4j,config
max-active: 100
initial-size: 1
max-wait: 60000
min-idle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 50
max-pool-prepared-statement-per-connection-size: 20
运行项目
四、安装Nginx
用ssh连接到我们的redis服务器
ssh root@192.168.57.4
按照以下命令步骤执行安装即可
cd /usr/local/
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
cd nginx-1.9.9/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
make && make install
useradd -s /sbin/nologin -M nginx
id nginx
/usr/local/nginx/sbin/nginx
netstat -tlunp | grep nginx
命令
启动nginx: /usr/local/nginx/sbin/nginx
重新加载配置文件:/usr/local/nginx/sbin/nginx -s reload
安全关闭:/usr/local/nginx/sbin/nginx -s quit
暴力关闭:/usr/local/nginx/sbin/nginx -s stop
参考redis配置开机自启动,auto_strat.sh文件中的内容
#! /bin/sh
/usr/local/nginx/sbin/nginx~
五、运行mp项目
在服务器上安装jdk
ssh root@192.168.57.5
由于甲骨文的限制,下载jdk必须登陆
所以我们在本地下载好
再用scp上传到服务器上
scp ~/Downloads/jdk-8u301-linux-x64.rpm root@192.163.57.5:/root/
安装
rpm -i jdk-8u301-linux-x64.rpm
验证
[root@work ~]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
[root@work ~]#
在本地打包mp项目
cd /Users/wenpingao/Documents/Develop/Java/Project/mp
mvn package -Dmaven.test.skip=true
scp target/mp-0.0.1-SNAPSHOT.jar root@192.168.57.5:/root/mp/mp.jar
在服务器上运行上一步我们运行的jar包
cd mp/
nohup java -jar mp.jar --server.port=8080 > log-8080 &
验证是否运行成功
在我们本地访问192.168.57.5:8080,看是否能打开我们的mp管理系统
开机自启动
参考redis的开机自启动,auto_strat.sh文件中的内容
#! /bin/sh
cd /root/mp/
nohup java -jar mp.jar --server.port=8080 > log-8080 &
192.168.57.6运行mp管理系统也同理
六、Nginx负载均衡配置
由于mp项目已经采用redis共享session的方式来同步用户的状态,所以我们只需要配置nginx
ssh 到192.168.57.4
以下是负载均衡的配置
upstream mp{
server 192.168.57.5:8080 weight=1 max_fails=3 fail_timeout=2s;
server 192.168.57.6:8080 weight=1 max_fails=3 fail_timeout=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#文件上传
location /common/upload/ {
proxy_pass http://192.168.57.5:8080;
proxy_connect_timeout 500ms;
}
location /upload/{
proxy_pass http://192.168.57.5:8080;
proxy_connect_timeout 500ms;
}
location / {
#root html;
#index index.html index.htm;
proxy_pass http://mp;
proxy_connect_timeout 500ms;
}
}
以上的第一个location和第二个location是为了解决文件上传及访问不同步的问题,提出的解决方案。
七、uni-app测试
没找到怎么把uniapp发布出来的h5项目部署到nginx上的方法
部署到了两台安装有tomcat的机器上了,并在nginx服务器中配置了负载均衡。
在打包uni-app h5项目之前要设置路径:
nginx配置:
upstream h5 {
ip_hash;
server 192.168.57.5:8087 weight=1 max_fails=3 fail_timeout=2s;
server 192.168.57.6:8087 weight=1 max_fails=3 fail_timeout=2s;
}
location /h5 {
proxy_pass http://h5;
proxy_connect_timeout 500ms;
}
八、实现利用redis数据库实现session共享的tomcat8.5.38
配置session指向redis数据库
vim conf/context.xml
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Valve className="com.s.tomcat.redissessions.RedisSessionHandlerValve"/>
<Manager className="com.s.tomcat.redissessions.RedisSessionManager"
host="192.168.57.8"
port="6379"
database="0"
password="123456"
maxInactiveInterval="60" />
</Context>
以上conf/context.xml文件中的Context节点下的Value和Manger下面的各项配置了redis数据库服务器的信息。
以上参考了:https://github.com/cc-chen/tomcat8.5-redis-session-manager
九、一些小技巧
从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
上传本地文件到服务器
scp /path/filename username@servername:/path
从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
上传目录到服务器
scp -r local_dir username@servername:remote_dir
ssh 免密登陆(用Mac登陆到centerOs上):
在Mac上用终端登陆到center Os上(需要密码)
在Mac的~/.ssh/目录下生成了登陆信息
在终端中执行:ssh-keygen(一路enter)
在~/.ssh/目录下生成了公钥和私钥
再执行:ssh-copy-id root@wpg.co.wpg(用户:root,center Os:wpg.co.wpg)u将公钥上传到服务器
就OK了
利用别名登陆:
在Mac上cd到~/.ssh/目录下,创建【config】文件 ,编辑config文件:
Host co4
HostName 192.168.57.4
User root
Port 22
Host co5
HostName 192.168.57.5
User root
Port 22
ssh co4