前言:为什么要学 Linux?

作为服务端开发工程师,Linux 几乎是绕不开的必修课:

  1. 企业用人要求:招聘 JD 里常见「熟悉 Linux」——项目最终要部署在 Linux 服务器上。

  2. 日常开发需要:MySQL、Redis、MQ 等中间件大多运行在 Linux 上,需要通过 SSH 远程操作。

  3. 学完能做什么:环境搭建 → 常用命令 → 安装 JDK/Tomcat/MySQL → 项目部署与自动化脚本。

学习建议:命令不必一次背全,常用的一二十条熟练即可;其余用到再查。最好的方法就是多敲。

一, Linux简介

1.1 主流操作系统对比

领域 代表系统
桌面 Windows、macOS、Linux(桌面较少)
服务器 Unix(付费)、Linux(免费、占有率高)、Windows Server
移动设备 Android(基于 Linux)、iOS
嵌入式 Linux(路由器、机顶盒等)

1.2 发展简史

  • 1991 年,芬兰大学生 Linus Torvalds 用 C/汇编语言发布内核。

  • 特点:免费、开源、多用户、多任务;吉祥物是企鹅。

1.3 内核版 vs 发行版

类型 说明
内核版 Linus 团队维护,控制硬件
发行版 厂商基于内核扩展,我们实际用的是发行版

常见发行版:CentOS(RedHat 社区版、免费)、Ubuntu、RedHat 等。本教程以 CentOS 7 为例。

二、环境搭建:虚拟机 + CentOS + SSH

2.1 安装方式

方式 场景
物理机安装 企业生产环境
虚拟机安装 学习阶段(VMware / VirtualBox)

学习推荐:VMware 安装 CentOS 7 64 位,软件选择「最小安装」,设置 root 密码。

小技巧:Linux 里输入密码不显示字符,属正常现象;在 VMware 中按 Ctrl+Alt 可把鼠标切回 Windows。

2.2 网卡配置(获取 IP)

ip addr 看不到 IP,多半是网卡未开机自启:

cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
# 将 ONBOOT=no 改为 ONBOOT=yes
# 保存退出:ESC → :wq → 回车

重启虚拟机后再执行 ip addr 查看 IP。

2.3 SSH 连接工具

企业里通过 SSH 远程管理服务器。常用工具:Putty、Xshell、FinalShell(免费、功能全,适合学习)。

连接参数:主机 = 虚拟机 IP,端口 22,用户名 root,密码为安装时设置的 root 密码。

2.4 Linux 目录结构(和 Windows 的区别)


目录 含义
/bin 常用命令
/etc 配置文件
/home 普通用户目录
/root root 用户目录
/usr 应用程序
/var 日志等可变数据
/tmp 临时文件
  • Windows:多盘符(C:、D:)。

  • Linux:单一根目录 /,像一棵倒挂的树。

三、Linux 常用命令

3.1 命令格式

command [-options] [parameter]

[] 表示可选;命令、选项、参数之间用空格分隔。

使用技巧

  • Tab:自动补全

  • 连按两次 Tab:列出候选

  • 上下箭头:历史命令

  • clearCtrl+L:清屏

3.2 入门六命令

命令 含义
ls [目录] 列出目录内容
pwd 当前所在目录
cd [目录] 切换目录
touch 文件名 创建空文件
mkdir 目录名 创建目录
rm 文件名 删除文件

乱码时可执行:

echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile

3.3 文件与目录操作

命令 语法要点 说明
ls ls -al / ll -a 含隐藏文件,-l 详细信息
cd cd .. cd ~ cd /usr/local ~ 为当前用户 home
cat cat -n 文件 查看全文;大文件用 more
more 空格翻页,q 退出 分页查看
tail tail -f 日志 看末尾;-f 动态跟踪日志
mkdir mkdir -p a/b/c -p 递归创建
rmdir 仅删目录
rm rm -rf 目录 慎用-r 递归 -f 不确认

3.4 拷贝、移动、打包

复制 cp

cp hello.txt itcast/
cp -r itcast/ ./itheima/    # 复制目录要加 -r

移动/重命名 mv

mv hello.txt hi.txt           # 改名
mv hi.txt itheima/            # 移动到目录

打包压缩 tar

