当前位置: 首页 > ai >正文

Linux项目部署全攻略:从环境搭建到前后端部署实战

Linux项目部署全攻略:从环境搭建到前后端部署实战

注:根据黑马程序员javaweb+AI视频课程总结
视频地址
详细讲义地址
在这里插入图片描述

一、Linux基础入门:为什么选择Linux?

要成为一名Java开发工程师,掌握Linux是企业级开发的必备技能。主流操作系统中,Linux在服务器领域凭借安全稳定、免费开源、高占有率的特性占据主导地位(如表格所示)。

操作系统特点应用场景
Windows用户基数大桌面办公
macOS体验流畅设计开发
Linux安全稳定、免费开源服务器部署

Linux系统分为内核版(Linus团队维护)和发行版(厂商扩展),常见发行版包括Ubuntu(桌面友好)、CentOS(企业级首选)、RedHat(付费稳定版)等。对于开发者而言,选择CentOS进行学习和部署最为合适。
在这里插入图片描述

二、开发环境搭建:虚拟机与远程连接

(一)虚拟机安装:VMware快速入门

  1. 安装步骤
    • 下载VMware安装包,双击执行“下一步”完成安装。
    • 安装完成后,通过“虚拟网络编辑器”配置NAT模式,设置子网IP为192.168.100.0
      在这里插入图片描述

在这里插入图片描述

  1. 挂载Linux系统
    • 首先解压CentOS镜像文件,双击.vmx文件导入虚拟机。
    • 启动虚拟机时选择“我已移动该虚拟机”,登录账号为root,密码1234(输入不显示)。

(二)远程连接:FinalShell高效管理

通过SSH工具远程操作Linux是开发常态,推荐使用FinalShell(免费、功能强大):

  1. 安装完成后,新建SSH连接,配置IP192.168.100.128、用户名root、密码1234
  2. 连接成功后,即可通过图形化界面执行命令,支持文件上传、终端分屏等功能。
    在这里插入图片描述

三、Linux核心操作:从目录到命令的全面掌握

(一)目录结构:树形结构的哲学

在这里插入图片描述
在这里插入图片描述

Linux以/为根目录,采用树形结构组织文件,与Windows盘符逻辑完全不同。关键目录作用如下:

目录功能
/bin存放可执行文件
/etc存储系统配置
/home用户文件主目录
/var运行时数据(如日志)
/usr系统应用程序

(二)常用命令:效率工具集

  1. 目录操作

    • ls -al:查看目录所有文件(含隐藏文件)及详细信息。
    • cd ..:切换到上级目录;cd ~:回到用户主目录。
    • mkdir -p itcast/test:递归创建多层目录。
  2. 文件操作

    • cat -n file:显示文件内容并编号;more file:分页查看大文件。
    • tail -f log.txt:动态监控日志文件末尾内容。
  3. 拷贝移动

    • cp -r source dest:递归复制目录;mv file new_name:重命名或移动文件。
  4. 打包压缩

    • tar -zcvf package.tar.gz dir:打包并压缩目录;tar -zxvf package.tar.gz -C /usr/local:解压到指定目录。
  5. 文本编辑

    • vim编辑器三模式:
      • 命令模式(默认):移动光标、删除行(dd)、进入插入模式(i/a/o)。
      • 插入模式:编辑文本,按ESC返回命令模式。
      • 底行模式:保存退出(:wq)、查找(/keyword)、显示行号(:set nu)。

四、软件安装实战:JDK、MySQL、Nginx

(一)JDK安装:二进制包快速部署

  1. 上传解压:将从官网下载的jdk-17.0.10_linux-x64_bin.tar.gz上传至/root,解压到/usr/local
  2. 配置环境变量
    vim /etc/profile
    export JAVA_HOME=/usr/local/jdk-17.0.10
    export PATH=$JAVA_HOME/bin:$PATH
    source /etc/profile  # 使配置生效
    
  3. 验证java -version显示版本信息即安装成功。

(二)MySQL安装:从依赖到远程访问

  1. 卸载冲突组件
    rpm -qa | grep mariadb  # 检查是否有MariaDB
    rpm -e --nodeps mariadb-libs-xxx  # 强制卸载
    
  2. 解压配置:上传从官网下载的MySQL压缩包,解压后移动至/usr/local/mysql,配置环境变量并初始化:
    groupadd mysql && useradd -r -g mysql -s /bin/false mysql
    mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    
  3. 远程访问配置
    • 创建远程用户并授权:
      CREATE USER 'root'@'%' IDENTIFIED BY '1234';
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
      FLUSH PRIVILEGES;
      
    • 开放防火墙端口或关闭防火墙:
      firewall-cmd --zone=public --add-port=3306/tcp --permanent
      firewall-cmd --reload
      

