一、利用Nginx反向代理Jpress+Tomcat

1、环境准备

服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
Jpress服务器 10.0.0.102 网站服务器1 Ubuntu2004
Jpress服务器 10.0.0.103 网站服务器2 Ubuntu2004
数据库 10.0.0.104 数据库服务器 Ubuntu2004
client 测试访问网站 Windows
2、安装jpress
# jpress服务器(10.0.0.102和10.0.0.103都需操作):
[root@ubuntu2004 ~]#bash install_tomcat.sh
[root@ubuntu2004 ~]#mkdir /data/jpress -p
[root@ubuntu2004 ~]#cd /data/jpress/ [root@ubuntu2004 jpress]#ls
jpress-v4.2.0.war
[root@ubuntu2004 jpress]#mv jpress-v4.2.0.war ROOT.war
[root@ubuntu2004 jpress]#chown -R tomcat. /data/jpress/
[root@ubuntu2004 jpress]#vim /usr/local/tomcat/conf/server.xml
#增加以下</Host>开始的三行
</Host>
<Host name="jpress.wang.org" appBase="/data/jpress" unpackWARs="true" autoDeploy="true">
</Host>
..... </Engine>
</Service>
</Server>
[root@ubuntu2004 jpress]#systemctl restart tomcat.service
# 如果想显示个性的tomcat版本,在端口行最后增加server=“****”
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" Server="Dayu-Jpress"/>