# 打包
tar -cvf hello.tar ./*
# 打包并 gzip 压缩
tar -zcvf hello.tar.gz ./*
# 解压到指定目录
tar -zxvf hello.tar.gz -C /usr/local

后缀 .tar 仅打包;.tar.gz 表示已压缩。

3.5 Vim 文本编辑

安装:

yum install vim

三种模式:

模式 进入方式 常用操作
命令模式 打开文件默认 gg/G 首尾行,dd 删行,u 撤销
插入模式 i / a / o 编辑内容,ESC 返回命令模式
底行模式 :/ :wq 保存退出,:q! 不保存退出,:set nu 显示行号

3.6 查找

find . -name "*.java"              # 按文件名查找
grep Hello HelloWorld.java         # 在文件中搜文本
grep hello *.java

四、软件安装(四种方式)

方式 特点
二进制发布包 解压 + 改配置,适合 JDK、Tomcat
rpm 红帽规范打包,不自动解决依赖
yum 在线 rpm,自动处理依赖,需联网
源码编译 自行编译,最灵活

下面按实战顺序:JDK → Tomcat → MySQL → lrzsz

4.1 安装 JDK(二进制)

# 1. 上传 jdk-8u171-linux-x64.tar.gz 到 /(可用 FinalShell 上传)
​
# 2. 解压到 /usr/local
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
​
# 3. 配置环境变量
vim /etc/profile
# 文件末尾追加:
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
​
# 4. 生效并验证
source /etc/profile
java -version

4.2 安装 Tomcat

tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local
cd /usr/local/apache-tomcat-7.0.57/bin
./startup.sh

验证是否启动:

tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
ps -ef | grep tomcat

防火墙(CentOS 7)

systemctl status firewalld
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

生产环境不建议直接 systemctl stop firewalld 关防火墙,应开放所需端口

停止 Tomcat

./shutdown.sh
# 或 kill -9 <pid>

4.3 安装 MySQL(rpm)

1)检查并卸载 mariadb(与 MySQL 冲突)

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

2)解压安装包

mkdir /usr/local/mysql
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
cd /usr/local/mysql

3)按顺序安装 rpm(顺序不能乱)

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
yum install net-tools
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

4)启动服务

systemctl start mysqld
systemctl enable mysqld    # 开机自启

5)查临时密码并登录

cat /var/log/mysqld.log | grep password
mysql -uroot -p

6)改密码、开远程

set global validate_password_length=4;
set global validate_password_policy=LOW;
set password = password('root');
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;
exit;

Windows 用 Navicat 连接时,还需开放 3306 端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

4.4 安装 lrzsz(yum)

部分 SSH 工具没有图形上传,可用 rz / sz

yum list lrzsz
yum install lrzsz.x86_64
rz    # 上传文件

yum 源:配置文件在 /etc/yum.repos.d/,可换阿里云源加速(wget 下载 CentOS-Base.repo 后 yum makecache)。

五、项目部署

5.1 手动部署 Spring Boot

流程概览

  1. IDEA 中 mvn package 打 jar 包

  2. 上传到 Linux(如 /usr/local/app

  3. java -jar xxx.jar 启动

  4. 防火墙放行 8080

  5. 浏览器访问 http://IP:8080/hello

注意:Tomcat 默认也占 8080,部署 Spring Boot 前先停 Tomcat。

后台运行 + 日志落盘

nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &
ps -ef | grep java

nohup:终端关闭后进程不退出;&:后台运行;&>:标准输出/错误写入日志文件。

停止进程

kill -9 <pid>

5.2 Shell 脚本自动部署

手动部署步骤多,可用脚本串联:Git 拉代码 → Maven 编译打包 → 启动 jar

准备环境

yum install git
cd /usr/local
git clone https://gitee.com/你的仓库/helloworld.git
​
# Maven:解压 + 配置 /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
source /etc/profile
​
# settings.xml 配置本地仓库与阿里云镜像(可选)

脚本权限

chmod 777 bootStart.sh   # 学习阶段;生产建议最小权限如 755
./bootStart.sh

Linux 权限:读(r=4)、写(w=2)、执行(x=1),三位数字分别对应所有者、同组、其他用户。

5.3 配置静态 IP(服务器推荐)

编辑 /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static
IPADDR=192.168.138.100
NETMASK=255.255.255.0
GATEWAY=192.168.138.2
DNS1=192.168.138.2
ONBOOT=yes

网关需与 VMware「虚拟网络编辑器」中 NAT 网关一致。修改后:

systemctl restart network

IP 变更后需用 FinalShell 新建连接


六、常用命令速查表

分类 命令
目录 ls cd pwd mkdir -p rm -rf
文件查看 cat more tail -f
拷贝移动 cp -r mv
压缩 tar -zcvf / tar -zxvf -C
进程 ps -ef \| grep xxx kill -9
网络 ip addr netstat -tunlp
服务 systemctl start/stop/status
防火墙 firewall-cmd --add-port --reload
后台运行 nohup ... &

对后端开发来说,Linux 不是「会背命令」,而是能搭环境、装中间件、部署项目、看日志排错。按本文走通一遍虚拟机环境,再在自己的 Spring Boot 项目上练手,进步会非常快。

本文为学习笔记整理,命令以 CentOS 7 为准;IP、版本号请按自己环境替换

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