资讯动态

从零搭建服务器:Linux运维入门指南与实战

发布时间:2026/10/13 8:25:16 来源:尧图企业网站定制
搞了这么多年服务器运维经常有朋友来问“服务器到底怎么入门”“我该从哪里开始”。说实话市面上的教程要么太零散要么直接丢给你一堆命令行让你自己啃很容易劝退。这次我把自己从零搭建和管理一台网络服务器的心得整理成一篇完整的入门指南从概念理解、硬件选型到系统安装、服务部署再到日常运维和故障排查一步步讲清楚。读完你不仅能亲手把一台服务器跑起来还能知道它出了问题该怎么处理。1. 动手之前先把“服务器”这件事想明白1.1 服务器和普通电脑到底差在哪很多人第一次接触服务器脑子里冒出来的问题是这不就是一台配置高点的电脑吗从硬件角度看确实如此服务器的主板、CPU、内存、硬盘和普通PC没有本质区别。但从设计目标和运行方式上看两者差异非常明显。普通电脑是为“一个人坐着操作”设计的讲究图形界面、外设支持、即时响应。服务器则是为“7×24小时无人值守地对外提供服务”设计的追求的是稳定性、并发处理能力和远程管理便利性。举个例子某公司的一台文件服务器可以连续运行几百天不重启期间一直有几十个用户同时往里存取文件。这种场景下家用电脑的硬件和系统可能早就“卡死”了但服务器架构从底层就是为此设计的。对入门者来说理解这个差异比记住一堆参数更有价值。因为只有明白了服务器是“长期在线、远程管理、单一用途”的设备你才会在后续的每一步配置里都围绕这三个特征做决策而不是像装个人电脑那样随意。1.2 入门必须先分清三类常见服务器市面上的服务器服务五花八门但对初学者来说最常见的就是下面三类类型核心作用典型应用入门难度Web服务器托管网站页面接收浏览器请求并返回网页内容个人博客、企业官网、电商前端较低文件/存储服务器提供统一的文件存取服务公司共享文件夹、备份中心较低数据库服务器专门运行数据库软件处理结构化数据的存取用户信息管理、订单系统后端中等听上去好像很简单但有一个关键点需要提前说破实际使用时一台物理服务器往往同时承担多种角色。比如你在一台服务器上装了Nginx作为Web服务器又在同一台机器上装了MySQL作为数据库服务器那么这台机器既是Web服务器又是数据库服务器。入门阶段我们不追求严格的物理隔离先在一台机器上把这些角色都跑通理解它们各自负责什么反而更有助于建立整体认知。1.3 网络协议基础IP、端口与DNS的协作跳过这一节直接操作后面一定会遇到“为什么访问不了”的困惑。这里用最朴素的语言讲清楚三件事IP地址服务器的门牌号别人靠它找到这台主机。公网IP可以在互联网上直接访问内网IP只能在局域网内访问。端口门牌号后面的“房间号”。一台服务器可以同时运行很多服务每个服务监听一个端口。比如Web服务默认跑在80端口HTTP和443端口HTTPSSSH远程登录默认走22端口。浏览器访问某台服务器时实际上是在“IP地址:端口”这个组合上进行连接。DNS让人不用记数字的翻译官。你把域名解析到服务器的IP上别人就能用“www.example.com”代替一串数字来访问。这三者的协作关系可以用一个生活场景类比IP是“某小区某栋楼”端口是“这栋楼里的具体门牌号”DNS则是“小区门口的物业告诉你‘找张三’应该去几栋几号”。一台服务器就是一个“服务综合体”不同端口住着不同的“服务住户”。实际踩过的一个坑是很多人只在服务器上开放了端口却忘了在云服务商的控制台安全组里也放开端口结果从外网怎么都连不上。后面我会专门讲到这个“双重防火墙”问题这里先记住一个原则服务器端开放端口云平台安全组也得同步放行缺一不可。2. 选型与准备云主机还是物理机系统怎么选2.1 入门阶段强烈建议从云服务器开始我个人带过不少新人几乎都会先问一个问题我要不要自己买一台物理服务器在家里跑我的回答通常是可以但不建议作为入门第一步。自己攒一台物理服务器看似“更有实感”实则要面对宽带公网IP问题、机房断电防护、散热噪音、硬件故障维修等一系列额外负担。而云服务器把这些问题全部外包了——你只需要选择一个配置机器就已经在线机房有电有网有散热硬件坏了平台自动迁移。入门阶段的核心任务是学会“管理和部署服务”而不是学会“伺候硬件”。从成本角度看入门期选一台最低配的云主机就够用了。以我常用的配置举例1核CPU、1GB内存、20GB SSD、带宽按量付费。这个级别用来跑一个静态网站、一个轻量级数据库实例、做配置实验完全没问题。等真正理解了自己的业务需求再按需升配比一上来就买高配机器划算得多。当然如果纯粹想练手且环境允许用一台闲置旧电脑安装Linux系统充当服务器也是一种方式。它的价值在于你能接触到真实的硬件比如磁盘分区、启动项配置这些在云主机上是“隐藏”的。我的建议是两条线并行云主机作为主力练习场本地旧电脑作为物理机认知补充。2.2 Linux发行版选择不必纠结用Debian系的准没错服务器操作系统这块Windows Server也有自己的生态但如果你问运维圈的老手大概率得到的答案是先学Linux。理由很实际——互联网上绝大多数服务器跑的都是Linux教程和踩坑经验最多出了问题搜一下就有答案。Linux发行版很多Ubuntu、Debian、CentOS是最常被提到的三个名字。对初学者我建议首选Debian最新稳定版或Ubuntu长期支持版LTS。原因很简单它们都属于Debian系使用相同的apt包管理命令社区资料海量软件源mirror多且快。CentOS以前是服务器端的“老大哥”但上游停止维护、项目转型之后新人不建议从它入门。你只需要知道一点主流云平台和Docker镜像都以Debian系为默认基础跟着大趋势走会省掉很多环境兼容性问题。2.3 购买云主机后必须立刻完成的初始化三件事不管用哪家云平台新机器到手后都应该立即完成以下三步养成习惯更换默认登录密码或密钥新机器的初始密码通常是临时生成的登录后第一件事就是修改为强密码有条件直接配置SSH密钥登录后面会细讲。创建普通用户并禁止root远程登录日常操作不要用root创建一个普通用户加上sudo权限就够用了。root账户只在特殊场景下使用远程登录时直接禁用更安全。配置防火墙默认策略原则是“默认拒绝所有入站连接再按需放行端口”。先把SSH端口放行其他服务后续再加。这三件事在云主机上完成只需要几分钟但能极大降低服务器被“扫爆”的概率。很多安全事件都是因为新机器默认策略太宽松被自动化攻击脚本在几分钟内拿下。别觉得自己是小站就没价值攻击者并不会看你是不是“小透明”。3. 第一次登录SSH连接与基础安全加固3.1 用SSH登录服务器的标准姿势前面的准备工作做完现在开始第一次真正的远程登录。这一步看似只是输入一条命令但它背后是整个远程管理体系的起点。SSHSecure Shell是一种加密的远程登录协议。为什么不用传统的Telnet因为Telnet的数据是明文传输包括用户名和密码在网络上传输时相当于“裸奔”。SSH则对连接内容进行加密即使数据被截获也无法直接读取。在本地终端Windows可以用系统自带的终端或安装独立SSH客户端macOS和Linux直接用终端执行ssh 用户名服务器IP比如你的用户名是deploy服务器IP是203.0.113.10就输入ssh deploy203.0.113.10。第一次连接时系统会提示确认服务器指纹输入yes即可。这里有一个新手容易忽略的点这里的服务器IP一定是你那台云主机的公网IP而不是内网IP。我曾经见过有人拿着内网IP在办公室折腾了半天最后才发现自己连的是自家路由器的后台。登录成功后你会看到一个命令行提示符表示你已经“住”进了这台服务器。从这一刻起你的所有操作都将在这台远程机器上执行。3.2 配置SSH密钥登录丢掉密码密码登录固然方便但安全性远不如密钥登录。原因很简单密码可以被暴力猜解而私钥文件的长度和随机性使得暴力破解在计算上不可行。配置密钥登录的步骤并不复杂。首先在本地机器生成一对密钥公钥私钥ssh-keygen -t ed25519 -C your_emailexample.com一路回车即可生成的公钥默认在~/.ssh/id_ed25519.pub私钥在~/.ssh/id_ed25519。然后把公钥内容追加到服务器的~/.ssh/authorized_keys文件中ssh-copy-id 用户名服务器IP如果本地没有ssh-copy-id工具手动追加也可以在服务器上编辑~/.ssh/authorized_keys把公钥内容粘贴进去并确保该文件权限为600仅属主可读写。配置完成后再执行之前一样的ssh命令如果不再要求输入密码说明密钥登录已经生效。此时可以进一步编辑服务器上的/etc/ssh/sshd_config把PasswordAuthentication改为no彻底禁用密码登录。注意改完要重启SSH服务sudo systemctl restart sshd。这里要特别提醒在确认密钥登录完全可用之前绝对不要先关闭密码登录。我自己就吃过这个亏——在测试环境改了配置结果SSH服务重启后密钥文件权限不对登录被拒只能跑到机房去接显示器处理。3.3 基础安全加固防火墙与Fail2Ban完成密钥登录之后接着做最基本的安全设置。第一步是安装并启用防火墙。Debian系系统通常自带ufwUncomplicated Firewall操作非常直观sudo apt update sudo apt install ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw enable sudo ufw status这段命令的意图是默认拒绝所有入站连接只放行22端口SSH。这时候访问你服务器上的80端口会被告知连接被拒这是正常现象因为我们还没有部署Web服务。以后每新增一个服务就执行一次sudo ufw allow 端口号/tcp。第二步是安装fail2ban它的作用是监控登录日志发现多次失败的SSH尝试后自动将该IP临时封禁一段时间sudo apt install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban装完后不需要额外配置默认规则已经够用。它的存在相当于给服务器加了一位“看门大爷”连续敲门敲错几次就直接把对方挡在门外。观察攻击其实很有意思你可以查看/var/log/auth.log会看到大量来自世界各地的“撞门”尝试——这是互联网的常态不用慌张抵挡手段做好就行。4. 核心实战用Nginx搭建一个可访问的网站4.1 为什么选择Nginx服务器上跑Web服务Nginx和Apache是两个主流选择。我推荐入门直接学Nginx理由有三个一是配置语法简洁清晰学习曲线平缓。Nginx的配置是层级化的区块结构读起来就像看目录比Apache的复杂指令更容易理解。二是资源占用相对较少。Web服务器本质上是在“抢时间”——谁能在最短时间内响应更多请求谁就是好的Web服务器。Nginx使用事件驱动的异步架构在处理高并发静态请求时内存占用比Apache低不少。三是当前Web生态的“标配”。很多云服务商的Web应用防火墙、负载均衡、反向代理底层都大量采用Nginx。学会Nginx相当于学会了理解现代Web服务架构的通用语言。4.2 安装Nginx并启动服务在Debian系系统上安装Nginx只需一条命令sudo apt update sudo apt install nginx安装完成后服务不会自动启动需要手动开启并设置为开机自启sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx执行status时你会看到绿色的“active (running)”字样说明Web服务已经在运行了。此时在本地浏览器输入服务器的公网IP如果能看到Nginx的默认欢迎页面恭喜你你的第一台Web服务器已经上线。不过这里有个很常见的坑如果你看不到欢迎页先别急着怪系统。排查顺序是第一步确认Nginx服务状态第二步确认防火墙已放行80端口sudo ufw allow 80/tcp第三步确认云平台的安全组也放行了80端口。很多人的问题都卡在第三步上。Nginx的默认网站根目录在/usr/share/nginx/html默认配置文件在/etc/nginx/sites-available/default。等我们把业务部署上去之后再决定怎么调整这些配置。4.3 建立你的第一个站点目录替换默认页默认欢迎页的作用只是证明服务正常真正的业务网站需要有自己的目录和文件。我建议按照标准的站点组织方式来做sudo mkdir -p /var/www/myblog sudo chown -R 用户名:用户名 /var/www/myblog这里我把站点目录命名为myblog你可以根据自己项目名来改。把本站静态文件比如index.html放进这个目录然后编辑Nginx的站点配置文件sudo nano /etc/nginx/sites-available/default配置文件里的关键部分大致是这样server { listen 80 default_server; listen [::]:80 default_server; root /var/www/myblog; index index.html index.htm; server_name _; location / { try_files $uri $uri/ 404; } }重点解释几个配置项listen 80监听80端口HTTP默认端口。root站点文件的根目录。server_name指定域名。暂时用_表示匹配所有域名等配置好域名后再替换。location /定义当访问根路径时如何处理。try_files会先尝试寻找对应的文件是否存在找不到就返回404。修改完配置后先检查配置语法是否正确sudo nginx -t看到syntax is ok和test is successful后重载Nginx使配置生效sudo systemctl reload nginx刷新浏览器如果能看到你写的index.html内容说明你的Web服务已经能正确输出业务内容。这一步的成就感是入门过程中最强烈的时刻之一值得好好感受一下。4.4 配置Nginx虚拟主机让一台服务器托管多个网站学会了基础站点配置后很多人的下一个疑问是一台服务器能跑多个网站吗答案是可以Nginx的虚拟主机Virtual Host机制就是干这个用的。原理并不复杂Nginx根据HTTP请求头里的Host字段来判断用户访问的是哪个域名然后交给对应的server块处理。举个例子你可以在同一个IP上托管site-a.com和site-b.com两个网站只要分别在sites-available下建两个配置文件再通过sites-enabled启用即可。具体做法是新建配置文件sudo nano /etc/nginx/sites-available/site-a内容与上面类似只是server_name改为site-a.comroot指向对应的目录。然后建立软链接启用sudo ln -s /etc/nginx/sites-available/site-a /etc/nginx/sites-enabled/运行sudo nginx -t并重载第二个网站就生效了。可别小看这个模块它是理解“服务器虚拟化”“容器化”等后续概念的基础——同样一台物理机器可以通过软件方式拆分成多个独立的服务单元。4.5 域名解析与HTTPS证书配置到这一步你的网站已经可以通过IP访问了。但现实中有几个问题IP地址不好记、直接用IP访问容易被浏览器拦截或不信任而且搜索引擎对没有域名的站点也不友好。所以接下来要做的是绑定域名。第一步是注册一个域名这里假设你已经有了然后在域名服务商的管理后台添加DNS解析记录把域名指向云服务器的IP。核心记录类型是A记录一般配置如下主机记录记录类型记录值A你的服务器公网IPwwwCNAME你的主域名配置好DNS后记得修改Nginx配置里的server_name把_替换成你的实际域名。完成后执行sudo nginx -t sudo systemctl reload nginx接下来是HTTPS。为什么必须配置HTTPS因为HTTP是明文协议用户在网页上输入的任何内容包括密码都会被中间节点看到。HTTPS则通过TLS加密确保数据在传输过程中不被窃取或篡改。现代浏览器几乎都会给HTTP网站打上“不安全”的标记。最常用的免费方案是申请证书各类免费证书服务都可以比如Lets Encrypt这类CA机构普遍被各大平台支持。以某个云平台上的一键签发流程为例通常只需要选择域名并完成域名所有权验证平台会自动生成证书文件并安装。手动部署时则把证书文件路径配置到Nginx的443端口监听块中server { listen 443 ssl; server_name your-domain.com; ssl_certificate /etc/ssl/certs/your-domain.pem; ssl_certificate_key /etc/ssl/private/your-domain.key; root /var/www/myblog; # 其他配置... }配置HTTPS时有一个细节容易踩坑证书文件本身是公开的但私钥文件必须妥善保护权限设为600仅root可读写。私钥泄露等同于你的HTTPS加密被“绕过”任何人和中间设备都能解密流量。另外证书有有效期限制一般3个月到1年记得在日历上设置提醒或者配置自动续期脚本避免证书过期导致浏览器报错。5. 动态服务与数据库从“静态页”到“真应用”5.1 静态网站和动态应用的本质区别到目前为止我们搭建的都是静态网站——服务器直接把文件内容原样返回给浏览器不涉及任何计算和存储。这类网站适合展示型的页面但无法实现“用户登录后看到自己的专属内容”这类交互。动态应用的差异在于服务器在处理请求时会运行一段程序比如从数据库读数据、处理用户输入然后生成HTML返回给浏览器。一个最简单的动态应用是用户提交一个表单程序把数据写入数据库下次用户再来时程序把数据库里的内容展示出来。入门阶段理解这个区别至关重要。因为你选择了“动态”就意味着你不再是简单地和Nginx打交道而是要理解和应用层程序、数据库、接口这三方的协作关系。5.2 安装数据库并初始化以最常用的MySQL/MariaDB为例目前最流行的开源关系型数据库是MySQL和MariaDB两者的兼容性很好MariaDB还被视作MySQL的替代品之一。在Debian系系统上用命令安装即可sudo apt install mariadb-server sudo systemctl start mariadb sudo systemctl enable mariadb安装完成后执行初始化脚本sudo mysql_secure_installation跟随提示设置root密码、移除匿名用户、禁止root远程登录、清理测试数据库。这几步是必须的不要跳。很多安全事件都是因为数据库没有设置密码或用了弱密码被扫描工具直接连上并拖库。初始化完成后进入数据库创建一个专属于业务的用户和数据库。我用的是这种方式CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER app_userlocalhost IDENTIFIED BY 一个足够复杂的密码; GRANT ALL PRIVILEGES ON myapp.* TO app_userlocalhost; FLUSH PRIVILEGES;这里的几个参数值得解释utf8mb4字符集支持Emoji在内的所有Unicode字符是当今Web应用的标准选择app_userlocalhost限定了用户只能从本机连接数据库避免数据库被远程连接扫描——这是最基本的安全约束。5.3 部署一个简单的动态应用以PHP-FPM配合Nginx为例在Deiban系系统上部署动态应用最常见的方式之一是PHP-FPM配合Nginx把PHP代码的执行交给PHP-FPM进程池Nginx只负责处理HTTP和静态文件。安装步骤sudo apt install php-fpm php-mysql sudo systemctl start php-fpm sudo systemctl enable php-fpm然后修改Nginx站点配置让location ~ \.php$这段请求走PHP-FPMlocation ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; }保存并重载Nginx然后在站点根目录创建一个PHP测试文件?php phpinfo();浏览器访问这个文件如果能看到丰富的PHP信息页面说明Nginx已经能正确处理PHP程序。这里有一个测试完要立刻处理的事项phpinfo()页面信息量太大会暴露PHP版本、配置路径等细节生产环境务必删掉或移走这个文件。很多扫描工具专门找这类探针文件拿来作为信息收集的入口。当PHP和数据库都跑通后你的服务器就已经具备了承载真实业务的基础能力。在线商城、博客系统、企业内部管理系统本质上都是这种“Web服务应用逻辑数据库”三层结构的变种只是复杂度和优化程度不同。6. 日常管理不可忽略的事日志、备份、更新、监控6.1 学会读日志是运维的看家本领服务器运行得好好的突然出现问题第一反应是什么打开日志。日志是服务器自己写的“病历本”记录了每一次服务的启停、每一次请求的成败、每一次报错的原因。在Debian系系统上系统日志主要集中在/var/log目录。常用的几个日志文件记录内容常见用途/var/log/syslog系统整体运行日志排查系统级错误/var/log/auth.log登录认证日志检查SSH暴力攻击、登录失败记录/var/log/nginx/access.logNginx访问日志分析用户访问行为、排查请求异常/var/log/nginx/error.logNginx错误日志定位站点配置问题查看日志的命令很简单tail -f /var/log/nginx/error.log可以实时滚动输出最新日志是排查问题时的第一利器。当你发现网站打不开tail一眼可能就看到了“Permission denied”或者“404 Not Found”等关键信息。一个建议是遇到问题先冷静翻日志不要凭感觉去改配置。日志能告诉你“发生了什么”而改配置多半只会引入新问题。哪怕日志信息看不懂把它全文搜索一下往往也能找到类似的解决方案。6.2 备份策略宁可备份用不到不能需要时没备份服务器上跑着业务最怕的就是数据丢失。可能是误操作删库可能是硬件损坏也可能是被勒索病毒加密——无论哪种没有备份就等于灾难。备份策略的核心原则有三定期备份、异地备份、定期演练恢复。定期备份是基础。以最简单的数据库备份为例mysqldump -u app_user -p myapp /backup/myapp_$(date %Y%m%d).sql配合crontab定时任务每天晚上自动执行保留最近30天的备份文件即可。异地备份同样关键。只把备份放在同一台服务器上如果整台服务器挂了备份也跟着没了。最简单的异地备份方案是把备份后的数据文件同步到另一台机器或某个对象存储服务上。定期演练恢复是很多人偷懒跳过的一步。我见过有公司备份策略写得很完善但真到恢复的时候才发现备份文件是空的、损坏的或者命令不兼容。正确的做法是每隔一段时间在另一台测试机上实际执行一次恢复流程。做不到经常演练至少在新手阶段手动模拟一次删除数据库再恢复的操作这个过程会让你对备份的理解完全不同。6.3 系统与软件更新的正确节奏系统更新是运维的基础工作但“什么时候更新”是有讲究的。盲目地一看到更新就跑upgrade可能引入不兼容的软件版本导致服务崩溃一直不更新又可能被已知漏洞攻击。我的实践习惯是安全更新security updates看到就安装不犹豫。常规软件版本更新放在业务低谷期操作先备份再更新更新后验证服务正常。更新前一定先看更新说明确认不影响当前运行的核心组件。执行更新的命令sudo apt update sudo apt upgrade sudo apt autoremove很多云平台也提供了“自动化安全补丁”功能建议开启。这个功能只更新安全漏洞补丁不会导致大版本跳跃风险很低。6.4 监控工具让服务器故障“在用户发现之前先发现”没有监控的服务器就像没有仪表盘的汽车——开着能跑但不知道什么时候会出问题。入门阶段不需要上非常重的监控体系我先推荐几个轻量级的做法。第一个是磁盘空间监控。服务器磁盘写满是非常常见的故障原因而且往往是以“网站突然打不开”的形式暴露出来排查时才发现只是磁盘满了。可以用定时任务检查并报警#!/bin/bash # 检查磁盘使用率超过90%则发送告警 threshold90 usage$(df -h / | awk NR2 {print $5} | tr -d %) if [ $usage -gt $threshold ]; then echo 磁盘使用率已达 ${usage}% | mail -s 磁盘空间告警 youexample.com fi第二个是服务状态监控。用systemctl检查服务是否还在运行异常时尝试重启并通知if ! systemctl is-active --quiet nginx; then sudo systemctl restart nginx echo Nginx已重启 | mail -s 服务异常告警 youexample.com fi有预算后还可以接入专门的监控系统提供更完整的图表和告警能力。但入门阶段别急着上重型工具先把“发现问题”这件事做起来就足够避免大部分故障演变成事故了。7. 常见故障排查思路从现象倒推原因7.1 网站打不开的排查链路这是新手最高频的故障没有之一。网站打不开原因可能出在用户侧、网络侧、服务器侧。我的排查顺序如下第一步确认当前网络环境能访问外网。如果自己断网了那自然所有网站都打不开。第二步用ping测试与服务器的连通性。能ping通说明网络层没问题换个角度看ping不通也不代表服务器挂了——因为很多服务器默认禁ping这属于正常防御策略。第三步检查端口连通性。在本地执行telnet 服务器IP 80 nc -vz 服务器IP 80如果端口不通回到服务器上看防火墙和安全组是否放行。第四步确认服务本身在运行。sudo systemctl status nginx看看状态是不是active。不是则看日志里记录了什么错误。第五步查Nginx错误日志。权限问题、配置错误、磁盘满都能在这里找到答案。这套链路基本能覆盖90%的“打不开”问题。我个人带新手时会刻意不带他们直接看答案而是按这个顺序一步一步走下来让他们自己找到问题所在。次数多了思维方式就形成了。7.2 SSH连不上时该做什么SSH连不上同样有固定套路。先用云平台自带的“网页终端”VNC/控制台登录服务器这绕开了SSH本身的故障。登录后立即检查SSH服务状态sudo systemctl status sshd如果服务没在运行尝试启动并查看日志。看到日志里说“Permission denied”就要考虑密钥权限说“Connection refused”则要考虑防火墙是否误封了22端口。这里分享一个亲身教训之前给某台服务器配置防火墙规则时我手滑把22端口的规则删掉了而当初又没有开启SSH以外的任何备用登录方式。结果重启防火墙后远程SSH全部断开人又不在机房最后只能通过云平台的网页终端登进去把规则加回来。这个教训的总结是在改防火墙规则时永远先确认自己有一条可用的“逃生通道”比如云平台网页终端可用或者管理后台的VNC入口正常。7.3 服务器性能告急CPU、内存、磁盘排查服务器变慢是另一种常见的故障现象。排查思路分三个层面CPU层面用htop或top命令查看哪些进程占用了大量CPU资源。如果是某个应用进程考虑优化代码或扩容配置如果是莫名进程占满CPU警惕是否被入侵挖矿可以用ps -ef查看进程命令行、检查登录日志是否有异常。内存层面用free -h查看内存使用情况。如果还剩大量可用内存问题可能出在CPU或者交换分区上如果内存耗尽且系统开始“卡顿”就要考虑增加内存或优化应用的内存使用。特别要说的是Linux的“used内存”包含了缓存cache单纯看数字很高并不代表真的不够用真正危险的是频繁使用swap交换分区那意味着物理内存已经不够了。磁盘层面刚才提到过df -h查使用率此外还可以用iostat查看磁盘IO。如果磁盘写入延迟非常大说明IO能力已经饱和或硬盘可能接近故障。这套排查优先级遵循一个原则先看资源存量谁被吃满了再看进程行为谁造成的最后看外部依赖是不是网络或第三方服务变慢了。别一上来就重启服务器那只能暂时掩盖问题真正的根因依然存在。8. 写在最后的一些建议整个入门过程走下来你会发现所谓“服务器管理”并没有想象中那么高深。它的核心就三件事让服务跑起来、让服务保持稳定、让服务坏了能恢复。我在前文提到的所有技术细节归根到底都是围绕这三件事展开的。如果只挑三条最想让新人记住的经验我会选这几条第一凡事多看日志。日志是服务器最诚实的“自述”绝大多数问题在日志里都有迹可循。我曾遇到过一位同学反映“网站偶尔打不开”我让他把Nginx错误日志打开观察半天后发现有一条“connect() failed (111: Connection refused) while connecting to upstream”反复出现——最终定位到后端应用进程会隔一段时间自动崩溃。这个排查就完全靠日志。第二安全这件事不要等“出事”了才开始做。SSH密钥登录、防火墙默认拒绝、数据库不要裸奔、定期备份这些最基础的动作在服务上线第一天就做后续会省掉许多麻烦。第三别怕把系统弄坏。入门阶段跑在一台随时能重建的云主机上是试错成本最低的时期。大胆去敲命令、去改配置、去踩坑踩过的坑越多积累的经验越扎实。如果担心出问题先做好备份然后用一台临时机器放心折腾。互联网上每天都有大量服务器因为配置失误或者安全疏漏而出问题但只要你自己动手搭过一台、管理过一台、排错过一次网上的教程和别人的经验就不再是悬浮的文字而是真正被内化的技能。入门没有捷径实践是最好的老师——就从今天买一台最便宜的云主机开始吧。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