[Linux实战]从入门到项目部署
前言:为什么要学 Linux?
作为服务端开发工程师,Linux 几乎是绕不开的必修课:
-
企业用人要求:招聘 JD 里常见「熟悉 Linux」——项目最终要部署在 Linux 服务器上。
-
日常开发需要:MySQL、Redis、MQ 等中间件大多运行在 Linux 上,需要通过 SSH 远程操作。
-
学完能做什么:环境搭建 → 常用命令 → 安装 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:列出候选 -
上下箭头:历史命令
-
clear或Ctrl+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
流程概览
-
IDEA 中
mvn package打 jar 包 -
上传到 Linux(如
/usr/local/app) -
java -jar xxx.jar启动 -
防火墙放行 8080
-
浏览器访问
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、版本号请按自己环境替换
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)