暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Tomcat以及redis会话保持

IT那活儿 2024-07-19
277
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!

安装tomcat服务

tamcat的下载地址:https://tomcat.apache.org/download-90.cgi

1.1 安装tamcat服务,并启动

yum install java -y
mkdir soft
tar xf apache-tomcat-9.0.37.tar.gz -C soft/

ln -s soft/apache-tomcat-9.0.37/ soft/tomcat
/soft/tomcat/bin/startup.sh
tail -f /soft/tomcat/logs/catalina.out #日志文件

1.2 在浏览器访问10.0.0.7:8080进行测试

1.3 tamcat配置文件介绍说明

vim /soft/tomcat/conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--server表示的是一个Tomcat实例,可以通过本地8005端口关闭Tomcat-->
<Server port="8005" shutdown="SHUTDOWN">

<!--监听器、跳过-->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<!--全局资源-->
  <GlobalNamingResources>

  <!--Base认证模块、所有站点都能用 conf/tomcat-users.xml文件 -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />


  </GlobalNamingResources>


  <Service name="Catalina">
<!--Http连接器,处理http的请求与响应-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />


  <!--引擎-->
    <Engine name="Catalina" defaultHost="localhost">

  <!--调用Basic认证-->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>

      </Realm>

  <!--默认的虚拟主机站点-->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />


      </Host>
    </Engine>
  </Service>
</Server>


使用nginx配合tomcat实现简单的动静分离

注意:首先安装nginx。

2.1 例如将tamcat主页中小猫等图片用动静分离分离出来

cd /soft/tomcat/webapps/ROOT/
mv *.png /images/

2.2 此时在访问10.0.0.7:8080发现图片都变成叉子了

此时发现小猫不见了。

2.3 实现动静分离

1)编写配置文件

vim /etc/nginx/conf.d/www.tamcat.conf
server {
    listen 80;
    server_name www.tamcat.com;

    location / {
    proxy_pass http://127.XX.0.1:8080;
    }

    location ~* \.(png|gif|jpg)$ {
    root /images;
    }
}

2)给目录做授权管理,并重启nginx服务

chown -R nginx.nginx /images/

systemctl restart nginx

3)在windows所hosts解析,并进行访问(此时发现小猫又回来了

10.0.0.7  www.tamcat.com


tomcat的虚拟主机

3.1 添加配置文件(添加HOSTS主机---主机可以有多个

vim /soft/tomcat/conf/server.xml

<Host name="tomcat1.zhang.com"  appBase="/html/tomcat1"  #域名、以及站点目录
      unpackWARs="true" autoDeploy="true">


  <!--访问/tt这个uri,上/code/tt中获取资源页面-->
  <Context docBase="/code/tt" path="/tt" reloadable="true"/>

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs
         prefix="
tomcat1_access_log" suffix=".txt"  #每台主机的访问日志
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />


</Host>

3.2 创建站点目录

mkdir /html/tomcat1/ROOT -p
echo "tomcat1测试" >/html/tomcat1/ROOT/index.html
echo 123 >/code/tt/index.html

3.3 重启tomcat服务

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

3.4 使用system进行管理

1)编写配置文件

vim /usr/lib/systemd/system/tomcat.service

[Unit]

Description=Apache Tomcat Server

After=network.target remote-fs.target nss-lookup.target



[Service]

Type=forking

ExecStart=/soft/tomcat/bin/startup.sh

ExecStop=/soft/tomcat/bin/shutdown.sh



[Install]

WantedBy=multi-user.target

2)加载tomcat 文件,并启动

systemctl daemon-reload

systemctl start tomcat

systemctl enable tomcat

3.5 在windows做hosts解析,并在浏览器进行访问

1)配置解析

10.0.0.7 tomcat1.zhang.com

2)访问测试

tomcat1.zhang.com:8080

tomcat1.zhang.com:8080/tt


tomcat管理页面

如何才能访问以下页面。

4.1 tomcat主页面中的一些选项是无法使用的

如图:

4.2 编写配置文件

1)将图中的资源定义上用户以及密码,就可以访问其中的资源了

如图所示:

2)编写配置文件

vim /soft/tomcat/conf/tomcat-users.xml

44 <role rolename ="manager-gui"/>

45 <role rolename="admin-gui"/>

46 <user username="tomcat" password="123456" roles="admin-gui,manager-gui"/>

4.3 允许10网段访问该角色的资源

1)编写配置文件

vim /soft/tomcat/webapps/host-manager/META-INF/context.xml

20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />

vim /soft/tomcat/webapps/manager/META-INF/context.xml

20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1||10\.0\.0\.\d+" />

2)重启tomcat服务

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh


使用tomcat部署一个zrlog网站博客

