【黑马JavaWeb+AI知识梳理】Web部署01 - Linux
类型特点代表内核版由Linux核心团队开发维护,免费开源,负责硬件控制发行版基于内核版扩展,厂商开发维护,有收费和免费版本类型特点代表内核版由Linux核心团队开发维护,免费开源,负责硬件控制发行版基于内核版扩展,厂商开发维护,有收费和免费版本。
前端部署
-
部署流程:
build后将生成的静态资源文件放入Nginx的html目录中 -
Nginx配置示例:
server { listen 80; server_name localhost; client_max_body_size 10m; location / { root html; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { rewrite ^/api/(.*) $1 break; proxy_pass http://localhost:8080; } }
Linux系统概述
系统类型
| 类型 | 特点 | 代表 |
|---|---|---|
| 内核版 | 由Linux核心团队开发维护,免费开源,负责硬件控制 | Linux Kernel |
| 发行版 | 基于内核版扩展,厂商开发维护,有收费和免费版本 | Ubuntu, CentOS, RedHat |
常见Linux发行版
| 发行版 | 特点 | 适用场景 |
|---|---|---|
| Ubuntu | 桌面应用为主,免费 | 开发者、个人用户 |
| RedHat | 企业级,收费 | 企业服务器 |
| CentOS | RedHat社区版,免费 | 企业服务器(替代RedHat) |
| Fedora | 功能完备、快速更新,免费 | 开发者 |
| openSUSE | 对个人完全免费、图形界面华丽 | 个人用户 |
| 红旗Linux | 国产,北京中科红旗开发 | 国内企业 |
Linux目录结构
核心目录说明
| 目录 | 说明 |
|---|---|
/ |
根目录,所有目录的顶点 |
/bin |
二进制可执行文件 |
/boot |
系统引导文件 |
/dev |
设备文件 |
/etc |
系统配置文件(重要!) |
/home |
用户家目录 |
/lib |
程序运行所需的共享库 |
/opt |
额外安装的可选应用 |
/root |
超级用户(管理员)目录 |
/sbin |
系统管理命令(root专用) |
/tmp |
临时文件 |
/usr |
系统应用程序(重要!) |
/var |
运行时变化的数据(日志等) |
💡 路径区别:
/itheima是绝对路径(从根目录开始)itheima是相对路径(从当前目录开始)
Linux常用命令
目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
ls [-al] |
列出目录内容 | ls -l (详细列表) |
cd |
切换目录 | cd /usr/local |
mkdir [-p] |
创建目录 | mkdir -p itcast/test |
文件操作
| 命令 | 说明 | 示例 |
|---|---|---|
cat |
显示文件内容 | cat /etc/profile |
more |
分页显示文件 | more /etc/profile |
head [-n] |
显示文件开头 | head -20 1.log |
tail [-nf] |
显示文件末尾 | tail -f /var/log/nginx/access.log |
拷贝移动
| 命令 | 说明 | 示例 |
|---|---|---|
cp [-r] |
复制文件/目录 | cp -r itcast/ ./itheima/ |
mv |
移动/重命名 | mv hello.txt hi.txt |
💡 mv关键点:
mv source dest:如果dest是已存在的目录 → 移动;否则 → 重命名
打包压缩
| 命令 | 说明 | 示例 |
|---|---|---|
tar -zcvf |
打包压缩 | tar -zcvf hello.tar.gz hello |
tar -zxvf |
解压 | tar -zxvf hello.tar.gz -C /usr/local |
文本编辑
| 命令 | 说明 |
|---|---|
vi/vim |
文本编辑工具(vim功能更强大) |
| 操作模式: 命令模式 → 插入模式(i/a/o) → 底行模式(😃 |
查找命令(补充)
| 命令 | 说明 | 示例 |
|---|---|---|
find |
按条件查找文件 | find / -name *.log |
grep |
文本内容搜索 | grep "error" /var/log/nginx/error.log |
which |
查找命令路径 | which java |
whereis |
查找命令及手册 | whereis nginx |
locate |
快速查找文件(需先updatedb) |
locate nginx.conf |
ps -ef |
查看进程 | `ps -ef |
💡 技巧:
ps -ef \| grep java:通过管道符|将进程列表传给grep过滤
软件安装
安装方式对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| 二进制发布包 | 直接解压使用 | 需手动配置环境变量 |
| rpm | 系统级管理 | 无法自动解决依赖 |
| yum | 自动解决依赖 | 需要网络连接 |
| 源码编译 | 最新版本,可定制 | 编译过程复杂 |
关键软件安装要点
JDK安装
# 解压
tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local
# 配置环境变量(/etc/profile)
export JAVA_HOME=/usr/local/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
# 生效配置
source /etc/profile
MySQL安装
# 初始化数据库
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 启动服务
systemctl start mysql
# 重置root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
CREATE USER 'root'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
Nginx安装
# 安装依赖
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 配置编译安装
./configure --prefix=/usr/local/nginx
make
make install
项目部署
前端部署
- 将打包后的静态资源上传至Nginx的
html目录 - 配置Nginx反向代理(如上文配置示例)
后端部署
# 运行jar包(后台运行)
nohup java -jar tlias-app.jar &> tlias.log &
# 查看进程
ps -ef | grep tlias-app
💡 关键命令:
nohup:使进程在后台运行,即使终端关闭也不停止&>:重定向标准输出和错误输出到日志文件
防火墙操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看状态 | systemctl status firewalld |
|
| 关闭防火墙 | systemctl stop firewalld |
仅临时关闭 |
| 永久关闭 | systemctl disable firewalld |
重启后生效 |
| 开放端口 | firewall-cmd --zone=public --add-port=8080/tcp --permanent |
|
| 重载配置 | firewall-cmd --reload |
使端口配置生效 |
⚠️ 注意:生产环境建议保留防火墙,仅开放必要端口
补充章节:JavaWeb面试核心知识点
1. JVM与内存管理
- JVM:Java虚拟机,负责执行Java字节码,实现"一次编写,到处运行"
- 内存区域:
- 堆:存放对象实例(GC主要区域)
- 栈:存放局部变量和方法调用
- 方法区:存储类信息、常量、静态变量
- GC:垃圾回收机制,自动回收不再使用的对象
2. Servlet与Web容器
-
Servlet:JavaWeb基础组件,处理HTTP请求/响应
-
生命周期:
-
Web容器:Tomcat、Jetty等,负责管理Servlet生命周期
3. Spring框架核心
- IoC:控制反转,由容器管理对象创建和依赖
- DI:依赖注入,通过构造函数/Setter注入依赖
- AOP:面向切面编程,实现日志、事务等横切关注点
4. 数据库与事务
- ACID:原子性、一致性、隔离性、持久性
- 事务隔离级别:
READ UNCOMMITTED(最低)READ COMMITTEDREPEATABLE READSERIALIZABLE(最高)
- 连接池:如HikariCP,避免频繁创建/销毁数据库连接
5. 前后端交互
- RESTful API:基于HTTP的接口设计风格
GET:获取资源POST:创建资源PUT:更新资源DELETE:删除资源
- 跨域问题:前端请求不同域资源时,需后端配置CORS
6. 高并发处理
- 缓存:Redis/Memcached,减少数据库压力
- 负载均衡:Nginx/HAProxy,分发请求到多台服务器
- 异步处理:消息队列(RabbitMQ/Kafka),解耦系统
7. 部署与运维
- Docker:容器化部署,保证环境一致性
- CI/CD:持续集成/持续部署,自动化测试和部署
- 监控:Prometheus/Grafana,实时监控系统健康状态
💡 面试高频问题:
- 为什么MySQL默认隔离级别是REPEATABLE READ?
- Spring Boot自动配置原理是什么?
- Nginx如何实现负载均衡?
- 什么是CAP理论?分布式系统如何权衡?
- 说说Redis的持久化机制(RDB/AOF)?# JavaWeb工程师Linux部署知识笔记
前端部署
-
部署流程:
build后将生成的静态资源文件放入Nginx的html目录中 -
Nginx配置示例:
server { listen 80; server_name localhost; client_max_body_size 10m; location / { root html; index index.html index.htm; try_files $uri $uri/ /index.html; } location ^~ /api/ { rewrite ^/api/(.*) $1 break; proxy_pass http://localhost:8080; } }
Linux系统概述
系统类型
| 类型 | 特点 | 代表 |
|---|---|---|
| 内核版 | 由Linux核心团队开发维护,免费开源,负责硬件控制 | Linux Kernel |
| 发行版 | 基于内核版扩展,厂商开发维护,有收费和免费版本 | Ubuntu, CentOS, RedHat |
常见Linux发行版
| 发行版 | 特点 | 适用场景 |
|---|---|---|
| Ubuntu | 桌面应用为主,免费 | 开发者、个人用户 |
| RedHat | 企业级,收费 | 企业服务器 |
| CentOS | RedHat社区版,免费 | 企业服务器(替代RedHat) |
| Fedora | 功能完备、快速更新,免费 | 开发者 |
| openSUSE | 对个人完全免费、图形界面华丽 | 个人用户 |
| 红旗Linux | 国产,北京中科红旗开发 | 国内企业 |
Linux目录结构
核心目录说明
| 目录 | 说明 |
|---|---|
/ |
根目录,所有目录的顶点 |
/bin |
二进制可执行文件 |
/boot |
系统引导文件 |
/dev |
设备文件 |
/etc |
系统配置文件(重要!) |
/home |
用户家目录 |
/lib |
程序运行所需的共享库 |
/opt |
额外安装的可选应用 |
/root |
超级用户(管理员)目录 |
/sbin |
系统管理命令(root专用) |
/tmp |
临时文件 |
/usr |
系统应用程序(重要!) |
/var |
运行时变化的数据(日志等) |
💡 路径区别:
/itheima是绝对路径(从根目录开始)itheima是相对路径(从当前目录开始)
Linux常用命令
目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
ls [-al] |
列出目录内容 | ls -l (详细列表) |
cd |
切换目录 | cd /usr/local |
mkdir [-p] |
创建目录 | mkdir -p itcast/test |
文件操作
| 命令 | 说明 | 示例 |
|---|---|---|
cat |
显示文件内容 | cat /etc/profile |
more |
分页显示文件 | more /etc/profile |
head [-n] |
显示文件开头 | head -20 1.log |
tail [-nf] |
显示文件末尾 | tail -f /var/log/nginx/access.log |
拷贝移动
| 命令 | 说明 | 示例 |
|---|---|---|
cp [-r] |
复制文件/目录 | cp -r itcast/ ./itheima/ |
mv |
移动/重命名 | mv hello.txt hi.txt |
💡 mv关键点:
mv source dest:如果dest是已存在的目录 → 移动;否则 → 重命名
打包压缩
| 命令 | 说明 | 示例 |
|---|---|---|
tar -zcvf |
打包压缩 | tar -zcvf hello.tar.gz hello |
tar -zxvf |
解压 | tar -zxvf hello.tar.gz -C /usr/local |
文本编辑
| 命令 | 说明 |
|---|---|
vi/vim |
文本编辑工具(vim功能更强大) |
| 操作模式: 命令模式 → 插入模式(i/a/o) → 底行模式(😃 |
查找命令(补充)
| 命令 | 说明 | 示例 |
|---|---|---|
find |
按条件查找文件 | find / -name *.log |
grep |
文本内容搜索 | grep "error" /var/log/nginx/error.log |
which |
查找命令路径 | which java |
whereis |
查找命令及手册 | whereis nginx |
locate |
快速查找文件(需先updatedb) |
locate nginx.conf |
ps -ef |
查看进程 | `ps -ef |
💡 技巧:
ps -ef \| grep java:通过管道符|将进程列表传给grep过滤
软件安装
安装方式对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| 二进制发布包 | 直接解压使用 | 需手动配置环境变量 |
| rpm | 系统级管理 | 无法自动解决依赖 |
| yum | 自动解决依赖 | 需要网络连接 |
| 源码编译 | 最新版本,可定制 | 编译过程复杂 |
关键软件安装要点
JDK安装
# 解压
tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local
# 配置环境变量(/etc/profile)
export JAVA_HOME=/usr/local/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
# 生效配置
source /etc/profile
MySQL安装
# 初始化数据库
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 启动服务
systemctl start mysql
# 重置root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
CREATE USER 'root'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
Nginx安装
# 安装依赖
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 配置编译安装
./configure --prefix=/usr/local/nginx
make
make install
项目部署
前端部署
- 将打包后的静态资源上传至Nginx的
html目录 - 配置Nginx反向代理(如上文配置示例)
后端部署
# 运行jar包(后台运行)
nohup java -jar tlias-app.jar &> tlias.log &
# 查看进程
ps -ef | grep tlias-app
💡 关键命令:
nohup:使进程在后台运行,即使终端关闭也不停止&>:重定向标准输出和错误输出到日志文件
防火墙操作
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看状态 | systemctl status firewalld |
|
| 关闭防火墙 | systemctl stop firewalld |
仅临时关闭 |
| 永久关闭 | systemctl disable firewalld |
重启后生效 |
| 开放端口 | firewall-cmd --zone=public --add-port=8080/tcp --permanent |
|
| 重载配置 | firewall-cmd --reload |
使端口配置生效 |
⚠️ 注意:生产环境建议保留防火墙,仅开放必要端口
补充章节:JavaWeb面试核心知识点
1. JVM与内存管理
- JVM:Java虚拟机,负责执行Java字节码,实现"一次编写,到处运行"
- 内存区域:
- 堆:存放对象实例(GC主要区域)
- 栈:存放局部变量和方法调用
- 方法区:存储类信息、常量、静态变量
- GC:垃圾回收机制,自动回收不再使用的对象
2. Servlet与Web容器
-
Servlet:JavaWeb基础组件,处理HTTP请求/响应
-
生命周期:
-
Web容器:Tomcat、Jetty等,负责管理Servlet生命周期
3. Spring框架核心
- IoC:控制反转,由容器管理对象创建和依赖
- DI:依赖注入,通过构造函数/Setter注入依赖
- AOP:面向切面编程,实现日志、事务等横切关注点
4. 数据库与事务
- ACID:原子性、一致性、隔离性、持久性
- 事务隔离级别:
READ UNCOMMITTED(最低)READ COMMITTEDREPEATABLE READSERIALIZABLE(最高)
- 连接池:如HikariCP,避免频繁创建/销毁数据库连接
5. 前后端交互
- RESTful API:基于HTTP的接口设计风格
GET:获取资源POST:创建资源PUT:更新资源DELETE:删除资源
- 跨域问题:前端请求不同域资源时,需后端配置CORS
6. 高并发处理
- 缓存:Redis/Memcached,减少数据库压力
- 负载均衡:Nginx/HAProxy,分发请求到多台服务器
- 异步处理:消息队列(RabbitMQ/Kafka),解耦系统
7. 部署与运维
- Docker:容器化部署,保证环境一致性
- CI/CD:持续集成/持续部署,自动化测试和部署
- 监控:Prometheus/Grafana,实时监控系统健康状态
💡 面试高频问题:
- 为什么MySQL默认隔离级别是REPEATABLE READ?
- Spring Boot自动配置原理是什么?
- Nginx如何实现负载均衡?
- 什么是CAP理论?分布式系统如何权衡?
- 说说Redis的持久化机制(RDB/AOF)?
更多推荐



所有评论(0)