ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux安装配置全攻略:从发行版选择到服务部署与运维排查

Linux安装配置全攻略:从发行版选择到服务部署与运维排查 大概每一个刚接触Linux的人都会在“Linux安装配置”这四个字上卡过壳。网上教程一搜一大把但要么只讲某个发行版的图形界面点下一步要么一上来就甩一堆fdisk、grub的名词看完更懵。我这些年帮团队搭环境、给客户做部署、带新人入职几乎每周都要回答一遍“这个该怎么装”“那个配完为什么起不来”。所以干脆把这套东西按自己的实操路径完整梳理一遍从发行版怎么选、虚拟机怎么做规划到装完系统之后的基础配置再到MySQL、Redis、JDK这类软件的通用安装套路最后补一批日常运维常用的命令和故障排查思路。这篇文章不偏向某个单一系统也不假设你已经会Linux命令。所有东西都按“自己动手装一台能用、能跑服务、能排查问题的机器”这条线来走每一步都说清“为什么这么做”并附上我踩过的坑。适合零基础想入门的人也适合刚转岗运维、想系统过一遍安装配置细节的同学。1. 动手前先把方向定明白选发行版就是选未来很多新手上来就问“Linux怎么下载”其实Linux不是一个系统而是一整个家族。不同发行版之间的内核同源但包管理、默认目录结构、启动方式、社区生态都不一样选错了后面会走很多弯路。所以安装之前先花十分钟把发行版问题想清楚。1.1 不同发行版的核心差异市面上常见的发行版基本可以分三大阵营。Debian系包括Ubuntu、Linux Mint等用apt作为包管理器.deb格式的软件包社区资料极其丰富遇到问题基本一搜就有答案新手翻车率最低。RedHat系包括CentOS、Rocky Linux、AlmaLinux、Fedora用dnf/yum作为包管理器.rpm格式服务器领域的老牌玩家很多企业历史存量机器都是这个体系但CentOS 8之后官方策略调整现在的替代方案主要是Rocky和Alma。Arch系用pacman滚动更新资料最硬核适合想彻底搞懂Linux底层的玩家但生产环境一般不建议用滚动更新的系统。国产Linux这几年也值得单独拿出来说统信UOS、麒麟等基于Linux内核做了大量本地化适配办公、政企场景迁移的非常多。如果你面对的是一台预装国产操作系统的机器本质上还是Linux那套命令行逻辑apt或rpm的玩法依然适用只是软件仓库里多了一些办公套件和适配驱动。别一听名字陌生就慌底层思路完全相通。发行版选择速查 - 个人学习、桌面日常 - Ubuntu / Linux Mint - 公司服务器、生产环境 - Rocky Linux / AlmaLinux - 已有CentOS存量机器迁移 - Rocky / Alma - 嵌入式、路由器、极简环境 - Debian不带桌面 - 想深入内核原理、折腾编译 - Arch / Manjaro1.2 下载镜像时最容易忽略的一步镜像下载地址建议直接用各大镜像站的Linux发行版目录不要满互联网找第三方下载站一个是版本新旧问题另一个是被篡改的风险太大。下载之后养成做校验的习惯特别是在一个系统要被批量部署或者要跑生产业务的时候。镜像站通常都会在ISO文件旁边放SHA256SUMS文件下载后用sha256sum命令算一遍再和文件里的值比对一致才说明文件完整、没被动过手脚。我见过太多次“装到一半提示找不到文件”“安装器校验失败”的案例最后追根溯源都是下载的ISO损坏了。这个习惯花一分钟能省一晚上的折腾。2. 虚拟机安装Linux的完整流程现在的计算机资源普遍很充裕绝大多数情况下没必要直接拿物理机去试错。我强烈推荐新手和做实验的人用虚拟机安装Linux原因有两个一是快照功能可以在系统搞坏之后一键回到之前的状态二是可以随意调整硬件配置模拟不同环境。下面按VirtualBox为例讲整个流程VMware Workstation的思路完全一样只是界面选项叫法略有区别。2.1 创建虚拟机之前先把资源规划好很多人拿到镜像就开始创建虚拟机内存随便拉一个值磁盘点默认结果装完发现系统卡成幻灯片或者磁盘空间不够。规划这一步其实值得花几分钟。我常用的规划逻辑是这样的安装桌面版的话内存至少给4GB否则打开个浏览器加个终端就能把内存吃满服务器版不带图形界面的2GB内存就很宽裕了。CPU核心数给2个以上但要记住你给虚拟机的CPU核心数不要超过物理机逻辑核心数的一半否则宿主机自己会变慢。磁盘空间的规划往往是最多人忽视的。我建议新手机器至少给40GB最好直接给60GB。用默认的“动态分配”即可也就是只占实际用到的空间后面需求变大了再扩容。真正做生产模拟的时候再考虑固定大小盘、LVM之类的方案对性能和管理的考量不太一样。2.2 五步创建一台能跑Linux的虚拟机下载好ISO镜像打开VirtualBox点击“新建”填写虚拟机名称文件夹类型会自动识别系统类型和版本不用手动管。内存按上面说的给直接填4GB4096MB不要低于2GB太低会卡在图形安装界面。虚拟硬盘选择“现在创建虚拟硬盘”容量给到40160GB以上选择VDI格式、动态分配。在“设置”-“存储”里把镜像挂载到光驱控制器IDE或SATA都行然后启动虚拟机会自动从光盘引导。如果启动后黑屏或卡在启动界面多半是EFI的问题进设置把“启用EFI”关掉或者反过来开启视机器默认固件类型而定。有个困扰很多人的问题是安装过程非常慢连鼠标都有延迟。这种一般不是机器性能不行而是没有安装增强功能Guest Additions。系统装好后从菜单栏的“设备”里选择“安装增强功能”在虚拟机内挂载光盘执行VBoxLinuxAdditions.run重启后就顺滑了。VWware里对应的叫open-vm-tools安装后支持自适应分辨率和剪贴板共享。2.3 安装过程中的关键选项到了安装界面最常见的两个选择是分区和软件包。桌面环境我一般就直接选“使用整个磁盘”加LVM不折腾手工分区Ubuntu默认给的方式对桌面用户完全够用。但如果是服务器用途尤其是要做数据库、存储服务的机器我建议手动分区这样心里有数。一处合理的服务器分区方案大概是这样的规格挂载点大小文件系统说明/boot1GBext4放内核和引导文件不需要太大1GB很充裕/剩余全部或按需预留ext4 或 xfs根分区系统文件和日志默认都在这里/home按需ext4如果是多人使用单独分出来方便隔离数据swap内存的1倍左右swap大内存机器可以很小甚至不用很多人对swap的大小有争议。我的经验供参考物理内存小于4GB的机器swap给到内存的1.5倍没有心理负担服务器物理内存16GB以上swap给8GB绰绰有余甚至直接不建swap都行但设置了也能作为内存吃紧时的兜底。交互区文件在极端情况下能救你一次别太抠门儿。安装过程的最后一步会提示创建用户和设置root密码系统一般默认不允许直接用root登录图形界面具体策略因发行版而异。大部分情况下保持这个默认日常用普通用户登录需要权限的时候用sudo。老想着切到root干活总有一天会把系统目录权限改乱。3. 装完系统只是开始基础配置与用户体系系统能开机进入桌面或者命令行控制台只能算安装完成还没到配置完成。这一步要解决三件事用户体系、网络环境、软件源。把这三个弄明白后面的软件安装才有基础。3.1 用户管理为什么建议日常别用rootLinux是多用户系统每个用户有自己的家目录和权限边界。root是超级管理员对系统拥有一切权限这也是为什么安全最佳实践都强调不要用root干日常活。我见过一个同事为了省事一直用root在服务器上操作某次命令写错了把/home底下一个放数据的目录整个删掉恢复成本极高。新建用户的命令很简单# 新建用户 useradd -m -s /bin/bash zhangsan # 设置或修改密码 passwd zhangsan # 把用户加入sudo组Debian系 usermod -aG sudo zhangsan # RedHat系 usermod -aG wheel zhangsan-m参数是同时创建家目录-s指定登录shell。不加-m的话用户拿到的是一个不存在的家目录很别扭。sudo组的作用是允许用户通过sudo执行管理员权限的命令而不需要切换到root。需要注意sudo的命令要输入自己的密码不是root密码这个很多新手会搞混。3.2 网络与主机名服务器被访问的基本盘安装带桌面版的Linux网络通常DHCP自动搞定不需要管。但如果是在服务器机房部署或者虚拟机网络模式改了没网是最常见的故障先检查这几样# 查看当前IP地址 ip addr show # 查看路由 ip route # 测试DNS ping -c 4 223.5.5.5没有IP就先看网卡是不是没激活。不同发行版的网络管理工具不一样服务器版常用nmcli桌面版有NetworkManager控制台但核心无非两件事网卡开启了没有、有没有分配到地址。CentOS系的早期版本网卡默认可能处于未激活状态执行nmcli device connect eth0一类的操作就能拉起来Ubuntu系装完系统一般就是通的。主机名也值得顺手改掉。默认的localhost看起来都一个样真到维护一堆机器的时候你对着十几台全是localhost的终端逐个排查会非常痛苦。改主机名一条命令就能实现此处以常规systemd系统为例hostnamectl set-hostname web01改完之后重新登录终端就能看到新的提示符尽量在装机初期完成这个操作避免业务部署了再改带来不必要的细节困扰。更规范的做法是同时配置好/etc/hosts里对应的解析让主机名在内网可以直接被找。像Hadoop、Zookeeper这类集群组件主机名对应关系写错了会导致节点互相连不上是很经典的错误。3.3 包管理器与软件源装软件的第一步其实是选对官方软件源。系统默认的源可能在官方服务器上国内访问速度往往是龟速。换了国内更快但也要看情况有些公司在内网自建了镜像源那连接内网源速度最佳。配置源的本质就是告诉包管理器“去哪个仓库找软件”Locate文件、更新缓存等不同发行版路径和命令不一样但道理是一样的。以Debian系为例直接修改或者若系统保留了原文件则新建源列表文件sudo sed -i s|http://archive.ubuntu.com/ubuntu|http://mirrors.aliyun.com/ubuntu|g /etc/apt/sources.list sudo apt updateRedHat系和Debian系不太一样它用的是仓库文件位置普遍在/etc/yum.repos.d/目录下从CentOS 8开始转用dnf命令基础命令风格与yum基本一致。系统初始化阶段把源配好后边安装各种依赖包的速度是天壤之别。我给新手一个很实用的建议装完系统第一件事就是更新软件源并做一次系统升级把内核和关键组件升到当前补丁水平再开始部署业务。在还没跑业务的时候升级代价最小业务上线之后升级任何东西都要考虑影响窗口。4. 软件安装配置方法论从MySQL到Hadoop的通用思路热搜词里出现了一长串“XX安装配置教程”MySQL、Git、Node.js、JDK、Redis、Maven、Tomcat、Hadoop……如果把每个软件单独的安装教程都写一遍篇幅得多出十倍而且大部分步骤是重复的。所以这一章我讲方法论把这套逻辑弄明白面对任何软件都能举一反三。4.1 三种安装方式各自适用的场景Linux装软件基本就是三条路通过包管理器直接装、从官网下载二进制包解压配置、下载源码编译安装。包管理器apt/dnf装机最快优点是依赖自动解决升级卸载也方便但缺点是包仓库里的版本往往滞后。比如你在Ubuntu的默认仓库里装Redis装到的可能是2-3年前的版本。如果只是学习或者跑一些不敏感的业务这样最省心。二进制包算是“中间路线”从官网或镜像站下载一个已经编译好的tar.gz解压到自己指定的目录就能用。JDK、Node.js、Maven这类带完整运行环境的软件我基本都是用这种方式装好处是版本完全可控想换就直接换目录缺点是依赖要自己确认但这类软件本身依赖很少问题不大。源码编译就是自己动手搓了./configure、make、make install三部曲。我的态度是能不用就不用。编译一次要几分钟到半小时中间还可能缺各种开发库报错。什么时候才必须用源码编译软件仓库里没有你需要的版本或者软件官方只提供源码包Nginx的某些定制模块、内核模块这类场景才会选。日常用包管理器和二进制包就够了。安装方式优点缺点适合场景包管理器依赖自动处理、卸载干净版本滞后、定制性差依赖多的服务、常规部署二进制包版本新、目录可控手动管依赖JDK、Node.js、Maven源码编译最灵活、可用最新特性耗时、依赖开发库定制需求的场景4.2 环境变量和PATH为什么命令能直接被找到凡是二进制包安装的软件都会遇到环境变量配置的问题。PATH是一个环境变量它保存了一组目录的列表当你在终端输入一个命令名shell会按顺序去这些目录里找对应的可执行文件。很多新手“装完了但某个命令不存在”多半就是没有把软件的bin目录加到PATH里。配置环境变量有多个地方可以写优先级和作用范围不太一样。针对当前用户的配置写在~/.bashrc或者~/.profile里只对当前用户生效全局配置写在/etc/profile或者/etc/profile.d/目录下新建的.sh文件里对所有用户生效。我个人的习惯是系统级别的软件装了全公司要用的就丢到/etc/profile.d/自己个人用的工具写进~/.bashrc。JDK的标准配置例子写到/etc/profile.d/java.shexport JAVA_HOME/opt/jdk-17 export PATH$JAVA_HOME/bin:$PATH配置完要执行source /etc/profile或重新登录当前终端才能生效。值得注意的是JAVA_HOME在很多中间件里会用到Tomcat、Hadoop、Maven等都要依赖这个变量所以即使你把java命令直接放到了/usr/bin最好也把JAVA_HOME显式配置出来。4.3 服务类软件的安装实战以MySQL和Redis为例数据库、缓存这类以服务方式运行的软件安装配置的核心套路也高度相似。以MySQL为例不论从二进制包安装还是apt安装装完之后几乎一定要做的事有初始化并启动服务、设置root密码、开放或限制监听地址。二进制包的MySQL尤其要注意初始化和目录权限问题步骤稍微复杂但网上公开资料足够多。实操中我强烈建议关注配置文件的两个核心项。一是监听地址bind-address默认情况下MySQL只允许本机访问服务器部署时想允许其他机器连就要改成0.0.0.0同时防火墙放行3306端口二是配置简单些也没关系先把坑少走完。Redis也是同样的逻辑但它比MySQL更“危险”。Redis默认不配置密码而且老版本里的protected-mode保护模式设计初衷是为防范无认证访问带来的安全风险部署时尤其要注意。如果把那个保护机制的参数关闭同时又没设密码谁都能访问这台Redis其中存放的数据在公网环境下极易被清空。在云服务器上出于谨慎我建议即便只在内网用也打开密码认证# 在redis.conf中取消注释并设置 requirepass yourpassword设置之后客户端连接时认证正确才能正常访问这是很基本的操作但真的很多公司因为这条没配被薅数据。4.4 GIT、Node.js、Maven等重配置文件工具的注意点Git的配置主要是user.name和user.email提交代码时必须有这两项否则提交会失败。全局配置一次就搞定git config --global user.name 你的名字 git config --global user.email 你的邮箱Node.js安装之后要注意npm的registry源默认源在国外可以用镜像源来加速常用配置命令为npm config set registry 一个国内镜像源地址Maven同理它的配置文件是conf/settings.xml里面可以指定镜像仓库和本地仓库存放路径。不配置镜像源的话第一次拉依赖可能等得极其痛苦。本地仓库路径默认在用户目录的.m2/repository下也可以自定义否则C盘或系统盘空间不够时你会很想骂人。从这里可以总结出通用规律配置类词汇拿到手先分清两类一类是“环境类”PATH、JAVA_HOME、HOME另一类是“软件自己的配置”MySQL的my.cnf、Redis的redis.conf、Maven的settings.xml。前者决定了软件能不能被找到、能不能正常运行后者决定了软件行为是什么样。每次换新软件按这两条线去排查配置问题能少走很多弯路。5. 日常运维必备的Linux操作与问题排查配置完机器日常运行阶段才是真正的考验。Linux的运维工作本质上就是几类事看日志、查进程、看端口、管磁盘、改配置。把常用的命令练熟了遇到问题能自己排查大半。5.1 高频命令的分类整理我把日常最高频的命令按场景整理成一个表新人在实际工作中直接对着查边用边记。场景命令说明查看当前目录pwd不解释忘了在哪个目录就别开始干活列出文件ls -lah带权限、大小、时间一眼看明白切换目录cd配合相对路径和绝对路径创建目录mkdir -p-p可以递归创建复制/移动/删除cp/mv/rm -rfrm -rf慎用尤其是root查看文件cat/less/tail -ftail -f看运行日志是日常最常用的查找文件find /path -name *.conf忘了配置文件在哪时用它查看磁盘df -h查看挂载点剩余空间查看内存free -h看内存占用情况查看进程ps aux带Grep可以过滤自己想找的进程查看端口ss -tlnp看端口监听情况排查服务是否启动网络测试curl -v看接口通不通报错信息很直观其中tail -f和grep我认为是运维效率最高的两个基础操作。排错的时候基本都是先查日志tail -f实时跟踪日志输出grep过滤关键错误字样配合起来能快速定位几十种常见故障。5.2 几个经典故障的排查思路我自己在运维过程中最常碰到的几个“经典翻车现场”值得单独记录一下。第一个是端口被占用。服务起不来看日志报“Address already in use”第一反应是查谁占用了端口lsof -i :8080 # 或者 ss -tlnp | grep 8080找到PID之后确认是自己要停掉的旧进程再kill千万别误杀别人的服务。kill -9是最后手段先尝试正常终止进程实在僵死才用。第二个是磁盘满了。df看到空间100%但一时找不到是哪里占了空间用du一层层看du -h --max-depth1 /var du -h --max-depth1 /home日志文件堆积、Docker镜像残留、临时文件没清理是硬盘满最常见的三个来源。日志这种“珍贵资产”也不能一刀切直接删可以分析一下是否为必要留存更重要的是配好logrotate日志轮转让日志定期切割和压缩才是正经的解法。第三个是服务配置改了但没生效。这类问题的排查顺序是确认你改的是否是正确的配置文件、确认服务是否真的重启了、确认有没有语法错误。很多服务在启动时会用默认配置而不去读你以为的那个配置文件所以在改配置之前先确认服务进程启动命令里指定的配置路径。对配置文件改动比较大的操作用相关命令如nginx -t、sshd -t这类的检查命令先做一个配置校验一条命令就能帮你避开“改完直接重启然后服务再也起不来”的惨剧。5.3 从安装到稳定的日常体检思路系统稳定运行靠的是平时细水长流的维护而不是出问题再去救火。我给自己管理的机器定了一个简单的“体检清单”流程# 1. 看系统负载和负载均衡情况 uptime top # 2. 看磁盘 df -h # 3. 看内存占用 free -h # 4. 看系统日志里的可疑报错 journalctl -p err -b # 5. 自动更新和安全补丁journalctl -p err -b只看本次启动以来的错误级别日志平时没事扫一眼能发现很多潜在的隐患。检查的时间不用太长每天花一两分钟看看很多问题在变大之前就能被拦下来。负载高不一定是坏事要结合业务类型看磁盘空间最好不要用到85%以上备份和日志随时需要空间。如果某个分区明明没东西但空间一直掉用du或者lsof查正在被删除但仍被进程占用的文件这又是一个很经典的操作。写在最后的几个个人习惯上面讲的方法论很多都是在跌跌撞撞中总结出来的。我特别想强调一件事不要因为某个发行版大家说好就用某一个也不要因为装坏了就气馁。我第一台Linux虚拟机装了不下五遍才跑顺畅前两遍全折在分区和软件源上。安装配置这件事没有人生下来就会都是一步一步试出来的。最后分享一个我个人的小习惯每次安装和配置完一个软件我会把这个软件涉及的配置目录、日志路径、启动命令、开放端口记录到一个简单的说明文件里放在这台机器固定的目录下。多台机器之后你回看这份记录对排查问题会非常高效。祝你能顺利装出一台完全属于自己掌控的Linux主机然后你会发现后面那些以前觉得很难的命令和配置都是水到渠成的事情。
返回列表