家人们谁懂啊!作为一名后端博主,我曾亲眼见过同事在 Windows 服务器上部署项目,结果因为环境兼容问题折腾到凌晨三点,最后拍着桌子喊:“要是会 Linux,我至于这么惨吗?”
今天咱就唠唠 —— 后端为啥非得跟 Linux “贴贴”,以及从入门到部署项目的全套 Linux 知识点,保证接地气、好理解,看完就能上手!
一、灵魂拷问:后端凭啥要学 Linux?
别以为后端只写接口就行,等你到了部署环节就知道:90% 的生产环境服务器,跑的都是 Linux!
Windows 服务器虽好,但占资源、稳定性差,还容易出各种 “奇葩兼容问题”。而 Linux 呢?轻量、稳定、开源免费,还能随便折腾(比如改配置、装软件),简直是后端的 “服务器搭子”。
举个栗子:你写好的 Spring Boot 项目,在本地 Windows 上跑的飞起,一放到 Linux 服务器就报错?大概率是你没搞懂 Linux 的环境配置;想查看项目日志定位 bug,连tail命令都不会,只能对着服务器发呆?
所以啊,后端学 Linux 不是 “选答题”,是 “生存题”—— 学会了它,部署项目、排查问题都能快人一步,再也不用当 “半夜改 bug 的冤种”!
二、Linux 入门:这玩意儿到底是个啥?
Linux是Linus Torvolds(开源之父)于1991年开发、发布的一套开源的、免费的、多用户多任务操作系统。是类Unix操作系统。目前已经衍生出成百上千种不同的Linux分支。
Linux的特点:安全 稳定 高效 免费
Linux应用场景:
因为其免费、安全、稳定的特性,使得Linux成为程序代码运行的最佳环境。Linux的应用范围很广泛:不仅可以运行我们的程序代码,还广泛应用于各种计算设备中。例如:手机、平板、路由器。尤其要说的是,我们熟知的Android就是运行在Linux系统上。
1. Linux 介绍:开源界的 “老大哥”
Linux 其实是个操作系统内核(简单说就是 “操作系统的核心大脑”),但我们平时说的 “用 Linux”,其实是装了 “Linux 内核 + 各种工具” 的发行版(比如 CentOS、Ubuntu)。
它最大的特点就是:开源免费、稳定抗造、支持多用户多任务。比如阿里、腾讯的服务器,几乎全是 Linux 系统 —— 你天天用的淘宝、微信,背后都有 Linux 在 “默默打工”。
2. Linux 分类:不是所有 Linux 都一样
按用途分,Linux 主要有三类,后端重点盯前两个就行:
- 服务器版:后端的 “主战场”,比如 CentOS(已停更但仍常用)、Rocky Linux(CentOS 替代品)、Ubuntu Server,主打稳定、省资源;
- 桌面版:比如 Ubuntu Desktop、Linux Mint,适合新手练手(界面像 Windows,能鼠标操作);
- 嵌入式版:比如树莓派用的系统,后端接触少,咱先忽略。
三、连接 Linux:这些客户端工具帮你 “隔空操作”
总不能天天抱着服务器插键盘吧?用这些工具,在自己电脑上就能远程操控 Linux:
对于企业真实环境来说,服务器通常在机房里,我们通常不可能直接跑到机房里去操作服务器。这就需要我们在自己本机上 远程连接服务器进行操作了,这需要使用远程连接工具,也叫“SSH工具”
Linux的远程连接工具非常非常多,像SecureCRT、PuTTy、XShell、FinalShell、Mobaxterm、WindTerm等等。不同工具的功能基本相同,最大的区别是UI界面是否美观。所以大家想用哪种工具都可以,我们这里说明的是免费开源的FinalShell
- Xshell/Xftp:经典组合!Xshell 用来输命令,Xftp 用来传文件(比如把项目包传到服务器),缺点是收费(但有免费版能用);
- FinalShell:国产之光!免费、界面友好,还能直接看服务器内存、CPU 占用,新手闭眼冲;
- MobaXterm:功能超强,能同时开多个终端,还支持 SSH、FTP、VNC,适合进阶玩家。
四、Linux 目录结构:别像逛迷宫一样找不到北
Linux 的目录跟 Windows 不一样 —— 它没有 C 盘、D 盘,只有一个根目录/,所有文件都 “挂” 在根目录下,特点是 “一切皆文件”(连硬件设备都是文件)。
Linux系统中的目录有以下特点:
/是根目录,所有文件和文件夹全在根目录下- 目录结构像一颗倒挂的树
| 目录 | 作用(人话版) | 后端常用场景 |
|---|---|---|
| /bin | 放常用命令(比如ls、cd) | 天天用,不用记路径直接输命令 |
| /etc | 放系统配置文件 | 改 JDK、MySQL 配置都在这 |
| /home | 普通用户的 “家目录” | 存放自己的项目文件 |
| /var | 放日志、缓存文件 | 查项目日志/var/log |
| /usr | 放安装的软件(比如 JDK、MySQL) | 软件默认安装路径 |
五、常用命令:后端必备 “快捷键”,学会少加班
命令不用死记硬背,记住 “常用的就那几个”,用的时候查一查,一周就能熟练。
1. 操作目录:逛 Linux “文件夹” 必备
- cd 目录路径:进入指定目录(比如cd /home,就是进 home 目录);
- ls:查看当前目录下的文件 / 文件夹(ls -l能看详细信息,ls -a看隐藏文件);
- mkdir 文件夹名:新建文件夹(比如mkdir project,建个项目文件夹);
- rm -rf 文件夹名:删除文件夹(危险!删了找不回,别瞎删系统目录,“删库跑路” 就是用这个命令)。
2. 查看文件:查日志、看配置全靠它
- cat 文件名:一次性看完整文件(适合小文件,比如cat application.yml);
- tail -f 文件名:实时看文件更新(后端查日志神器!比如tail -f project.log,能看到最新的日志);
- more 文件名:分页看大文件(按空格翻页,按 q 退出)。
3. 文本编辑:改配置、写脚本不用愁
Linux 默认有vi编辑器,但不好用,咱直接装vim(功能更强):
- 安装 vim:CentOS 用yum install -y vim,Ubuntu 用apt-get install -y vim;
- vim 用法:
- 输入vim 文件名打开文件(比如vim application.yml);
- 按i进入 “插入模式”,就能改内容了;
- 改完按Esc,再输入:wq保存退出(:q!是不保存强制退出);
- 复制剪切:在命令模式下(按 Esc 后):
- yy:复制当前行;
- dd:剪切当前行;
- p:粘贴到光标下一行。
4. 打包压缩:传项目包省流量
- tar -zcvf 压缩包名.tar.gz 要压缩的文件/文件夹:打包并压缩(比如tar -zcvf project.tar.gz project/);
- tar -zxvf 压缩包名.tar.gz:解压(比如tar -zxvf project.tar.gz);
- unzip 压缩包名.zip:解压 zip 文件(需要先装 unzip:yum install -y unzip)。
5. 查找命令:找文件、找内容不费劲
- find 目录 -name "文件名":按名称找文件(比如find /home -name "project.log",在 home 目录找 project.log);
- grep "关键词" 文件名:在文件里找关键词(查错误日志神器!比如grep "Error" project.log,找日志里的错误信息)。
6. 其他常用命令:后端排障必备
- top:看服务器 CPU、内存占用(哪个进程占资源高,一目了然);
- ps aux | grep 进程名:找进程(比如ps aux | grep java,看 Java 进程在不在);
- netstat -tuln | grep 端口号:看端口是否被占用(比如netstat -tuln | grep 8080,查 8080 端口有没有被用);
- systemctl start 服务名:启动服务(比如systemctl start mysql,启动 MySQL)。
六、环境搭建:JDK、MySQL、Nginx 装起来
后端项目要跑起来,得先装 “三大件”:JDK、MySQL、Nginx,步骤都很固定,跟着做就行。
1. 安装 JDK(以 JDK8 为例)
- 先删系统自带的 OpenJDK:rpm -e --nodeps $(rpm -qa | grep java);
- 下载 JDK 压缩包(从 Oracle 官网下,注意选 Linux 版),传到/usr/local目录;
- 解压:tar -zxvf jdk-8u301-linux-x64.tar.gz;
- 配置环境变量:vim /etc/profile,在末尾加:
export JAVA_HOME=/usr/local/jdk1.8.0_301
export PATH=$PATH:$JAVA_HOME/bin
5. 生效配置:source /etc/profile;
- 验证:java -version,能看到 JDK 版本就成了。
2. 安装 MySQL(以 MySQL8 为例)
- 装依赖:yum install -y libaio-devel;
- 下载 MySQL repo 文件:wget dev.mysql.com/get/mysql80…;
- 安装 repo:rpm -ivh mysql80-community-release-el7-3.noarch.rpm;
- 装 MySQL:yum install -y mysql-community-server;
- 启动 MySQL:systemctl start mysqld;
- 找初始密码:grep "temporary password" /var/log/mysqld.log;
- 登录 MySQL:mysql -u root -p,输入初始密码;
- 改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';(密码要复杂点,比如 Aa123456!);
- 允许远程连接:update mysql.user set host='%' where user='root';,再flush privileges;。
3. 安装 Nginx
- 装依赖:yum install -y gcc pcre-devel zlib-devel openssl-devel;
- 下载 Nginx:wget nginx.org/download/ng…;
- 解压:tar -zxvf nginx-1.20.2.tar.gz;
- 编译安装:
cd nginx-1.20.2
./configure
make && make install
5. 启动 Nginx:/usr/local/nginx/sbin/nginx;
- 验证:在浏览器输入服务器 IP,能看到 “Welcome to nginx!” 就成了。
七、项目部署:前端 + 后端,一次跑通
环境搭好了,终于到了最关键的部署环节!
1. 部署前端项目(以 Vue 为例)
- 本地打包 Vue 项目:npm run build,会生成dist文件夹;
- 把dist文件夹传到 Linux 的/usr/local/nginx/html目录(用 FinalShell 或 Xftp 传);
- 改 Nginx 配置:vim /usr/local/nginx/conf/nginx.conf,找到location /,改成:
location / {
root html/dist; # 指向dist目录
index index.html index.htm;
try_files $uri $uri/ /index.html; # 解决Vue路由刷新404问题
}
4. 重启 Nginx:/usr/local/nginx/sbin/nginx -s reload;
- 访问:浏览器输服务器 IP,就能看到前端页面了。
2. 部署后端项目(以 Spring Boot 为例)
- 本地打 Jar 包:用 Maven 的package命令,生成xxx.jar;
- 把 Jar 包传到 Linux 的/home/project目录;
- 启动项目:nohup java -jar xxx.jar > project.log 2>&1 &(nohup表示后台运行,日志存到 project.log);
- 验证:用curl http://localhost:8080/health(假设健康检查接口是 /health),能返回成功信息就成了;
- 查日志:tail -f project.log,有问题直接看日志排查。
结尾:Linux 不难,多折腾就会了
很多后端小伙伴觉得 Linux 难,其实是因为没上手练。你可以先装个 Ubuntu Desktop 虚拟机,或者买个便宜的云服务器(比如阿里云学生机,一年才几十块),跟着上面的步骤走一遍 —— 部署成功第一个项目的时候,你会发现:“原来 Linux 这么香!”
最后问一句:你在 Linux 操作中踩过哪些坑?比如删错文件、端口被占用?欢迎在评论区分享,咱们一起避坑~