5.1 安装数据库并配置数据库

yum install mariadb mariadb-server -y
systemctl start mariadb.service
mysqladmin -uroot password '123456'

create database zrlog charset utf8;
grant all on zrlog.* to zrlog@'%' identified by '123456';

5.2 配置tomcat虚拟主机

1)添加配置文件

<Host name="tomcat1.zrlog.com"  appBase="/html/zrlog"
      unpackWARs="true" autoDeploy="true">
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="zrlog_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />


</Host>

2)创建站点目录

mkdir /html/zrlog/ -p

5.3 下载zrlog包,放入指定的路径下即可

1)上传ROOT.war源码包:https://zrlog.com/

cd /html/zrlog

2)重启tomcat服务

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

3)在windows配置hists解析

10.0.0.7  tomcat1.zrlog.com

4)访问tomcat1.zrlog.com:8080,在web页面做一系列的配置此过程不再演示

5)为tomcat日志,获取HTTP的Header信息

pattern="%h %l %u %t &quot;%r&quot; %s %b %{User-Agent}i %{X-Forwarded-For}i" />


将tomcat拆分成集群

6.1 首先拆分nfs存储

1)在web01上先将图片进行备份

mv /html/zrlog/ROOT/attached/image/20200821/* /backup/

2)将所有web节点以及nfs存储下载nfs服务

yum install nfs-utils rpcbind -y

3)在nfs服务器进行如下配置

mkdir /data/html/zrlog -p
echo "/data/html/zrlog XXX.XX.1.0/24(rw,sync,anonuid=2020,anongid=2020,no_root_squash)" >>/etc/exports

groupadd -g 2020 www

useradd www -u 2020 -g 2020 -s /sbin/nologin

chown -R www /data/

systemctl start rpcbind nfs-server

systemctl enable rpcbind nfs-server

4)将共享目录进行挂载

groupadd www -g 2020

useradd www -u 2020 -g 2020 -s /sbin/nologin -M

mount -t nfs XXX.XX.1.31:/data/html/zrlog /html/zrlog/ROOT/attached/image/20200821/

mv /backup/* /html/zrlog/ROOT/attached/image/20200821/

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

6.2 拆分数据库

1)web节点配置

mysqldump -uroot -p123456 -A > /tmp/mysql.sql
scp -rp /tmp/mysql.sql root@172.XX.1.51:/tmp/

#编写配置文件
vim /html/zrlog/ROOT/WEB-INF/db.properties
user=zrlog

password=123456

jdbcUrl=jdbc\:mysql\://10.0.0.51\:3306/zrlog?characterEncoding\=UTF-8&allowPublicKeyRetrieval\=true&useSSL\=false&serverTimezone\=GMT

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

2)da01数据库服务器配置

yum install mariadb mariadb-server -y

systemctl start mariadb.service
mysqladmin -uroot password '123456'
mysql -uroot -p123456 </tmp/mysql.sql

6.3 增添多个web节点

1)将文件从web01推送到web02

scp -rp /html/ root@172.XX.1.8:/

scp -rp /soft/ root@172.XX.8:/

2)将共享目录进行挂载

groupadd www -g 2020

useradd www -u 2020 -g 2020 -s /sbin/nologin -M

mount -t nfs 172.XX.1.31:/data/html/zrlog /html/zrlog/ROOT/attached/image/20200821/

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

6.4 接入负载均衡

1)首先安装nignx

2)编写配置文件

vim tomcat.zrlog.conf

upstream zrlog {
    server 172.XX1.7:8080;
    server 172.XX.1.8:8080;
}

server {
    listen 80;
    server_name tomcat.zrlog.com;

    location / {
        proxy_pass http://zrlog;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

3)重启nginx,并在windows做hosts解析

输入http://tomcat1.zrlog.com:8080进行测试。

6.5 实现全站是红https

1)生成证书

mkdir /etc/nginx/ssl_key

cd /etc/nginx/ssl_key

openssl genrsa -idea -out server.key 2048

openssl req -days 365 -x509  -sha256  -nodes -newkey rsa:2048 -keyout server.key -out server.crt

2)编写配置文件

vim tomcat.zrlog.conf

upstream zrlog {
    server 172.XX.1.7:8080;
    server 172.XX.1.8:8080;
}

server {
    listen 443 ssl;
server_name tomcat.zrlog.com;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

    location / {
        proxy_pass http://zrlog;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

#强制将请求zrlog.oldxu.com:80端口的连接跳转到443端口
server {
    listen 80;
    server_name zrlog.oldxu.com;
    return 302 https://$server_name$request_uri;
}

3)以上配置文件访问流程


基于Redis实现会话保持

7.1 首先修改配置文件(所有web节点)

vim /soft/tomcat/conf/server.xml

<Host name="tomcat1.session.com"  appBase="/html/session"

     unpackWARs="true" autoDeploy="true">

</Host>

7.2 创建站点目录,并编写代码

mkdir /html/session/ROOT -p
vim /html/session/ROOT/index.jsp

<body>

<%

//HttpSession session = request.getSession(true);

System.out.println(session.getCreationTime());

out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");

out.println("Session created time is :" + session.getCreationTime()

+ "<br>");

%>

</body>

7.3 重启tomcat服务

sh /soft/tomcat/bin/shutdown.sh
sh /soft/tomcat/bin/startup.sh

7.4 配置负载均衡

upstream session {
    server 172.XX.1.7:8080;
    server 172.XX.1.8:8080;
}

server {
    listen 80;
    server_name tomcat.session.com;

    location / {
        proxy_pass http://session;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

7.5 重启nginx服务,并配置windows的hosts解析

systemctl restart nginx

7.6 安装redis并实现session共享

1)安装redis

yum install redis -y

2)编写配置文件

vim /etc/redis.conf

61 bind 127.X.0.1 172.16.1.51

480 requirepass 123456

3)启动redis服务

systemctl start redis

systemctl enable redis

7.7 配置会话保持

在web节点安装redis-manager工具。

下载地址:https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/3.0.1.1/tomcat-cluster-redis-session-manager.zip

1)进行解压安装

unzip tomcat-cluster-redis-session-manager.zip

cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/

cp tomcat-cluster-redis-session-manager/conf/* /soft/tomcat/conf/

2)编写配置文件,在最下面添加以下两行内容

vim /soft/tomcat/conf/context.xml

<Valve className="tomcat.request.session.redis.SessionHandlerValve" />

<Manager className="tomcat.request.session.redis.SessionManager" />

vim /soft/tomcat/conf/redis-data-cache.properties

6 redis.hosts=172.16.1.51:6379
9 redis.password=123456

3)重启tomcat服务

/soft/tomcat/bin/shutdown.sh
/soft/tomcat/bin/startup.sh


PHP网站实现会话保持

8.1 首先搭建一个网站

1)在所有web节点安装php服务

yum remove php-mysql php php-fpm php-common
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum clean all
yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
systemctl start php-fpm
systemctl enable php-fpm

2)在web节点下载源码文件,并进行解压

注:源码文件在度娘搜索phpmyadmin即可。

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip
unzip phpMyAdmin-5.0.2-all-languages.zip

mv phpMyAdmin-5.0.2-all-languages /html/phpmyadmin

3)修改站点目录下的源码文件,修改为连接数据库的地址

cd /html/phpmyadmin/
\cp config.sample.inc.php config.inc.php
vim /html/phpmyadmin/config.inc.php
32 $cfg['Servers'][$i]['host'] = '10.XX.0.51';

4)在web节点修改nginx配置文件

vim /etc/nginx/conf.d/www.php.conf

server {
   listen 80;
   server_name www.php.com;
   root /html/phpmyadmin;


   location / {
       index index.php;
   }


   location ~ \.php$ {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
   }
}

5)重启nginx服务

systemctl restart nginx

6)在db01数据库服务器登录数据库,创建对应的用户

mysql -uroot -p123456
grant all on *.* to 'all'@'%' identified by '123456';

8.2 接入负载均衡,并在windows配置hosts解析

1)编写配置文件

vim /etc/nginx/conf.d/www.php.conf

upstream php {
    server 172.XX.1.7:80;
    server 172.XX.1.8:80;
}

server {
    listen 80;
    server_name www.php.com;

    location / {
        proxy_pass http://php;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

重启nginx服务:

systemctl restart nginx

2)在windows配置hosts解析

10.0.0.5 www.php.com

8.3 添加redis会话保持

1)在db01上安装redis并启动

yum install redis -y
systemctl start redis

systemctl enable redis

2)在db01数据库服务器编写配置文件

vim /etc/redis.conf
61 bind 127.0.0.1 172.XX.1.51
480 requirepass 123456

3)在所有web节点修改php配置文件

vim /etc/php.ini

1231 session.save_handler = redis
1232 session.save_path = "tcp://10.0.0.51:6379?auth=123456"

vim /etc/php-fpm.d/www.conf  #将如下两行进行注释:

395 ;php_value[session.save_handler] = files
396 ;php_value[session.save_path] = /var/lib/php/session

4)重启php服务

systemctl start php-fpm
systemctl enable php-fpm

5)最后在浏览器对应的网址,连续点击刷新,查看效果

在网页查看session是否变化:

将网页的session和redis中的session进行对照,查看是否一致:

redis-cli
auth 123456
keys *


END


本文作者:张学衡(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论