项目实战目标
Java 项目配置精通 :熟练掌握 Java 开发环境的搭建与配置,能根据项目需求调整 JDK 参数,确保项目运行在最佳状态。深入理解项目中各种配置文件的作用与配置方式,如 Spring 框架的配置文件,能灵活配置数据源、事务管理等关键组件,保证项目功能的正常实现。同时,能够根据项目规模和性能要求,优化 Java 项目的内存管理和线程池配置,提升项目的稳定性和运行效率。
Maven 编译打包熟练运用 :可以熟练运用 Maven 进行项目的依赖管理,准确在pom.xml
文件中引入所需的各种依赖包,解决依赖冲突问题。精通 Maven 的编译、测试、打包等生命周期操作,能够定制化 Maven 插件,实现项目的自动化构建。
Nginx 反向代理灵活配置 :熟练掌握 Nginx 的安装与配置,能根据项目需求配置 Nginx 的反向代理规则,实现对 Tomcat 服务器的负载均衡。根据业务场景,合理配置 Nginx 的缓存策略,提高网站的访问速度和响应性能。同时,能够利用 Nginx 的安全机制,如限制 IP 访问、防止恶意请求等,保障网站的安全稳定运行。
Tomcat 部署与优化 :可以独立完成 Tomcat 服务器的安装、启动与停止操作,掌握 Tomcat 的目录结构和配置文件的修改方法。根据项目的并发访问量,对 Tomcat 的线程池、连接器等参数进行优化,提升 Tomcat 的处理能力和响应速度。此外,能够在 Tomcat 上部署多个 Java 项目,并实现项目之间的隔离与资源合理分配。
DNS 搭建与域名访问实现 :学会搭建 DNS 服务器,掌握域名解析的原理和配置方法,能够将域名正确解析到对应的服务器 IP 地址。在搭建过程中,理解 DNS 的正向解析和反向解析,熟练配置 A 记录、MX 记录等常见的 DNS 记录。通过完成 DNS 搭建,实现通过域名便捷访问网站,提升网站的可用性和用户体验。
基本环境配置 1.需要一台安装好的rocky linux8.9操作系统
Rocky-8.9-x86_64-minimal.iso
2.添加2个网卡
3.开机后修改网卡规则
1 2 3 4 5 6 7 8 9 ]# vim /etc/default/grub ……..此处省略一万字 GRUB_CMDLINE_LINUX="……quiet net.ifnames=0 biosdevname=0" ……此处省略一万字 ]# grub2-mkconfig -o /boot/grub2/grub.cfg ]# reboot ]# ifconfig | head -2 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.81.132 netmask 255.255.255.0 broadcast 192.168.81.255
4.修改虚拟网络编辑器
5.把多余的网卡删除,重新添加网卡
1 2 3 4 5 6 ~]# nmcli connection show ~]# nmcli connection delete 网卡名 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0 ~]# nmcli connection add type ethernet ifname eth1 con-name eth1 ~]# nmcli connection show ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
6.使用脚本修改IP地址和主机名
1 2 3 4 5 6 7 8 9 ~]# vim /usr/bin/sethost # !/bin/bash nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.$1/24 ipv4.gateway 192.168.99.2 autoconnect yes nmcli connection up eth1 nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.88.$1/24 autoconnect yes nmcli connection up eth0 hostnamectl set-hostname $2 echo "nameserver 192.168.99.2" >> /etc/resolv.conf ~]# chmod +x /usr/bin/sethost
7.通过执行sethost把当前模板机的IP改为192.168.88.3和192.168.99.3
1 ~]# sethost 3 localhost.localdomain
8.关闭selinux
1 2 ~]# vim /etc/selinux/config SELINUX=permissive
9.卸载防火墙
1 ~]# yum -y remove firewalld
机器配置
主机名
IP地址
nginx
192.168.88.10
tomcat01
192.168.88.100
dns
192.168.88.40
部署tomcat01 1.从模板机克隆出一台tomcat01
2.修改IP和主机名
1 ~]# sethost 100 tomcat01
3.从课件材料中把tomcat上传到tomcat01机器上
apache-tomcat-8.0.30.tar.gz
4.安装jdk
1 ~]# yum -y install java-1.8.0-openjdk
5.解压tomcat
1 ~]# tar -xf apache-tomcat-8.0.30.tar.gz
6.把tomcat运行起来
1 2 ~]# cd /root/apache-tomcat-8.0.30/binbin]# ./startup.sh
7.验证tomcat是否启动成功
1 2 bin]# ss -antlup | grep 8080 tcp LISTEN 0 100 *:8080 *:* users:(("java",pid=24218,fd=50))
8.浏览器访问验证
MAVEN的安装 1.核心概念
项目对象模型(POM) :Maven 使用pom.xml
文件来描述项目的结构、配置信息、依赖关系等。POM 是 Maven 的核心,它包含了项目的基本信息(如项目名称、版本、描述等)、依赖管理、插件配置以及构建生命周期等内容。通过 POM 文件,Maven 可以了解项目的需求并执行相应的操作。
约定优于配置 :Maven 遵循 “约定优于配置” 的原则,为项目提供了一套标准的目录结构和构建流程。例如,源代码通常放在src/main/java
目录下,测试代码放在src/test/java
目录下,编译后的类文件会生成在target
目录中。这种约定使得开发者无需手动配置每个细节,减少了配置文件的复杂性,提高了开发效率。
2.主要功能
依赖管理 :在开发项目时,往往需要使用到各种第三方库,Maven 可以帮助我们自动下载和管理这些依赖。在pom.xml
文件中,只需添加相应依赖的坐标(包括groupId
、artifactId
和version
),Maven 就会从远程仓库(如 Maven 中央仓库)下载所需的库及其依赖项,并将它们添加到项目的类路径中。例如:
1 2 3 4 5 6 7 8 <dependencies > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <version > 4.13.2</version > <scope > test</scope > </dependency > </dependencies >
项目构建 :Maven 定义了一套标准的构建生命周期,包括清理、编译、测试、打包、部署等阶段。开发者可以使用简单的命令来执行这些阶段的操作。例如,mvn clean
用于清理项目生成的文件,mvn compile
用于编译源代码,mvn package
用于将项目打包成 JAR 或 WAR 文件等。每个阶段都可以绑定相应的插件来完成特定的任务。
插件机制 :Maven 的插件是其强大功能的重要组成部分,插件可以扩展 Maven 的功能,完成各种特定的任务。例如,maven-compiler-plugin
用于编译 Java 代码,maven-surefire-plugin
用于运行单元测试,maven-war-plugin
用于打包 Web 应用。开发者可以根据项目的需求选择合适的插件,并在pom.xml
文件中进行配置。
3.优势
提高开发效率 :通过自动化依赖管理和构建过程,减少了开发者手动下载和配置依赖的时间,同时标准化的构建流程使得项目的构建更加简单和可靠。
项目结构统一 :遵循约定的项目目录结构,使得团队成员之间的协作更加方便,新成员也能快速上手项目。
便于版本管理 :Maven 对依赖库的版本进行精确管理,避免了不同版本之间的冲突问题,确保项目的稳定性。
4.应用场景
Maven 适用于各种规模的 Java 项目,无论是小型的个人项目还是大型的企业级项目。它可以帮助开发者更好地管理项目的依赖和构建过程,提高项目的可维护性和可扩展性。同时,Maven 也支持与其他开发工具(如 Eclipse、IntelliJ IDEA 等)集成,方便开发者在开发环境中使用。
5.把资料中的apache-maven-3.6.3-bin.tar.gz上传到tomcat01机器上
6.解压apache-maven-3.6.3-bin.tar.gz
1 2 ~]# tar -xf apache-maven-3.6.3-bin.tar.gz ~]# mv apache-maven-3.6.3 /usr/local/maven
7.安装Java依赖
1 ~]# yum -y install java-devel
8.修改镜像地址,在第158行下添加
1 2 3 4 5 6 7 ~]# vim /usr/local/maven/conf/settings.xml <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
9.检查maven版本
1 2 ~]# /usr/local/maven/bin/mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
tomcat01部署师说CMS项目 1.把资料中的cms.tar.gz上传到tomcat01机器上
2.解压cms.tar.gz
1 2 3 4 ~]# tar -xf cms.tar.gz ~]# cd CMS/ CMS]# ls doc LICENSE pom.xml README.md shishuocms.properties sql src webdefault.xml
3.通过maven把CMS编译打包
1 2 3 4 5 6 7 8 9 10 ~]# cd CMS/CMS]# /usr/local/maven/bin/mvn clean package 最终出现如下代表打包成功 [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:20 min [INFO] Finished at: 2025-02-25T22:17:03-05:00 [INFO] ------------------------------------------------------------------------
4.这时候多了一个目录:target
1 2 3 4 5 CMS]# ls dist doc LICENSE pom.xml README.md shishuocms.properties sql src target webdefault.xmlCMS]# cd target/target]# ls antrun classes generated-sources maven-archiver maven-status shishuocms-2.0.1 shishuocms-2.0.1.war
5.将shishuocms-2.0.1.war拷贝到tomcat的webapps目录中
1 2 3 4 5 # 停掉tomcat target]# /root/apache-tomcat-8.0.30/bin/shutdown.sh # 删除tomcat下的webapps中的ROOT target]# rm -rf /root/apache-tomcat-8.0.30/webapps/ROOTtarget]# cp shishuocms-2.0.1.war /root/apache-tomcat-8.0.30/webapps/ROOT.war
6.启动tomcat
1 target]# /root/apache-tomcat-8.0.30/bin/startup.sh
7.验证tomcat启动是否成功
1 2 3 target]# ss -antlup | grep 8080 tcp LISTEN 0 100 *:8080 *:* users:(("java",pid=25168,fd=50))
8.发现tomcat启动成功,我们浏览器访问一下,发现报错
9.报错原因是连不上数据库,那我们看看一下CMS中的数据库配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 CMS]# vim src/main/resources/shishuocms.properties # 超级管理员 shishuocms.admin=shishuocms# 师说存储方式(server | ace) shishuocms.storage=ace# 数据库配置 jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/shishuocms?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=12345678 jdbc.initialPoolSize=2 jdbc.minPoolSize=2 jdbc.maxPoolSize=5
10.接下来安装数据库
1 2 3 ~]# yum install -y mariadb-server ~]# systemctl start mariadb ~]# systemctl enable mariadb
11.把CMS中sql目录的install.sql导入到数据库中
1 CMS]# mysql < sql/install.sql
12.给root账号设置密码:12345678
1 2 3 CMS]# mysqladmin password New password: #接下来输入12345678 Confirm new password: #在输入一次12345678
13.然后我们刷新页面
点击登录
密码是多少呢,我们不知道密码。那么我们进入数据库中去查看CMS系统的登录密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 CMS]# mysql - p12345678 MariaDB [(none )]> show databases;+ | Database | + | information_schema | | mysql | | performance_schema | | shishuocms | + MariaDB [(none )]> use shishuocms; MariaDB [shishuocms]> show tables;+ | Tables_in_shishuocms | + | admin | | admin_folder | | article | | comment | | config | | folder | | guestbook | | headline | | media | | user | + MariaDB [shishuocms]> select * from admin;+ | adminId | name | password | createTime | + | 1 | shishuocms | 6158 f875bf826e15923779855b6eef2e | 2012 -08 -08 00 :00 :00 | +
16.发现密码是加密的,我们看不到,这时候,我使用123456明文加密后的密码去修改这个密码
1 2 3 4 5 6 7 8 [shishuocms]> update admin set password= 'e10adc3949ba59abbe56e057f20f883e' where adminId= 1 ; MariaDB [shishuocms]> select * from admin;+ | adminId | name | password | createTime | + | 1 | shishuocms | e10adc3949ba59abbe56e057f20f883e | 2012 -08 -08 00 :00 :00 | +
17.我们使用123456去登录
部署nginx 1.克隆一台nginx机器,修改IP和主机名
2.上传nginx-1.22.1.tar.gz源码
3.解压nginx包,安装源码编译环境
1 2 3 4 5 6 7 8 [root@nginx ~]# tar -xf nginx-1.22.1.tar.gz [root@nginx ~]# yum -y install gcc make pcre-devel [root@nginx ~]# cd nginx-1.22.1/ [root@nginx nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --without-http_gzip_module [root@nginx nginx-1.22.1]# make [root@nginx nginx-1.22.1]# make install [root@nginx nginx-1.22.1]# ls /usr/local/nginx/ conf html logs sbin
4.启动nginx和验证安装是否成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [root@nginx sbin]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam("nginx") failed 发现启动失败,因为没有nginx用户,需要创建用 [root@nginx sbin]# useradd nginx [root@nginx sbin]# /usr/local/nginx/sbin/nginx [root@nginx sbin]# curl 127.0.0.1 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
5.配置nginx反向代理到tomcat01
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf http { upstream tomcats { server 192.168.88.100:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcats; } } }
6.重新加载nginx配置
1 [root@nginx nginx]# /usr/local/nginx/sbin/nginx -s reload
7.浏览器访问http://192.168.88.10。出现CMS页面的样式出不来
8.通过浏览器检查发现问题
9.修改nginx的配置添加一个服务名为tomcat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@nginx nginx]# vim conf/nginx.conf [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf http { upstream tomcats { server 192.168.88.100:8080; } server { listen 80; server_name tomcats; #修改点 location / { proxy_pass http://tomcats; } } } [root@nginx nginx]# sbin/nginx -s reload
11.修改我们自己的windows中的hosts文件
C:\Windows\System32\drivers\etc\hosts
192.168.88.10 tomcats
12.通过服务名可以正常访问了
DNS服务器搭建 1.克隆一台机器,修改IP和主机名
2.安装dns相关软件包
1 [root@nds ~]# yum -y install bind bind-chroot
3.修改主配置文件
1 2 3 4 5 6 7 8 9 10 [root@nds ~]# vim /etc/named.conf# 把默认的options块内容删除 options { directory "/var/named"; #定义地址库文件存放路径 }; zone "shishuocms.com" IN { #定义负责的解析qcjy.cn域名 type master; #权威主DNS服务器 file "shishuocms.com.zone"; #地址库文件名称 };
4.建立地址库文件
1 2 3 4 5 6 [root@nds ~]# cd /var/named/ [root@nds named]# cp -p named.localhost shishuocms.com.zone [root@nds named]# vim shishuocms.com.zone NS server server A 192.168.88.40 www A 192.168.88.10
5.启动dns
1 2 systemctl start named systemctl enable named
6.nginx配置修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@nginx nginx]# vim conf/nginx.conf http { upstream tomcats { server 192.168.88.100:8080; } server { listen 80; server_name www.shishuocms.com; #修改点 location / { proxy_pass http://tomcats; } } } [root@nginx nginx]# sbin/nginx -s reload
7.在windows中添加dns配置
8.通过http://www.shishuocms.com访问