ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从选型到实操:云服务器部署系统全流程踩坑记录

从选型到实操:云服务器部署系统全流程踩坑记录 前阵子帮朋友梳理半导体封测设备SECS/GEM协议对接测机的问题顺手把EAP系统的现场实施流程也理了一遍。这件事让我意识到一个特别实在的道理学习部署系统最缺的不是教程而是一台能随便折腾不心疼的机器。我从开始接触Linux运维到现在前前后后用过本地虚拟机、免费试用云主机、包年ECS踩过的坑比写过的笔记还多。这篇内容就围绕“云服务器”和“部署系统”这两个核心词把我真实用过的选型思路、初始化流程、企业级部署实操和排查记录全部摊开讲。文章里你会看到我踩坑的过程也会看到可以直接照抄的命令和配置。不管你是正在学部署还是准备从零搭一套接近生产的环境这批经验应该都能帮上忙。1. 学习部署系统我为什么最终转向云服务器1.1 本地虚拟机练手时的三个痛点最开始学部署系统我一直用笔记本上的VMware开虚拟机。装Ubuntu、CentOS后来为了研究国产环境还装过统信UOS桌面系统。虚拟机的优势是不花钱、随手能开但真把它当成一台“服务器”来用问题一个接一个。性能是最先卡住我的。笔记本只有8G内存虚拟机里跑一个Ubuntu宿主机再开着IDE和浏览器内存直接见红整个系统卡成PPT编译代码的时候风扇能响到怀疑人生。其次就是网络虚拟机默认NAT模式对外不可达我想测试Webhook回调、想用手机访问自己部署的站点都得折腾端口转发非常别扭。第三个痛点最要命环境不干净。今天装个Zabbix明天搭个CA服务后天又去调NTP同步系统里的服务互相干扰出了问题根本分不清是配置错了还是被之前的实验污染。我也试过用快照但快照越打越多磁盘越占越满最后只能推倒重来。反复几次之后我彻底认清了本地虚拟机只适合验证单点功能不适合长期当部署系统的练习场。1.2 云服务器到底解决了什么问题后来我注册了阿里云服务器的免费试用第一次体验就感受到了差距。最直接的是公网IP部署完系统之后从任何一台设备都能访问域名解析、SSL证书、Webhook回调全部可以走真实流程这跟本地虚拟机完全是两个世界。镜像这项也省心阿里云和华为云的镜像市场里有Ubuntu Server、Rocky Linux、银河麒麟V10还有统信UOS的服务器版本。想在哪个系统上做部署练习点几下就能重新初始化一台干净机器。另一个隐藏优势是“随时销毁重建”。本地虚拟机装坏了重装系统过程漫长又烦人云服务器在控制台里点一下重置系统一两分钟回到初始状态。这个特性把学习部署系统的试错成本压到极低我可以放心大胆地把系统搞挂再从快照恢复。经常有人说“学运维不敢乱动生产环境”云服务器正好给了你一块随便霍霍的试验田。1.3 哪些人应该果断入手一台云服务器按我的经验下面这些情况云服务器比本地虚拟机合适得多。刚入行学Linux运维想练Shell脚本、自动化部署和问题排查的人需要跑通前后端项目或监控系统的开发者云服务器能提供真实网络环境在校学生和准备转行运维的朋友可以用活动期的低价机当长期练习机像我这样要接触企业现场环境的人哪怕只是做技术验证也需要一台和现场接近的机器。说白了云服务器真正解决的问题不是“省电脑”而是让你在最短时间内跑通一套完整、真实、可复现的部署流程。2. 云服务器选型思路厂商、配置和机型怎么挑2.1 先想清楚部署什么再决定配置总有人一上来就问“哪个配置性价比高”这个问题其实没法回答。因为不同业务系统对资源的需求差别太大了不结合场景谈配置就是耍流氓。如果只是部署一套Web应用或博客2核2G加5M带宽完全够用如果部署Zabbix这类监控系统重点在内存4G起步因为数据库和Web端同时跑在同一台机器上时内存占用会快速上升如果目标是“云服务器部署大模型”那常规配置根本扛不住至少4核16G起步还得预留足量的swap和磁盘空间。我现在选配置有一套固定思路先写清楚要部署哪些系统、预计多少人用、数据量多大再反推CPU、内存、带宽。比起拍脑袋选高配这套方法既省钱又不容易踩资源不足的坑。就在前两天我还见过有人花高价买了8核16G的机器跑一个纯静态网站资源闲置大半年白白浪费钱。2.2 主流厂商怎么选国内主流的云服务器厂商就那么几家我基本都用过简单说说我的感受。厂商适合场景我实际注意到的点阿里云新手学习、通用业务上云文档最全、镜像市场丰富、活动机型多遇到问题好搜资料华为云企业对接项目、国产化环境和麒麟等国产系统生态结合好NTP服务稳定企业支持响应快腾讯云个人开发者、建站轻量应用服务器性价比高新用户活动力度大UCloud等临时测试、按量使用计费灵活但生态和文档相对少适合有过基础的人我不太建议单纯因为便宜就选小厂商。云服务器不只是一个VPS它背后还有安全组、监控、工单、镜像、对象存储这一整套生态。真出问题时工单响应速度和文档完善程度能直接影响你的业务恢复时间。对企业用户来说最好跟着公司现有云平台走资源统一管理省心很多。2.3 免费试用和活动机的真香与陷阱“免费云服务器”确实存在但限制也很多。新用户免费试用通常限定地域和规格只能用特定的镜像和配置到期后数据保留策略各家还不一样。最坑的是活动机的续费价格第一年99元第二年原价而且不能把数据直接迁移到另一台新购便宜机上等于被套住了。我自己就踩过一个大跟头。薅了一台免费ECS在上面跑了两个月数据到期忘记备份控制台直接释放实例所有数据全部消失。从那以后我养成一个铁律云服务器上的任何重要数据必须配自动快照或定期备份到对象存储。免费试用适合练手和验证方案但绝不适合承载长期业务这一点刚开始接触云服务器的朋友一定要记住。2.4 轻量应用服务器与ECS云服务器的定位差异刚接触云服务器的人经常把轻量应用服务器和ECS搞混。轻量应用服务器本质是一台“简化管理的云主机”自带应用镜像和可视化管理面板很适合搭网站、跑博客、快速做个项目演示。ECS云服务器则是通用的云计算产品网络、存储、安全组、弹性伸缩全部可以自由配置功能完整但管理成本也高一些。我自己用下来有个分法如果只是练部署一个业务系统、不想管底层网络细节选轻量服务器就够了如果想完整学习部署、练网络配置、跑企业级监控和大数据组件选ECS更合适。对学习阶段的人来说我更推荐ECS因为能接触到更完整的运维链路。安全组、VPC、弹性IP这些概念只有真正在ECS里实操过才算真正理解。3. 拿到服务器后的第一轮部署准备3.1 安全组必须第一个配安全组是云服务器的第一道防线也是很多人最容易忽略的一步。我见过不少新手买了服务器直接就去装系统然后在SSH日志里看到一堆暴力破解记录才回头补安全组。我的做法是购买后先打开控制台进入安全组管理把入方向规则清空再按需放行端口而不是默认放行所有端口。22端口用于SSH80和443用于Web服务其他端口有明确需要再开。数据库端口除非是调试阶段否则不要暴露到公网。特别强调一点安全组里的来源IP尽量写成固定IP不要图省事写0.0.0.0/0。我有台ECS曾经放行了所有来源的22端口一天之内就被扫了几万次日志里全是“Failed password”虽然密码没被爆破但那段时间看着日志都心里发毛。后来把来源IP改成自己的办公网段扫描量直接降到零。3.2 系统镜像选哪个版本创建实例时选系统镜像我建议按实际需求来而不是随便选个熟悉的。通用学习场景选Ubuntu Server 22.04或24.04社区资料多、软件源丰富遇到问题几乎都能搜到答案。企业环境里如果涉及国产化选银河麒麟V10、统信UOS服务器版、openEuler。想要稳定的RHEL系体验就选Rocky Linux 9或AlmaLinux 9。这里要特别提醒CentOS 7已经停止维护新项目别主动踩进去。现网里遇到CentOS 7的机器保持能用就行别继续往上面加新部署。另外选镜像时还要留意CPU架构大部分活动机是x86架构但部分国产系统镜像默认跑在ARM上。你的软件包如果都是x86编译好的强行选了ARM架构镜像后面装软件会痛到怀疑人生。3.3 SSH登录与系统初始化拿到云服务器后的第一轮初始化我建议按“先更新源、再建用户、然后配置密钥登录”的顺序来。以Ubuntu为例登录root后的第一步是把apt源替换成国内镜像源这也是“ubuntu设置阿里云服务器”这个搜索词背后最常对应的需求。# 老版本Ubuntu执行sed替换archive.ubuntu.com为mirrors.aliyun.com sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list # 新版本Ubuntu的源在/etc/apt/sources.list.d/ubuntu.sources里替换 sudo apt update sudo apt upgrade -y然后创建普通用户并加入sudo组避免一直用root干活。sudo useradd -m -s /bin/bash devops sudo usermod -aG sudo devops再把本机公钥传过去测试密钥登录能成功之后才去修改/etc/ssh/sshd_config里的PasswordAuthentication为no重启sshd服务。这里有个救命的技巧修改sshd配置前一定要先开一个新的SSH会话保持不断开确认配置没问题再关旧会话。万一配置写错导致连不上还能用云厂商控制台自带的“远程连接”功能进去救回来。这个操作我经历过两次一次比一次狼狈。3.4 数据盘挂载别把鸡蛋全放在系统盘很多活动机默认只有一块40G系统盘部署几个系统就见顶了。如果买了数据盘需要自己分区格式化挂载。我的习惯是把数据盘挂到/data目录数据库数据、日志、软件包全都放这里。这样即使系统盘出问题重建系统后数据盘一挂业务数据基本能找回来。# 查看磁盘 lsblk # 以/dev/vdb为例创建分区依次输入 n、p、1、回车、回车、w fdisk /dev/vdb # 格式化并挂载 mkfs.ext4 /dev/vdb1 mkdir /data mount /dev/vdb1 /data # 写入fstab实现开机自动挂载 echo /dev/vdb1 /data ext4 defaults 0 0 /etc/fstab挂载前确认一下挂载点目录是空的否则执行mount之后原来的文件会被暂时隐藏等卸载后才能看到。这个坑我栽过一次当时误以为数据丢了还折腾了半天恢复工具。4. 企业级部署场景实操记录4.1 银河麒麟V10上部署Zabbix 7.0银河麒麟V10是我在企业Linux部署系统场景里经常遇到的操作系统它属于RHEL系生态很多命令和CentOS类似但软件仓库和依赖需要按自己的环境调整。我记录一次在麒麟V10上部署Zabbix 7.0的流程这个版本对PHP和数据库版本的要求比老版本高不少。先确认系统架构和版本这一步不能跳我见过有人没看架构就下载了x86的rpm包装在ARM机器上直接报错。cat /etc/os-release uname -m然后下载Zabbix官方release包安装安装时会自动添加Zabbix仓库。麒麟V10通常对应RHEL8系的发行包选源时要选对版本。接着安装服务端、Web端和Agent端dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent2 -y创建数据库并导入初始schema之后启动Zabbix Server和Agent。在Web界面初始化时如果PHP版本不满足要求会直接卡在环境检测页。这时候需要单独配置PHP源把PHP版本升到8.0以上。整个过程和CentOS上部署Zabbix高度相似但依赖缺失时优先去Zabbix官方仓库找对应包别拿CentOS的rpm硬装轻则缺依赖重则把系统搞崩。4.2 麒麟系统部署CA服务并导入根证书企业环境里经常需要自建CA给服务器和客户端做双向证书校验。一次在麒麟系统上部署CA服务的经历让我把根证书导入这件事彻底搞明白了。流程是用openssl或Easy-RSA创建自建CA生成CA私钥和根证书然后让所有需要互信的设备信任这个根证书。麒麟系统属于RHEL系导入根证书的标准操作是# 把根证书放到信任锚目录 cp ca.crt /etc/pki/ca-trust/source/anchors/ # 更新系统信任库 update-ca-trust如果是Ubuntu或Debian系放到/usr/local/share/ca-certificates/下然后运行update-ca-certificates。我遇到过最典型的故障是应用A调用应用B时报“Certificate signed by unknown authority”检查了半天发现B的根证书已经导入系统但A使用的是Java或Python自己的证书库还需要额外把根证书导入到对应运行环境的trust store。这类问题最容易出现在第一次部署CA服务的人身上。排查思路其实很清晰先确认调用链路上每一层用的是系统证书库还是应用自带的证书库然后逐层导入问题基本就能解决。4.3 统信UOS桌面系统的安装部署要点统信UOS桌面系统在企业办公环境里越来越常见很多现场实施人员拿到UOS的第一件事就是制作启动U盘。我用Ventoy做过多系统启动盘也用过UOS自带的启动盘制作工具都能用。关键不在工具而在BIOS/UEFI引导设置。安装之前有两件事必须确认一是设备是否支持UEFI引导二是Secure Boot是否关闭。如果开着Secure Boot部分UOS版本启动时会直接卡在logo进不去系统现场跑一次就够让人头疼了。分区这块我建议按系统、业务、数据分离的思路来/boot分1G/按需分50G以上swap给4G内存小于4G的机器swap可以和内存大小对齐剩下的都给/home或单独数据分区。这个习惯和云服务器上分系统盘、数据盘是同一个逻辑目的都是让数据不依赖系统盘系统重装不影响业务数据。UOS部署完成后第一件事是检查网络和软件源。默认源一般能用如果安装软件慢就切换到内网源或镜像源。桌面系统日常使用不像服务器那样禁用root但现场实施还是建议按企业要求的基线做安全加固别图省事。4.4 时间同步华为云NTP服务器地址配置时间不同步这个问题非常隐蔽但引发的故障一点不隐蔽。有次Zabbix监控出的数据画出来是斜的我排查了半天最后发现是被监控主机的时间漂移了。还有一次部署CA服务之后证书验证一直失败最后定位到是服务器时间慢了五分钟时间同步后问题立即消失。云服务器上配置NTP如果用的是华为云可以这样设置dnf install chrony -y # 编辑/etc/chrony.conf把默认server行替换为 server ntp.myhuaweicloud.com iburst # 重启chrony并验证 systemctl restart chronyd chronyc sources -v如果是阿里云用ntp.aliyun.com腾讯云用ntp.tencentyun.com。在VPC内网环境还可以直接用厂商提供的内网NTP地址响应更稳定。配置完成后用date命令对比一下就知道了。时间同步这件事我在初始化服务器时都会顺手做成本极低收益很高。5. 部署过程中遇到的典型问题与排查实录5.1 SSH连不上时的排查顺序SSH连不上是使用云服务器时最高频的问题。我总结了一套排查顺序照着过一遍基本能定位。现象排查点解决方案连接超时安全组是否放行22端口检查入方向规则放行来源IP对应的22端口连接被拒绝sshd服务是否启动、端口是否被改systemctl status sshd检查sshd_config认证失败密钥权限是否正确、公钥是否匹配chmod 700 .ssh检查authorized_keys内容这套表我每次排障都照着过效率很高。另外提醒一个细节很多人用云厂商的“远程连接”能登录但本地SSH连不上这种时候优先怀疑安全组而不是系统配置。因为控制台的远程连接走的是厂商内部通道不经过安全组。5.2 系统盘写满导致的服务异常系统部署跑了一段时间后最常见的坑是磁盘满。现象通常是数据库起不来、日志刷不出来、网站报“No space left on device”。排查流程如下df -h du -sh /var/log/* du -sh /var/lib/docker 2/dev/null journalctl --disk-usage常见元凶是journal日志和docker镜像。清理journal我一般保留最近三天的日志sudo journalctl --vacuum-time3d再清理旧内核和docker无用镜像。清理之后还要考虑根因是不是系统盘确实分小了业务持续增长的话扩容或挂数据盘才是治本方案。这个坑给我的教训是部署系统前就要想好日志轮转和磁盘监控别等服务挂了再救。我的标准做法是部署完任何系统先看一眼磁盘空间顺手把logrotate配置好再设一个磁盘使用率的告警。这些动作加起来不到十分钟但能避免绝大多数磁盘故障。5.3 在ECS云服务器上安装Python 3.9不少活动ECS的默认系统Python还是2.7或3.6而现在很多部署脚本和自动化工具要求Python 3.9以上。第一原则是别动系统自带Python单独编译一套避免破坏系统依赖。源码编译安装wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz tar xf Python-3.9.18.tgz cd Python-3.9.18 ./configure --prefix/usr/local/python3.9 --enable-optimizations make -j$(nproc) sudo make install安装完成后把/usr/local/python3.9/bin下的python3.9和pip3.9做软链到/usr/local/bin。这样命令行里可以直接用python3.9和pip3.9。如果机器上需要多个Python版本直接用pyenv或conda管理会更省心源码编译适合只需要一个固定版本的场景。5.4 云服务器部署大模型的资源瓶颈看到很对人搜“云服务器部署大模型”我也亲自折腾过。老实说普通小规格ECS直接加载模型立刻就会OOM系统直接卡死。我给三个解决思路按优先级来。第一是加swap哪怕是SSD上的swap也比进程被杀强至少能撑住推理的临时内存波动。第二是用量化模型比如7B模型用Q4_K_M量化后内存占用能降一截普通大内存机器也能跑。第三是换配置真想跑7B以上16G内存只是底线磁盘IO也不能太差。实际体验下来我的结论是在云服务器上部署大模型先想清楚是推理还是训练。单纯的推理演示用Ollama加载量化模型非常顺想微调或训练普通ECS基本不现实直接考虑GPU实例或云上GPU服务。在自己弱鸡ECS上硬扛大模型只会浪费时间还会打击信心。6. 云服务器使用中的成本控制与安全加固建议6.1 计费方式怎么选学习阶段预算有限计费方式我推荐“按量付费加定时释放”。按量付费的好处是随开随关跑完实验就释放不会产生包月费用。但有一点必须注意释放实例前把数据备份到对象存储否则释放后数据会一并清空。如果是长期跑服务比如持续集成构建机、自动巡检脚本包年包月更划算单价低还能参加活动。我见过有人把一台高配机器按量付费挂了一个月忘关月底账单直接把人看麻。所以一定要设余额预警和预算阈值各大云厂商控制台都有别嫌麻烦顺手配一下。真出了意外账单你会发现这几分钟配置时间是全网最值钱的几分钟。6.2 安全基线不能省云服务器只要一上公网就会一直被扫描。这不是吓唬人是常态。安全基线至少要覆盖这几项SSH改密钥登录不用密码登录关闭不需要的端口安装fail2ban针对SSH暴力破解自动封禁IP定期打系统补丁部署关键应用前打快照。快照这件事我要多说一句。云服务器最大的优势之一就是秒级回滚这个能力不用白不用。我自己养成了习惯不是只在部署前打快照而是每次重大变更前都打一张。比如升级数据库、改网络配置、更新内核都是快照的典型使用时机。变更前快照变更后出了问题直接回滚比手忙脚乱排查快得多。6.3 从学习到生产把部署流程固化下来在云服务器上把系统部署通这只是第一步。更值钱的一步是把部署流程固化下来让任何一台新机器都能一键复现。我推荐用Ansible或SaltStack把部署步骤写成playbook。手工在控制台或命令行里点完一套流程结果只存在你脑子里换台机器又要重新来一遍。但写成代码之后部署逻辑就变成资产了。这和“系统已部署安装完成”是两回事手工部署完成只是结果代码化部署才是能力。我自己学部署系统的过程中把配置、脚本、记录全部放进了Git仓库。环境坏了也不慌拉下来重新跑一遍就行。这个习惯让我的学习和工作效率都涨了不少现在回头想大概是我在云服务器上投入最值的一段时间。最后分享一个一直在用的技巧拿到任何一台新云服务器先花二十分钟做初始化改源、建用户、配密钥、挂数据盘、设NTP、打快照。这套动作做完后面部署系统基本不会因为环境问题卡壳。我个人体会最深的一点是云服务器的价值不在于性能参数有多强而在于它把“试错成本”降到了极低练手、踩坑、重建可以随时进行这种安全感是本地虚拟机给不了的。希望这篇记录能帮你少走一点弯路尤其是那些在企业Linux部署系统里摸爬滚打的朋友环境千差万别但基础操作永远值得反复打磨。
返回列表