(三)Nginx安装:源码编译与前端部署

  1. 依赖安装
    yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc-c++
    
  2. 编译安装:上传从官网下载的Nginx源码包,解压后执行:
    ./configure --prefix=/usr/local/nginx
    make && make install
    
  3. 启动验证
    /usr/local/nginx/sbin/nginx  # 启动
    ps -ef | grep nginx  # 检查进程
    
    浏览器访问http://192.168.100.128,显示“Welcome to nginx!”即成功。
    在这里插入图片描述

五、项目部署:从前后端到后台运行

(一)前端部署:Nginx静态资源服务

  1. 准备工作:删除Nginx默认html目录下的文件,上传项目静态资源(如HTML、CSS、JS)。
  2. 配置修改:替换Nginx配置文件nginx.conf,重新加载配置:
    /usr/local/nginx/sbin/nginx -s reload
    
  3. 访问测试:浏览器输入服务器IP,强制刷新(Ctrl+F5)查看页面。

(二)后端部署:Spring Boot项目上线

  1. 配置修改:修改application.yml中的数据库连接为Linux服务器IP。
  2. 打包上传:使用Maven打包成JAR包,上传至Linux的/usr/local/app目录。
  3. 后台运行
    nohup java -jar project.jar &> tlias.log &  # 后台运行并输出日志
    ps -ef | grep project  # 查看进程
    kill -9 PID  # 停止进程
    

(三)阿里云OSS配置:环境变量管理

将OSS访问密钥配置为Linux系统环境变量:

echo "export OSS_ACCESS_KEY_ID=your_key_id" >> /etc/profile
echo "export OSS_ACCESS_KEY_SECRET=your_secret" >> /etc/profile
source /etc/profile  # 生效配置

六、总结:从入门到实战的核心路径

关键要点包括:

  • 多敲多练:Linux指令需通过实践加深记忆(如lscdvim)。
  • 环境隔离:开发用虚拟机,生产用物理机,确保配置一致性。
  • 日志与监控:使用tailnohup管理日志,pskill监控进程。

后续可进一步学习Docker容器化部署、Kubernetes集群管理等进阶技术,提升项目部署效率与稳定性。

附:常用命令速查表

类别命令说明
目录操作ls -al查看所有文件详情
cd ~返回用户主目录
mkdir -p递归创建目录
文件操作cat -n带行号显示文件
tail -f动态监控日志
tar -zxvf解压压缩包
软件管理yum install安装依赖
systemctl start mysql启动服务
firewall-cmd防火墙配置
项目部署nohup java -jar后台运行JAR包
nginx -s reload重载Nginx配置
http://www.xdnf.cn/news/7233.html

相关文章:

  • 计算机网络-HTTP与HTTPS
  • Java资源管理与防止泄漏:从SeaTunnel源码看资源释放
  • lowcoder数据库操作1:链接目标数据库
  • 深度学习在移动开发中的应用:实时图像分割实战
  • 从代码学习深度学习 - 用于预训练词嵌入的数据集 PyTorch版
  • WEB安全--SQL注入--MSSQL注入
  • OpenCV 环境搭建与概述
  • Golang的网络安全策略实践
  • TeaType 奶茶性格占卜机开发记录:一场俏皮的 UniApp 单页奇遇
  • 小红书的视频怎么保存没有水印(方法分享)
  • 云鼎入鼎系统:一站式电商管理解决方案
  • bisheng系列(一)- 本地部署(Docker)
  • Kotlin Compose Button 实现长按监听并实现动画效果
  • React Flow 中 Minimap 与 Controls 组件使用指南:交互式小地图与视口控制定制(含代码示例)
  • 精益数据分析(68/126):数据透视表实战与解决方案验证——从问卷分析到产品落地的关键跨越
  • liunx定时任务,centos定时任务
  • eMMC深度解析:嵌入式多媒体卡的硬件电路设计要点
  • 【氮化镓】偏置对GaN HEMT 单粒子效应的影响
  • [Java实战]Spring Boot整合Kafka:高吞吐量消息系统实战(二十七)
  • GStreamer (三)常⽤插件
  • 《AI革命重塑未来五年:医疗诊断精准度翻倍、自动驾驶事故锐减90%,全球科技版图加速变革》
  • 深入理解仿函数(Functors):从概念到实践
  • 如何提高嵌入式软件设计的代码质量
  • MATLAB中NLP工具箱支持聚类算法
  • Apidog MCP服务器,连接API规范和AI编码助手的桥梁
  • 设计模式-面试题
  • CVE-2015-2183 Zeuscart SQL注入漏洞
  • 留给王小川的时间不多了
  • 专题五:floodfill算法(扫雷游戏精讲)
  • 养生指南:重塑健康生活的实用方案