欢迎光临
我们一直在努力

【项目部署上线|第1篇】Linux 服务器基础命令和部署环境准备

前言

前面几个系列我们主要围绕 Java 后端开发展开,比如 Spring Boot、MyBatis、数据库、Redis、登录认证、缓存、文件上传、参数校验等内容。

这些内容解决的是“项目怎么写”的问题。

但是一个完整项目,不能只停留在本地运行。真正做项目时,还要考虑一个很重要的问题:项目怎么部署到服务器上。

所以从这一篇开始,我们进入新的系列:Linux + Docker 项目部署上线系列。

这个系列会从服务器基础命令开始,逐步讲到 Spring Boot 打包、Linux 运行 jar 包、Docker 部署 MySQL 和 Redis、Docker Compose 编排服务、Nginx 反向代理、前后端分离部署以及常见问题排查。

这一篇先打基础,主要学习:

  • 为什么后端项目部署离不开 Linux
  • 登录服务器的基本方式
  • Linux 常用目录
  • 文件和目录操作命令
  • 查看进程、端口和日志
  • 为后续部署项目做准备

  • 一、为什么部署项目要学 Linux

    我们平时开发 Spring Boot 项目,大多数是在 Windows 或 macOS 上运行。

    比如本地启动项目:

    mvn spring-boot:run

    或者在 IDEA 中直接点击启动按钮。

    但是项目真正上线时,通常会部署到 Linux 服务器上。常见原因有:

  • Linux 更适合服务器长期运行
  • 大多数云服务器默认使用 Linux
  • Docker、Nginx、MySQL、Redis 在 Linux 上部署更常见
  • 线上项目需要查看日志、端口、进程和配置文件
  • 后端开发人员必须具备基本服务器排查能力
  • 也就是说,Linux 不一定要一开始就学得很深,但至少要掌握部署项目常用命令。


    二、连接 Linux 服务器

    如果购买了云服务器,一般会拿到服务器公网 IP、用户名和密码。

    常见登录方式是 SSH。

    ssh root@服务器IP

    例如:

    ssh root@192.168.1.100

    如果是第一次连接,终端可能会提示是否继续连接,输入:

    yes

    然后输入服务器密码即可。

    文字说明

    这里的 root 是服务器用户名。

    实际开发中,不建议长期使用 root 用户直接部署项目,更推荐创建普通用户,再按需授权。

    不过学习阶段可以先使用 root,重点是把部署流程跑通。


    三、Linux 常用目录说明

    登录服务器后,可以先查看当前目录:

    pwd

    查看根目录下有哪些文件夹:

    ls /

    Linux 常见目录大概如下:

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── opt
    ├── root
    ├── usr
    ├── var
    └── tmp

    常用目录说明:

    目录说明
    /root root 用户的家目录
    /home 普通用户的家目录
    /etc 系统配置文件目录
    /usr 系统软件安装目录
    /opt 常用于安装第三方软件
    /var/log 系统日志目录
    /tmp 临时文件目录

    文字说明

    部署 Java 项目时,我比较推荐把项目放在:

    /opt

    比如:

    /opt/project
    /opt/project/backend
    /opt/project/logs

    这样结构比较清楚,也方便后期维护。


    四、创建项目部署目录

    我们先创建一个后面部署项目要用的目录。

    mkdir -p /opt/project/backend

    进入目录:

    cd /opt/project/backend

    查看当前目录:

    pwd

    查看目录内容:

    ls

    文字说明

    mkdir 用来创建目录。

    其中:

    -p

    表示如果上级目录不存在,就一起创建。

    比如 /opt/project 不存在时,执行:

    mkdir -p /opt/project/backend

    会自动创建完整目录。


    五、文件和目录常用命令

    1. 查看文件列表

    ls

    显示详细信息:

    ls -l

    显示隐藏文件:

    ls -a

    常用组合:

    ls -la


    2. 进入目录

    cd /opt/project/backend

    返回上一级:

    cd ..

    返回用户家目录:

    cd ~


    3. 查看当前路径

    pwd

    这个命令很常用,尤其是在服务器上操作时,先确认自己在哪个目录,能减少误操作。


    4. 创建文件

    touch app.log


    5. 创建目录

    mkdir logs

    递归创建目录:

    mkdir -p /opt/project/backend/logs


    6. 删除文件或目录

    删除文件:

    rm app.log

    删除目录:

    rm -r logs

    强制删除:

    rm -rf logs

    文字说明

    rm -rf 要非常谨慎。

    尤其不要在根目录 / 或不确定路径下乱用删除命令。

    部署项目时,删除前可以先执行:

    pwd
    ls

    确认当前路径和文件内容。


    六、上传项目文件到服务器

    后面我们会把 Spring Boot 项目打包成 jar 包,再上传到服务器。

    常见方式有两种。

    1. 使用 scp 上传

    在本地电脑执行:

    scp target/project.jar root@服务器IP:/opt/project/backend/

    例如:

    scp target/zhiguang.jar root@192.168.1.100:/opt/project/backend/

    文字说明

    scp 可以把本地文件复制到远程服务器。

    这里的意思是:

    把本地 target/zhiguang.jar
    上传到服务器 /opt/project/backend/ 目录


    2. 使用工具上传

    如果不习惯命令行,也可以使用一些图形化工具,比如:

  • Xftp
  • FinalShell
  • MobaXterm
  • WinSCP
  • 这些工具可以像操作本地文件一样,把 jar 包拖到服务器目录中。


    七、查看 Java 项目运行进程

    项目部署后,我们经常要查看 Java 进程。

    ps -ef | grep java

    示例输出:

    root 12345 1 0 10:00 ? 00:00:10 java -jar app.jar
    root 12399 12300 0 10:01 pts/0 00:00:00 grep –color=auto java

    文字说明

    这里真正的 Java 项目进程是:

    java -jar app.jar

    前面的 12345 是进程 ID,也就是 PID。

    如果要停止这个进程,可以执行:

    kill 12345

    如果普通停止不掉,可以使用:

    kill -9 12345

    不过 kill -9 属于强制停止,不建议作为默认方式。


    八、查看端口占用

    Spring Boot 项目默认端口一般是 8080。

    如果项目启动失败,提示端口被占用,可以查看端口:

    netstat -tunlp | grep 8080

    有些系统默认没有 netstat,可以使用:

    ss -tunlp | grep 8080

    示例输出:

    tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=12345,fd=123))

    文字说明

    这里可以看到 8080 端口被 Java 进程占用,进程 ID 是 12345。

    如果确认要停止,可以执行:

    kill 12345

    端口排查是部署项目时非常高频的操作。


    九、查看项目日志

    后端项目上线后,排查问题最重要的就是看日志。

    如果项目日志文件是:

    app.log

    查看完整日志:

    cat app.log

    分页查看日志:

    less app.log

    查看最后 100 行:

    tail -n 100 app.log

    实时查看日志:

    tail -f app.log

    实时查看最后 200 行并持续输出:

    tail -n 200 -f app.log

    文字说明

    最常用的是:

    tail -f app.log

    它可以实时查看项目输出。

    比如启动 Spring Boot 项目后,可以通过日志判断:

  • 项目是否启动成功
  • 数据库是否连接成功
  • Redis 是否连接成功
  • 端口是否被占用
  • 是否有异常堆栈

  • 十、查看磁盘、内存和系统资源

    部署项目时,服务器资源也需要关注。

    1. 查看磁盘空间

    df -h

    常见输出:

    Filesystem Size Used Avail Use% Mounted on
    /dev/vda1 40G 15G 25G 38% /

    2. 查看目录大小

    du -sh /opt/project

    3. 查看内存使用

    free -h

    4. 查看系统运行情况

    top

    如果安装了 htop,也可以使用:

    htop

    文字说明

    这些命令主要用于排查服务器资源问题。

    比如项目突然访问很慢,可以看:

  • CPU 是否很高
  • 内存是否不够
  • 磁盘是否满了
  • 日志文件是否过大

  • 十一、安装常用工具

    有些服务器是最小化安装,很多工具可能没有。

    可以先安装一些常用工具。

    1. CentOS 安装

    yum install -y vim wget curl net-tools unzip

    2. Ubuntu 安装

    apt update
    apt install -y vim wget curl net-tools unzip

    文字说明

    常用工具说明:

    工具作用
    vim 编辑文件
    wget 下载文件
    curl 测试接口或下载内容
    net-tools 提供 netstat 等命令
    unzip 解压 zip 文件

    十二、使用 curl 测试接口

    后端项目部署后,可以直接在服务器上用 curl 测试接口。

    例如:

    curl http://localhost:8080/user/login

    如果是 POST 请求:

    curl -X POST http://localhost:8080/user/login \\
    -H "Content-Type: application/json" \\
    -d '{"username":"admin","password":"123456"}'

    文字说明

    curl 在排查接口问题时非常有用。

    如果服务器本机访问接口成功,但浏览器访问失败,可能是:

  • 防火墙没开放端口
  • 云服务器安全组没开放端口
  • Nginx 配置问题
  • 前端请求地址写错

  • 十三、部署前建议准备的目录结构

    后续部署 Spring Boot 项目时,可以先准备这样的目录:

    /opt/project
    ├── backend
    │ ├── app.jar
    │ ├── logs
    │ └── config
    ├── mysql
    ├── redis
    └── nginx

    创建命令:

    mkdir -p /opt/project/backend/logs
    mkdir -p /opt/project/backend/config
    mkdir -p /opt/project/mysql
    mkdir -p /opt/project/redis
    mkdir -p /opt/project/nginx

    文字说明

    这样划分之后,目录会比较清楚。

    后端 jar 包、配置文件、日志文件、MySQL、Redis、Nginx 都有单独位置。

    后面如果使用 Docker Compose,也可以直接基于这个目录继续扩展。


    十四、常见问题

    1. 为什么命令提示 permission denied?

    这是权限不足。

    可以检查当前用户:

    whoami

    如果不是 root,可能需要使用:

    sudo 命令

    或者切换到有权限的用户。


    2. 为什么上传 jar 包失败?

    常见原因有:

  • 服务器 IP 写错
  • 用户名或密码错误
  • 目标目录不存在
  • 目标目录没有写权限
  • 本地 jar 包路径写错
  • 可以先确认服务器目录:

    ls /opt/project/backend


    3. 为什么项目启动后访问不到?

    常见原因有:

  • 项目没有真正启动成功
  • 端口被占用
  • 服务器防火墙没开放端口
  • 云服务器安全组没开放端口
  • 项目只监听了本地地址
  • 数据库或 Redis 连接失败导致启动异常
  • 排查顺序一般是:

    ps -ef | grep java
    ss -tunlp | grep 8080
    tail -n 200 -f app.log


    十五、实际开发建议

    1. 每次操作前先确认路径

    在服务器上操作时,建议经常执行:

    pwd
    ls

    尤其是删除文件前,一定要确认当前目录。


    2. 项目文件统一放到固定目录

    不要今天放 /root,明天放 /opt,后天又放 /home。

    建议统一放到:

    /opt/project

    这样后面维护会轻松很多。


    3. 日志一定要单独存放

    比如:

    /opt/project/backend/logs/app.log

    不要让日志散落在各个目录。


    4. 先学常用命令,不用一开始追求全面

    部署项目用到的 Linux 命令其实并不算特别多。

    先把目录、文件、进程、端口、日志这些命令掌握,就已经能解决很多部署问题。


    十六、总结

    这一篇我们正式开始了第六个系列:Linux + Docker 项目部署上线系列。

    本篇主要学习了 Linux 服务器部署项目之前必须掌握的一些基础内容:

  • SSH 登录服务器
  • Linux 常用目录
  • 文件和目录操作命令
  • 上传 jar 包到服务器
  • 查看 Java 进程
  • 查看端口占用
  • 查看项目日志
  • 查看磁盘、内存等资源
  • 准备项目部署目录结构
  • 这些内容虽然不是 Java 代码,但对后端开发非常重要。

    因为项目上线以后,很多问题不是出在代码怎么写,而是出在环境、端口、进程、日志和配置上。

    下一篇我们就可以继续写:Spring Boot 项目打包成 jar 并在 Linux 运行。

    赞(0)
    未经允许不得转载:171主机测评 » 【项目部署上线|第1篇】Linux 服务器基础命令和部署环境准备
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址