网站首页 > 教程文章 正文
学习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流水线等进阶内容!
猜你喜欢
- 2025-05-03 用Arduino mega2560及Ethernet扩展板做一个web简易服务器
- 2025-05-03 不买光盘 不用下载 Stadia:游戏要云起来
- 2025-05-03 linux命令 - fuser、lsof、pidof学习
- 2025-05-03 Linux与windows共享文件的神器:samba
- 2025-05-03 SpringBoot数据校验与优雅处理详解
- 2025-05-03 用活firewalld防火墙之service(防火墙运行命令)
- 2025-05-03 深度剖析 Spring Cloud Eureka 底层实现原理
- 2025-05-03 分享一下面试被问了负载均衡的这些问题
- 2025-05-03 一分钟了解SpringCloud中的ribbon到底是什么,原理是啥?
- 2025-05-03 内存最大,最省电NAS装机:34瓦128GB内存,14盘位NAS设置教程
- 最近发表
-
- 一课译词:一刀两断(一刀两断成语解释)
- 核心短语break up用法解析(breakd短语)
- HTML+CSS 实现商品图片列表放大视觉效果 复制完整代码即可马上调用
- 前端实现右键自定义菜单(前端实现右键自定义菜单怎么设置)
- Python中docx与docxcompose批量合并多个Word文档并添加分页符
- Java 将Excel转为XML(java将xls转换成xlsx)
- jq+ajax+bootstrap改了一个动态分页的表格
- css兼容性问题及一些常见问题汇总大全,赶快收藏!
- Java 的业务逻辑验证框架 之-fluent-validator
- 小程序cover-view踩坑系列2(微信小程序overflow)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)