前端部署

  • 部署流程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

项目部署

前端部署

  1. 将打包后的静态资源上传至Nginx的html目录
  2. 配置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 COMMITTED
    • REPEATABLE READ
    • SERIALIZABLE(最高)
  • 连接池:如HikariCP,避免频繁创建/销毁数据库连接

5. 前后端交互

  • RESTful API:基于HTTP的接口设计风格
    • GET:获取资源
    • POST:创建资源
    • PUT:更新资源
    • DELETE:删除资源
  • 跨域问题:前端请求不同域资源时,需后端配置CORS

6. 高并发处理

  • 缓存:Redis/Memcached,减少数据库压力
  • 负载均衡:Nginx/HAProxy,分发请求到多台服务器
  • 异步处理:消息队列(RabbitMQ/Kafka),解耦系统

7. 部署与运维

  • Docker:容器化部署,保证环境一致性
  • CI/CD:持续集成/持续部署,自动化测试和部署
  • 监控:Prometheus/Grafana,实时监控系统健康状态

💡 面试高频问题

  1. 为什么MySQL默认隔离级别是REPEATABLE READ?
  2. Spring Boot自动配置原理是什么?
  3. Nginx如何实现负载均衡?
  4. 什么是CAP理论?分布式系统如何权衡?
  5. 说说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) → 底行模式(😃

vim filename

ESC

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

项目部署

前端部署

  1. 将打包后的静态资源上传至Nginx的html目录
  2. 配置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 COMMITTED
    • REPEATABLE READ
    • SERIALIZABLE(最高)
  • 连接池:如HikariCP,避免频繁创建/销毁数据库连接

5. 前后端交互

  • RESTful API:基于HTTP的接口设计风格
    • GET:获取资源
    • POST:创建资源
    • PUT:更新资源
    • DELETE:删除资源
  • 跨域问题:前端请求不同域资源时,需后端配置CORS

6. 高并发处理

  • 缓存:Redis/Memcached,减少数据库压力
  • 负载均衡:Nginx/HAProxy,分发请求到多台服务器
  • 异步处理:消息队列(RabbitMQ/Kafka),解耦系统

7. 部署与运维

  • Docker:容器化部署,保证环境一致性
  • CI/CD:持续集成/持续部署,自动化测试和部署
  • 监控:Prometheus/Grafana,实时监控系统健康状态

💡 面试高频问题

  1. 为什么MySQL默认隔离级别是REPEATABLE READ?
  2. Spring Boot自动配置原理是什么?
  3. Nginx如何实现负载均衡?
  4. 什么是CAP理论?分布式系统如何权衡?
  5. 说说Redis的持久化机制(RDB/AOF)?
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