3、创建数据库
#数据库服务器(10.0.0.104):
[root@mysql ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password #增加此行 #bind-address = 127.0.0.1 #注释掉
#mysqlx-bind-address = 127.0.0.1 #注释掉 [root@mysql ~]#systemctl restart mysql.service
# 客户端测试连接

4、 配置Nginx反向代理
[root@nginx ~]#bash nginx_install.sh
[root@nginx ~]#mkdir /apps/nginx/conf/conf.d
[root@nginx ~]#vim /apps/nginx/conf/nginx.conf
....
include /apps/nginx/conf/conf.d/*.conf; #最后增加此行
}
[root@nginx ~]#vim /apps/nginx/conf/conf.d/wang.org.conf
upstream jpress {
server 10.0.0.102:8080;
server 10.0.0.103:8080;
}
server {
listen 80;
server_name jpress.wang.org;
location / {
proxy_pass http://jpress;
proxy_set_header host $http_host;
}
}
[root@nginx ~]#nginx -t
[root@nginx ~]#nginx -s reload
5、客户端测试

二、安装Memcached实现会话保持

1、环境准备
服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
Jpress服务器 10.0.0.105 网站服务器1 Ubuntu2004
Jpress服务器 10.0.0.106 网站服务器2 Ubuntu2004
数据库 10.0.0.104 数据库服务器 Ubuntu2004
client 测试访问网站 Windows
2、搭建Jpress
#Jpress(10.0.0.105、10.0.0.106):

[root@jpress2 ~]# mkdir /data/jpress1 -p
[root@jpress2 ~]# mv jpress-v4.2.0.war ROOT.war
[root@jpress2 ~]# mv ROOT.war /data/jpress1/
[root@jpress2 ~]# chown -R tomcat. /data/jpress1
[root@jpress2 ~]# bash install_tomcat.sh
[root@jpress2 ~]# vim /usr/local/tomcat/conf/server.xml
...
<Host name="jpress.wang.org" appBase="/data/jpress2" unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/opt" reloadable="true" /> #增加一个测试路径
</Host>
....
[root@jpress2 ~]# systemctl restart tomcat.service [root@jpress2 ~]# apt install memcached
[root@jpress2 ~]# vim /usr/local/tomcat/conf/context.xml
#以下内容增加在最后一行前
....
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.0.0.105:11211,n2:10.0.0.106:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context> #此行是最后一行 [root@jpress2 ~]# systemctl restart memcached.service
[root@jpress2 ~]# systemctl restart tomcat.service
3、创建数据库
#数据库服务器(10.0.0.104):
[root@mysql ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password #增加此行 #bind-address = 127.0.0.1 #注释掉
#mysqlx-bind-address = 127.0.0.1 #注释掉 [root@mysql ~]#systemctl restart mysql.service
# 客户端连接数据库
4、Nginx配置
[root@nginx ~]#mkdir /apps/nginx/ssl
[root@nginx ~]#cd /apps/nginx/ssl
[root@nginx ssl]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2650 -out ca.crt
[root@nginx ssl]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.wang.org.key -out www.wang.org.csr
[root@nginx ssl]#openssl x509 -req -days 3650 -in www.wang.org.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.wang.org.crt
[root@nginx ssl]#cat www.wang.org.crt ca.crt > www.wang.org.pem
[root@nginx ssl]#cd
[root@nginx ~]#vim /apps/nginx/conf/conf.d/wang.org.conf
upstream jpress {
server n1.wang.org:8080;
server n2.wang.org:8080;
}
server {
listen 80;
server_name jpress.wang.org;
# location / {
# proxy_pass http://jpress;
# proxy_set_header host $http_host;
#
# }
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name jpress.wang.org;
ssl_certificate /apps/nginx/ssl/www.wang.org.pem;
ssl_certificate_key /apps/nginx/ssl/www.wang.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location / {
proxy_pass http://jpress;
proxy_set_header host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
} [root@nginx ~]#vim /etc/hosts
10.0.0.101 jpress.wang.org
10.0.0.105 n1.wang.org
10.0.0.106 n2.wang.org [root@nginx ~]#nginx -s reload
5、安装Memcached保持会话
# 10.0.0.104、10.0.0.105:
[root@ubuntu2004 jpress]#apt install memcached -y
[root@ubuntu2004 jpress]#vim /etc/memcached.conf
-m 1000 #内存改为1000M,建议改为物理机内存的1/4---1/2
-l 0.0.0.0 #需改监听所有ip
[root@ubuntu2004 jpress]#systemctl restart memcached.service
6、客户端测试

三、利用Nginx反向代理部署博客系统Halo

1、环境准备
服务器 IP地址 作用 系统版本
Proxy代理服务器 10.0.0.101 负载均衡Nginx Web服务器 Ubuntu2004
halo服务器 10.0.0.102 博客服务器1 Ubuntu2004
halo服务器 10.0.0.103 博客服务器2 Ubuntu2004
数据库+NFS服务器 10.0.0.104 数据库服务器+NFS服务器 Ubuntu2004
client 测试访问网站 Windows
#数据库服务器(10.0.0.104):
mysql> create database halodb character set utf8mb4 collate utf8mb4_bin;
mysql> create user halo@'10.0.0.%' identified by '123456';
mysql> grant all on halo.* to halo@'10.0.0.%';
mysql> flush privileges;
2、安装halo
# halo服务器(10.0.0.102、10.0.0.103):
[root@halo-server1 ~]#apt -y install openjdk-11-jdk #halo支持openjdk11以上,不推荐 Oracle 版本
[root@halo-server1 ~]#java -version
openjdk version "11.0.16" 2022-07-19
[root@halo-server1 ~]#useradd -m halo
[root@halo-server1 ~]#vim /etc/sudoers #增加sudo权限
halo ALL=(root) NOPASSWD: ALL
[root@halo-server1 ~]#passwd halo
[root@halo-server1 ~]#su - halo
[halo@halo-server1 ~]$mkdir ~/app
[halo@halo-server1 ~]$cd ~/app
[halo@halo-server1 app]$wget https://dl.halo.run/release/halo-1.5.4.jar -O halo.jar #下载并改名为halo.jar
[halo@halo-server1 app]$wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml #下载配置文件模板
[halo@halo-server1 app]$cd halo
[halo@halo-server1 halo]$vim application.yaml
server:
port: 8090 # Response data gzip.
compression:
enabled: true
#spring:
#datasource:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
#填写正确的数据库ip地址和用户名密码
url: jdbc:mysql://10.0.0.104:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: halo
password: 123456
...
halo: # Your admin client path is https://your-domain/{admin-path}
admin-path: admin # memory or level
cache: memory [halo@halo-server1 halo]$exit # 以下操作需要退回root用户操作
#下载service模板
[root@halo-server1 app]#wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
[root@halo-server1 app]#vim /etc/systemd/system/halo.service
[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target [Service]
Type=simple
User=halo #需改为运行halo的用户
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/app/halo.jar #需改为halo.jar的绝对路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog StandError=inherit [Install]
WantedBy=multi-user.target [root@halo-server1 app]#systemctl daemon-reload
[root@halo-server1 app]#systemctl restart halo.service
[root@halo-server1 app]#systemctl status halo.service
[root@halo-server1 app]#journalctl -n 20 -u halo #如果启动有问题,用这条命令查看日志排查

3、客户端测试连接
#浏览器输入http://10.0.0.103:8090   #这里的IP地址就是安装halo的服务器地址

4、配置NFS服务端
#NFS服务器设置(10.0.0.104):
[root@mysql ~]#apt install -y nfs-server
[root@mysql ~]#mkdir /data/halo -p
[root@mysql ~]#useradd -u 1001 halo #创建一个和客户端halo同ID的用户
[root@mysql ~]#chown halo. /data/halo
[root@mysql ~]#vim /etc/exports
/data/halo 10.0.0.0/24(rw,all_squash,anonuid=1001,anongid=1001) [root@mysql ~]#exportfs -r
[root@mysql ~]#exportfs -v

5、挂载NFS
# nfs客户端设置(10.0.0.102、10.0.0.103):
[root@halo-server1 app]#rsync -av app/* root@10.0.0.104:/data/halo/ #先拷贝一份到nfs服务器保留属性
[root@halo-server1 ~]#apt install -y nfs-common
[root@halo-server1 ~]#vim /etc/fstab
10.0.0.104:/data/halo /home/halo/app/ nfs _netdev 0 0
[root@halo-server1 ~]#mount -a
[root@halo-server1 ~]#systemctl restart halo.service
6、Nginx反向代理
[root@nginx ssl]#vim /apps/nginx/conf/conf.d/halo.wang.org.conf
upstream halo {
hash $remote_addr;
server 10.0.0.102:8090;
server 10.0.0.103:8090;
}
server {
listen 80;
server_name halo.wang.org;
client_max_body_size 1024m;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name halo.wang.org;
ssl_certificate /apps/nginx/ssl/www.wang.org.pem;
ssl_certificate_key /apps/nginx/ssl/www.wang.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
7、客户端访问测试

最新文章

  1. maven项目管理利器
  2. linux下动态库编译的依赖问题
  3. 教程-EhLib70的安装方法
  4. Apache 虚拟主机 VirtualHost 配置
  5. sec:authorize 标签 通过不通过权限例子
  6. oracle积累继续
  7. javaWeb学习总结(8)- JSP基础语法(2)
  8. PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
  9. 在 Angular 8 中,我们可以期待些什么
  10. vue cli使用融云实现聊天
  11. 2018年终总结之AI领域开源框架汇总
  12. python的日志配置
  13. 返回枚举中的desciption
  14. 【mysql】批量更新数据
  15. Java多线程系列4 线程交互(wait和notify方法)
  16. socket 断线重连
  17. Android相关概念
  18. ubuntu搭建discuz论坛
  19. Dubbo学习参考
  20. IE中的userData

热门文章

  1. 使用JMeter测试.Net5.0,.Net6.0框架下无数据处理的并发情况
  2. C#/VB.NET 创建PDF/UA文件
  3. Python自学教程8-数据类型有哪些注意事项
  4. 获取Windows正在运行的窗口进程
  5. 编译boost库的dll和lib
  6. 解决前端开发报错(SyntaxError: missing : after property id)的问题
  7. 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞
  8. Oracle_FDW 使用介绍
  9. KingbaseES 数据库Windows环境下注册数据库服务
  10. 将java的项目jar包打成镜像