安装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 "%r" %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 "%r" %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主页面中的一些选项是无法使用的
如图:

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 "%r" %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 "%r" %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 *

本文作者:张学衡(上海新炬中北团队)
本文来源:“IT那活儿”公众号





