网站首页 > 文章精选 正文
学习Linux并掌握Java环境配置及Spring Boot项目部署是一个系统化的过程,以下是从零开始的详细指南,帮助你逐步掌握这些技能。
一、Linux基础入门
1. 安装Linux系统
- 选择发行版:推荐Ubuntu(适合新手)或CentOS(企业常用)。
- 安装方式:
- 虚拟机安装:使用VirtualBox或VMware安装。
- 物理机安装:制作启动U盘安装。
- 云服务器:购买阿里云、腾讯云等云服务器(推荐快速实践)。
2. 基础命令与操作
bash
# 文件管理
ls # 列出目录内容
cd /path # 切换目录
mkdir mydir # 创建目录
rm -rf mydir # 删除目录(谨慎使用)
cp file1 file2 # 复制文件
mv file1 newname # 重命名或移动文件
# 文本编辑
vim file.txt # 使用Vim编辑器(按i进入编辑,Esc退出,:wq保存)
nano file.txt # 更简单的文本编辑器
# 权限管理
chmod 755 file.sh # 修改文件权限(读/写/执行)
chown user:group file # 修改文件所有者
# 系统管理
top # 查看实时进程状态
ps -aux # 查看所有进程
sudo command # 以管理员权限执行命令
3. 软件包管理
- Ubuntu/Debian:
bash
sudo apt update # 更新软件源
sudo apt install package # 安装软件包
sudo apt remove package # 卸载软件包
- CentOS/RHEL:
bash
sudo yum install package # 安装软件包
sudo yum remove package # 卸载软件包
二、安装Java环境
1. 安装JDK
bash
# Ubuntu/Debian
sudo apt install openjdk-17-jdk # 安装OpenJDK 17
# CentOS
sudo yum install java-17-openjdk-devel
# 验证安装
java -version
javac -version
2. 配置环境变量
编辑 ~/.bashrc 或 /etc/profile:
bash
export JAVA_HOME=
/usr/lib/jvm/java-17-openjdk-amd64 # 根据实际路径修改
export PATH=$JAVA_HOME/bin:$PATH
使配置生效:
bash
source ~/.bashrc
三、安装常用软件
1. 数据库:MySQL
bash
# Ubuntu
sudo apt install mysql-server
sudo systemctl start mysql
sudo mysql_secure_installation # 安全配置
# CentOS
sudo yum install mysql-server
sudo systemctl start mysqld
2. 缓存:Redis
bash
sudo apt install redis-server # Ubuntu
sudo yum install redis # CentOS
sudo systemctl start redis
3. Web服务器:Nginx
bash
sudo apt install nginx # Ubuntu
sudo yum install nginx # CentOS
sudo systemctl start nginx
4. 构建工具:Maven/Gradle
bash
# Maven安装
sudo apt install maven # Ubuntu
sudo yum install maven # CentOS
# Gradle安装(手动)
wget https://services.gradle.org/distributions/gradle-7.5-bin.zip
unzip gradle-7.5-bin.zip
sudo mv gradle-7.5 /opt/
export PATH=/opt/gradle-7.5/bin:$PATH
四、Spring Boot项目部署
1. 打包项目
- 使用Maven或Gradle生成可执行JAR:
bash
mvn clean package # Maven
gradle build # Gradle
生成的JAR位于 target/ 或 build/libs/。
2. 上传文件到服务器
使用 scp 或SFTP工具(如FileZilla)上传文件:
bash
scp target/myapp.jar user@server_ip:/home/user/
3. 启动Spring Boot应用
bash
# 直接运行(测试环境)
java -jar myapp.jar
# 后台运行(生产环境)
nohup java -jar myapp.jar > app.log 2>&1 &
4. 配置Systemd守护进程(推荐)
创建服务文件
/etc/systemd/system/myapp.service:
ini
[Unit]
Description=My Spring Boot App
After=syslog.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /home/user/myapp.jar
Restart=always
[Install]
WantedBy=multi-user.target
启动服务:
bash
复制
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp # 开机自启
5. 配置Nginx反向代理
编辑
/etc/nginx/sites-available/myapp:
nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080; # Spring Boot默认端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用配置并重启Nginx:
bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo systemctl restart nginx
五、进阶配置与维护
1. 日志管理
- 查看Spring Boot日志:
bash
journalctl -u myapp -f # 使用Systemd托管时
- 自定义日志路径:在 application.properties 中配置:
properties
logging.file.path=/var/log/myapp
2. 监控与优化
- JVM参数调优:
bash
java -jar -Xms512m -Xmx1024m myapp.jar
- 使用Prometheus + Grafana 监控应用指标。
3. 安全加固
- 配置防火墙:
bash
sudo ufw allow 80/tcp # Ubuntu
sudo firewall-cmd --permanent --add-port=80/tcp # CentOS
- 使用SSH密钥登录,禁用密码登录。
六、常见问题排查
- 端口冲突:
bash
netstat -tuln | grep 8080 # 查看端口占用
kill -9 <PID> # 结束进程
- 权限问题:
bash
sudo chown -R user:user /path/to/app # 修改目录所有者
- 服务启动失败:
bash
journalctl -u myapp -xe # 查看详细日志
通过以上步骤,你已掌握Linux基础操作、Java环境搭建及Spring Boot项目部署的核心技能。接下来可深入学习Shell脚本、Docker容器化部署、CI/CD流水线等进阶内容!
- 上一篇: 深入解析Java虚拟机(JVM)底层原理
- 下一篇: Kubernetes架构最全详解(图文全面总结)
猜你喜欢
- 2025-04-23 深入解析Java虚拟机(JVM)底层原理
- 2025-04-23 性能优越的轻量级日志收集工具,微软、亚马逊都在用
- 2025-04-23 JVM性能分析工具:Jstack
- 2025-04-23 JVM常用参数自查笔记
- 2025-04-23 Java性能调优实用指南
- 2025-04-23 常见的JVM参数配置
- 2025-04-23 JVM参数配置实战手册:从入门到生产级调优
- 2025-04-23 聊聊JVM如何调优
- 2025-04-23 性能测试之网络分析
- 2025-04-23 Java性能调优实战:让程序跑得更快的秘密武器
- 04-23关于linux coreutils/sort.c源码的延展思考最小堆为什么不用自旋
- 04-23一文精通如何使用二叉树
- 04-23二叉树(Binary Tree)
- 04-23数据结构入门:树(Tree)详细介绍
- 04-23数据结构错题收录(六)
- 04-23Kubernetes原理深度解析:万字图文全总结!
- 04-23一站式速查知识总结,助您轻松驾驭容器编排技术(水平扩展控制)
- 04-23kubectl常用删除命令
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)