项目一:师说CMS

项目实战目标

  1. Java 项目配置精通:熟练掌握 Java 开发环境的搭建与配置,能根据项目需求调整 JDK 参数,确保项目运行在最佳状态。深入理解项目中各种配置文件的作用与配置方式,如 Spring 框架的配置文件,能灵活配置数据源、事务管理等关键组件,保证项目功能的正常实现。同时,能够根据项目规模和性能要求,优化 Java 项目的内存管理和线程池配置,提升项目的稳定性和运行效率。
  2. Maven 编译打包熟练运用:可以熟练运用 Maven 进行项目的依赖管理,准确在pom.xml文件中引入所需的各种依赖包,解决依赖冲突问题。精通 Maven 的编译、测试、打包等生命周期操作,能够定制化 Maven 插件,实现项目的自动化构建。
  3. Nginx 反向代理灵活配置:熟练掌握 Nginx 的安装与配置,能根据项目需求配置 Nginx 的反向代理规则,实现对 Tomcat 服务器的负载均衡。根据业务场景,合理配置 Nginx 的缓存策略,提高网站的访问速度和响应性能。同时,能够利用 Nginx 的安全机制,如限制 IP 访问、防止恶意请求等,保障网站的安全稳定运行。
  4. Tomcat 部署与优化:可以独立完成 Tomcat 服务器的安装、启动与停止操作,掌握 Tomcat 的目录结构和配置文件的修改方法。根据项目的并发访问量,对 Tomcat 的线程池、连接器等参数进行优化,提升 Tomcat 的处理能力和响应速度。此外,能够在 Tomcat 上部署多个 Java 项目,并实现项目之间的隔离与资源合理分配。
  5. DNS 搭建与域名访问实现:学会搭建 DNS 服务器,掌握域名解析的原理和配置方法,能够将域名正确解析到对应的服务器 IP 地址。在搭建过程中,理解 DNS 的正向解析和反向解析,熟练配置 A 记录、MX 记录等常见的 DNS 记录。通过完成 DNS 搭建,实现通过域名便捷访问网站,提升网站的可用性和用户体验。

基本环境配置

1.需要一台安装好的rocky linux8.9操作系统

Rocky-8.9-x86_64-minimal.iso

2.添加2个网卡

企业微信截图\_17405355456068.png

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.修改虚拟网络编辑器

企业微信截图\_1740535935869.png

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/bin
bin]# ./startup.sh

7.验证tomcat是否启动成功

1
2
bin]# ss -antlup | grep 8080
tcp LISTEN 0 100 *:8080 *:* users:(("java",pid=24218,fd=50))

8.浏览器访问验证

企业微信截图\_17405379378002.png

MAVEN的安装

1.核心概念

  • 项目对象模型(POM):Maven 使用pom.xml文件来描述项目的结构、配置信息、依赖关系等。POM 是 Maven 的核心,它包含了项目的基本信息(如项目名称、版本、描述等)、依赖管理、插件配置以及构建生命周期等内容。通过 POM 文件,Maven 可以了解项目的需求并执行相应的操作。
  • 约定优于配置:Maven 遵循 “约定优于配置” 的原则,为项目提供了一套标准的目录结构和构建流程。例如,源代码通常放在src/main/java目录下,测试代码放在src/test/java目录下,编译后的类文件会生成在target目录中。这种约定使得开发者无需手动配置每个细节,减少了配置文件的复杂性,提高了开发效率。

2.主要功能

  • 依赖管理:在开发项目时,往往需要使用到各种第三方库,Maven 可以帮助我们自动下载和管理这些依赖。在pom.xml文件中,只需添加相应依赖的坐标(包括groupIdartifactIdversion),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.xml
CMS]# 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/ROOT
target]# 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启动成功,我们浏览器访问一下,发现报错

企业微信截图\_17405406151661.png

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.然后我们刷新页面

企业微信截图\_17405414108441.png

  1. 点击登录

企业微信截图\_17405414821800.png

  1. 密码是多少呢,我们不知道密码。那么我们进入数据库中去查看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 | 6158f875bf826e15923779855b6eef2e | 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去登录

企业微信截图\_17405419085014.png

部署nginx

1.克隆一台nginx机器,修改IP和主机名

1
~]# sethost 10 nginx

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页面的样式出不来

企业微信截图\_17405437468287.png

8.通过浏览器检查发现问题

企业微信截图\_1740543867521.png

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.通过服务名可以正常访问了

企业微信截图\_17405520836748.png

DNS服务器搭建

1.克隆一台机器,修改IP和主机名

1
~]# sethost 40 dns

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配置

企业微信截图\_1740556135888.png

企业微信截图\_17405561751315.png

8.通过http://www.shishuocms.com访问

企业微信截图\_17405567254732.png


项目一:师说CMS
http://example.com/2025/05/13/472dbb20140b4592b1bc723bd9bcb9ba/
作者
John Doe
发布于
2025年5月13日
许可协议