部署環境
centos7
nginx1.10.2
tomcat7.0
redis3.2.3
mariadb 5.5.44
所需軟體包
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session- manager-2.0.0.jar
solo blog
一、nginx伺服器設定
#安裝前準備
ntpdate 172.18.0.1
iptables -f
##安裝nginx
# yum install nginx修改設定檔
location:匹配url,在server內部追加
註:省略號為其他預設的參數,如果沒有特殊需要按預設即可
vim /etc/nginx/nginx.conf http { ... upstream tomcatservers { server 172.18.68.21:8080; server 172.18.68.22:8080; } ... server { ... location / { proxy_pass http://tomcatservers; } ... } } systemctl start nginx
檢查連接埠
#二、tomcat伺服器設定
安裝前準備
ntpdate 172.18.0.1iptables -f
#安裝tomcat
yum install tomcat#部署solo
cp solo-2.4.1.war /usr/share/tomcat/webapps/ systemctl restart tomcat
配置solo
cd /usr/share/tomcat/webapps/solo-2.4/web-inf/classes vim latke.properties #### server #### # 配置协议 serverscheme=http # 配置客户端访问站点时的域名或ip,也就是前端nginx的域名 serverhost=www.shuaiguoxia.com # 使用的端口 serverport=80
設定solo連接mysql
#### h2 runtime #### #runtimedatabase=h2 #jdbc.username=root #jdbc.password= #jdbc.driver=org.h2.driver #jdbc.url=jdbc:h2:~/solo_h2/db #jdbc.pool=h2 # #### mysql runtime #### runtimedatabase=mysql jdbc.username=root # 用户名 jdbc.password=123456 # 密码 jdbc.driver=com.mysql.jdbc.driver jdbc.url=jdbc:mysql://172.18.68.41:3306/solo?useunicode=yes&characterencoding=utf8 jdbc.pool=druid
設定tomcat連線reids
tomcat連線reids需要3個軟體包:commons-pool2-2.2.jar jedis-2.5.2.jar tomcat-redis-session-manager-2.0.0.jar下載位址#將所需的jar包複製到/usr/share/tomcat/lib/
cp commons-pool2-2.2.jar /usr/share/tomcat/lib/ cp jedis-2.5.2.jar cp tomcat-redis-session-manager-2.0.0.jar修改contest.xml檔,再文件中加入以下兩行。
vim /etc/tomcat/context.xml # <valve classname="com.orangefunction.tomcat.redissessions.redissessionhandlervalve" /> <manager classname="com.orangefunction.tomcat.redissessions.redissessionmanager" host="172.18.68.31" port="6379" database="0" maxinactiveinterval="60" />
重啟tomcat##systemctl restart tomcat
redis伺服器一共兩台,一主一從。僅僅配置檔案不同,其他過程全部相同。
ntpdate 172.18.0.1
iptables -f
yum install redis
主節點僅配置ip、監聽的連接埠、與連線密碼
vim /etc/redis.conf bind 0.0.0.0 # 监听所有ip port 6379 # 设定监听的端口 requirepass 123456 # 设定连接的密码redis從節點設定
從節點設定為唯讀
bind 0.0.0.0 # 监听所有ip slaveof 172.18.68.31 6379 # 设定主节点的ip+端口 masterauth 123456 # 主节点的连接密码 slave-read-only yes # 从节点为只读確認主從設定成功
#shell > redis-cli -h 172.18.68.32 # 连接从服务器redis
127.0.0.1:6379> info replication # 查看主从复制状态信息
# replication
role:slave
master_host:172.18.68.31 # 主节点ip
master_port:6379 # 主节点的端口
master_link_status:up # up为主从同步正常
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:1420
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
mysql伺服器一共兩台,一主一從。僅僅配置檔案不同,其他過程全部相同。
ntpdate 172.18.0.1
iptables -f
##安裝mariadb
#
yum install mariadb # # #运行初始化脚本对mysql进行 cd /usr/local/mysql/bin mysql_secure_installation #mysql初始化脚本,以下为每一项的翻译 先回车 是否设置root密码 输入密码 确认密码 是否设置匿名用户 是否允许root远程登录 删除test数据库 现在是否生效mysql主伺服器的設定
主從同步就必須開啟二進位日誌,修改設定檔總共有兩點。
1.server-id必須不能衝突
2.在主伺服器建立授權用戶,讓使用者有複製權限。
shell > vim /etc/my.cnf server-id=1 #节点id log-bin=mysql-bin #指定二进制日志前缀 relay-log=mysql-relay-bin #指定relaylog日志前缀 replicate-wild-ignore-table=mysql.% #排除要复制的表 replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.%在主伺服器行建立授權用戶,讓從伺服器有權限複製主伺服器資料。授權使用者應該匹配最小權限法則,允許連接的ip位址越精確越好。
musql > grant replication slave on *.* to 'slave_user'@'10.0.0.67' identified by '123456';
mysql從伺服器的設定
mysql的主從設定也只是server-id不同
shell > vim /etc/my.cnf server-id=2 #节点id log-bin=mysql-bin #指定二进制日志前缀 relay-log=mysql-relay-bin #指定relaylog日志前缀 replicate-wild-ignore-table=mysql.% #排除要复制的表 replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.%在從伺服器連mysql命令列配置,配置主節點的ip、使用者名稱密碼。最重要的是master_log_file、master_log_pos,這兩個項目是在主節點上查詢後的結果,要與主節點查詢結果相同。
# 在mysql主服务器中查询结果 mariadb [(none)]> show master status\g; *************************** 1. row *************************** file: master-log.000003 position: 18893845 binlog_do_db: binlog_ignore_db:
配置mysql從伺服器
mysql > change master to master_host='10.0.0.66', master_user='slave_user', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=106;`#查看主動同步情況
在從伺服器中查看主從同步情況。最後兩行的yes標誌著主從同步成功。也可以透過查詢表、庫甚至資料的方式查詢驗證主從同步情況。
mariadb [(none)]> show slave status\g; *************************** 1. row *************************** slave_io_state: waiting for master to send event master_host: 172.18.68.41 master_user: slave-user master_port: 3306 connect_retry: 60 master_log_file: master-log.000002 read_master_log_pos: 245 relay_log_file: mysql-relay-bin.000002 relay_log_pos: 530 relay_master_log_file: master-log.000002 slave_io_running: yes slave_sql_running: yes部署完畢
透過瀏覽器存取172.18.68.11/solo-2.4就能存取部署的solo博客,初次進入會讓你註冊一個使用者密碼,就是管理員帳號密碼。
至此不管nginx怎樣調度,tomcat都能將客戶端的session保存在redis中。可以透過windwos的redis管理軟體查看到在redis主從兩個資料庫都有了session資訊。
以上是如何透過Nginx+Tomcat+Redis實現持久性會話的詳細內容。更多資訊請關注PHP中文網其他相關文章!