专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
目录
相关文章推荐
51好读  ›  专栏  ›  码农翻身

干货!服务器运维极简指南

码农翻身  · 公众号  · 程序员  · 2025-03-14 08:55

主要观点总结

本文介绍了服务器部署的难点和解决方案,特别是使用宝塔面板来简化服务器设置的过程。文章涵盖了选购服务器、环境配置、安全设置、计划任务、网站安全实践和监控告警体系等方面的内容。

关键观点总结

关键观点1: 服务器部署难点

文章指出服务器部署的主要难点包括复杂的安装配置、系统安全漏洞、服务器资源未充分利用等。同时,面临的专业命令、运维团队、网络攻击等问题也是部署中的挑战。

关键观点2: 宝塔面板的优势

宝塔面板能够将服务器设置变成选择题,通过简单的点击操作完成专业级的部署,无需花费大量时间和金钱来管理服务器。它提供了丰富的功能,如环境配置、安全设置、计划任务等,帮助用户轻松管理服务器。

关键观点3: 选购服务器的指导

文章提供了选购服务器的参考指标,如CPU、内存、存储、带宽等,并根据业务需求给出了定制化的建议。

关键观点4: 服务器安全设置

文章详细介绍了服务器安全设置的重要性,包括修改SSH默认端口、使用SSH密钥登录、使用Fail2ban防爆破等。同时,还介绍了宝塔面板的深层应用,如环境快速部署、计划任务、异地备份等。

关键观点5: 网站安全实践

文章强调了网站安全实践的重要性,包括SSL证书部署、网站防火墙、文件防篡改、PHP安全防护等。同时,还介绍了监控告警体系的功能和使用方法。


正文

请到「今天看啥」查看全文


总说服务器部署难,究竟难在哪?数据不会说谎:

    • 49%的人卡在复杂的安装配置

    • 34%的系统因安全漏洞被迫下线

    • 60%的服务器资源根本没用到位

面对满屏看不懂的专业命令、请不起的运维团队、防不住的网络攻击,很多项目还没开始就被技术门槛劝退。其实用对工具很简单:宝塔面板把服务器设置变成选择题,从选配置、装环境到防入侵,像组装电脑一样点点鼠标就能完成。跟着这份实操指南,零基础3小时搞定专业级部署,不用花大钱也能管好你的服务器。


服务器选购指南

业务类型
典型配置参考
核心关注点
企业官网
2核4G/40G SSD/5M带宽
稳定性、SEO优化
电商平台
4核8G/100G SSD/10M带宽+CDN
高并发、支付安全
小程序后端
2核4G/80G SSD/弹性带宽
API响应速度
对于大多数中小型公司来说,各大云厂商推出的轻量应用服务器已经能够满足大多数使用场景需求,如果业务量较大,也可以按照下面的方式去做一个简单的参考,根据业务需求自定义选购云服务器 (下述部分仅作参考,可以跳过)
CPU/内存动态配比表:
Web服务器 → 1:2 (如2核配4GB)  数据库服务器 → 1:4 (如4核配16GB)    缓存服务器 → 1:1 (内存密集型)
存储选型:
if 随机读写>70% → NVMe SSD(如MySQL)  elif 顺序读写>50% → SATA SSD(如日志存储)  else → HDD机械盘(备份/归档)
就目前来讲现阶段,云厂商的硬盘种类较多(下图以腾讯云为例),实际使用过程中建议根据厂商文档和业务需求进行选择配置即可

带宽选配: 带宽(Mbps) = (页面大小(KB) × PV × 冗余系数) / (86400 × 压缩率)

假设2MB页面/日10万PV → (2048×100000×1.5)/(86400×0.7) ≈ 51Mbps → 建议10M带宽+CDN加速


Linux初始化安全配置

当我们购买一台Linux服务器后,我们至少会知道以下几项信息:

  • 服务器公网IP:通常在服务器列表或详情页面

  • 用户名:Linux一般为root

  • 密码:如果你没有设置,一般会通过邮件发送给你,或通过厂商控制台进行重置

知道上述信息以后,我们就可以通过SSH工具(如堡塔多机管理)安装宝塔面板,安装完成后,我们即可开始进行基础的安全配置。

1️⃣修改SSH默认端口

SSH 默认端口 22 是公开信息,攻击者会通过自动化工具(如僵尸网络)大规模扫描互联网上的 22 端口,尝试暴力破解弱密码或利用已知漏洞获取服务器控制权,虽然对于扫描器而言没办法完全阻止暴力破解,但可以过滤掉绝大部分扫描和定向暴破, 在宝塔面板中,我们可以通过安全-SSH管理-基础设置来修改SSH端口,例如修改为35467这样的高位端口。(PS:修改后记得在云厂商安全组或防火墙放通对应的ssh端口)

2️⃣SSH密钥登录

大部分主机失陷都是因为SSH弱密码遭到爆破导致,比如admin@123,woaini520,woshishui等等,在kali系统的 /usr/share/wordlists/目录下存放着一个字典,里面大概包含了1400万个弱口令密码,所以,使用密码显然不是一个安全的方式,而密钥登录通过非对称加密实现,安全性远高于密码,能有效防御暴力破解和中间人攻击。因此,服务器运维、生产环境通常推荐密钥登录,在宝塔面板中,我们可以通过安全-SSH管理-基础设置,关闭密码登录,启用密钥登录

启用密钥登录需要下载密钥留作登录使用,登录时验证方式选择密钥,并选择对应的密钥文件即可。

3️⃣Fail2ban防爆破

Fail2ban 防御暴力破解(防爆破)是服务器安全中的一种有效补充措施,它可以通过动态封禁恶意 IP 地址来阻止攻击者的持续尝试,能有效避免因暴力破解导致的主机或服务失陷的问题,我们可以直接在SSH管理页面开启。

4️⃣面板安全设置

在完成SSH服务的加固之后,面板的安全设置也是同样重要的,宝塔面板默认通过安全入口、面板SSL、以及随机端口和密码等来确保安全性,除默认安全措施外,还建议您通过开启basicAuth、动态口令等二次认证方式进行加固

如您具备相应条件,您还可以通过IP白名单、地区访问限制等方式限制访问

5️⃣防火墙或安全组

多数厂商提供的服务器都支持配置安全组或防火墙,建议您通过安全组或防火墙封禁不必要的端口,甚至可以在业务稳定运行后封禁SSH及面板端口,以确保较高的安全性。

以企业官网为例,通常仅需要放行80/443端口提供给用户访问即可,其他不必要的端口如3306/888/6379等通常无需对外暴露,避免徒增暴露面导致主机服务失陷。

如您的服务器厂商没有提供类似于安全组或防火墙的功能,您也可通过宝塔面板安全页面管理防火墙,删除不必要的端口规则。


宝塔面板的深度应用

1️⃣环境快速部署

如项目没有特殊需要,通常推荐大家选择LNMP套件安装,生产环境建议大家使用编译安装,如无特殊必要,请不要安装FTP插件。(PS:编译安装MySQL对配置要求较高,如配置不足建议后期到软件商店单独安装MySQL)

宝塔面板支持多MySQL版本和PHP版本共存,如有需要,您可以到软件商店中进行安装,以WordPress和 Laravel框架为例:

# 为不同站点分配PHP版本(以WordPress和Laravel为例)1. 在"软件商店"安装PHP7.4/8.1/8.22. 网站A(WordPress)→ PHP7.4(兼容传统插件)3. 网站B(Laravel)→ PHP8.2(获取最新性能优化)

2️⃣计划任务

通过计划任务我们可以定时执行一些重复性的工作来释放我们的双手,下面给大家介绍一下设置计划任务的实践。

在介绍具体的操作之前,先代大家简单了解一下计划任务设置的逻辑和坑:

  • 逻辑:根据业务时段特征分配任务

    • 黄金时段(8:00-22:00):仅执行监控类任务(CPU占用<5%)

    • 闲时窗口(23:00-6:00):集中处理高负载任务(备份/分析)

上述时间段需要根据业务情况进行调整,尽可能避免在业务高峰期执行负载较高的计划任务,以免影响正常的业务访问,除此之外,如果有多条计划任务,还需要注意计划任务是否会发生互斥,导致计划任务异常甚至服务中断,例如:

案例一:数据库热备遭遇数据清洗
场景复现:某金融公司每日凌晨1点同时触发:
  • 任务A:MySQL全量备份(耗时45分钟)
  • 任务B:客户交易数据清洗(大量UPDATE/DELETE操作)
事故现象:
  • 备份文件中出现「幽灵数据」——已清洗的记录仍存在于备份
  • 清洗任务执行时间从20分钟延长至2小时
案例二:日志切割大战文件同步
场景复现:某视频平台每小时整点执行:
  • 任务A:Nginx日志切割(重命名+重建日志文件)
  • 任务B:边缘节点文件同步(rsync传输)
事故现象:
  • 同步到边缘节点的日志文件出现50%截断
  • 服务器磁盘空间每小时异常波动

案例三:证书更新与负载均衡的死亡之舞
场景复现:某SaaS平台每月1日执行:
  • 任务A:集群SSL证书轮换(更新10台服务器)
  • 任务B:负载均衡器节点健康检查(每5分钟一次)
事故现象:
  • 用户访问出现「证书不匹配」警告
  • 部分节点被错误标记为宕机下线
从上面的案例中我们其实可以得到, 设置计划任务的核心思考点在于:
「我为什么在这个时间执行?」「失败时如何最小化影响?」「下次如何做得更好?」

介绍完计划任务的逻辑,我们再来讲一下常见的计划任务配置,对于大多数业务来说,日志切割、内存释放、定时备份都是比较常见的几个常见,接下来我们将逐一介绍:

场景一:日志切割

当日志文件超过10GB时,可能导致:

  • 磁盘空间不足触发服务崩溃
  • 日志查询效率下降90%
  • 安全事件溯源困难

宝塔可视化操作:
  • 进入「计划任务」→「添加任务」

  • 任务类型选择「网站日志切割」

  • 设置保留份数

场景二:内存释放

适用场景:
  • 运行PHP等内存泄漏风险高的应用
  • 物理服务器无自动swap清理机制
  • 突发流量后需要快速恢复服务能力

宝塔可视化操作:

  • 进入「计划任务」→「添加任务」

  • 任务类型选择「网站日志切割」

  • 设置保留份数


场景三:定时备份
备份的场景和必要性无需多说,不要等到「不小心把数据覆盖了,有办法恢复吗」「不小心删除了某某个文件,怎么恢复」才想起来备份的重要性。


3️⃣异地备份

在计划任务中,已经给大家初步介绍了通过定时任务创建备份,但从容灾的角度来讲,单纯的备份到服务器本地无法实现容灾的目的, 当你将备份文件存放在生产服务器的/backup目录时,实则可能正在上演一场危险的「鸡蛋篮子」游戏:
  • 物理层风险:硬盘损坏率,整机宕机可能导致备份与生产数据同归于尽

  • 安全层危机:勒索病毒会优先加密备份文件

  • 运维层盲区:大多数企业从未验证备份可恢复性,当真正需要时,备份文件已损坏

因此 结合异地备份、云存储以及分布式架构等方式,将数据分散保存在不同的物理位置和环境中。这样即使某一节点发生问题,其他位置的备份仍然能够保障数据的安全性和可用性,宝塔面板支持将数据备份到不同云厂商的对象存储中,可以前往应用商店中安装对应的插件:

安装配置完成后在计划任务创建备份任务时选择备份到云厂商存储即可。



网站安全实践

1️⃣SSL证书部署

当您的网站仍在使用HTTP协议时,所有数据如同在「互联网高速公路」上裸奔:

  • 支付劫持:黑客可在0.8秒内截获信用卡信息(Akamai 2023研究报告)

  • 会话窃取:通过中间人攻击(MITM)轻松盗取用户登录凭证

  • 内容篡改:恶意注入广告或钓鱼链接的成功率高达74%
宝塔面板提供了便捷的证书部署方案,集成了申请-部署-续期等,极大的提高了证书的部署效率:

在证书部署到站点后,如业务允许,建议开启强制HTTPS

SSL进阶配置:

ssl_ecdh_curve X25519:prime256v1:secp384r1;

如您启用了TLS 1.3可在站点配置文件中追加上述配置,针对新型加密算法进行优化。

2️⃣网站防火墙

网站被挂马、篡改相信有很多小伙伴们都经历过或者看到别人经历过, 这种网络安全事故不仅会造成数据泄露、流量劫持等直接损失,更可能引发用户信任危机和法律风险,但很多中小型公司没有专业的安全工程师来去处理这个问题,这时可以尝试使用宝塔面板的Nginx防火墙来去处理这个问题

(PS:安装完防火墙记得开启站点防护! 安装完防火墙记得开启站点防护! 安装完防火墙记得开启站点防护!)

爬虫相信也会是大家经常遇到的问题之一,各种采集工具数不胜数,辛辛苦苦的写的文章、内容、资料被人拿去使用,常在互联网看到一个笑话,你这个正版网站的体验还不如盗版做的好,如何有效的避免这个问题成了很多中小网站的一个难题,这时可以尝试使用一下Nginx防火墙的爬虫防护功能(PS:当前为实验性功能,如果没有遭到爬虫困扰请勿开启)

在业务的高峰期,如果让大量的访问一拥而入将可能会导致业务瘫痪,这时候就需要一个削峰的机制来确保业务系统正常的运营,相当于就餐时让用户取号等候,等前面的人吃完了再让用户进去,常见的典型场景如下:


场景
技术方案
电商限时抢购
结合库存系统动态计算准入人数
选课系统
开放选课后限制同时选课人数,避免教务系统服务故障

Nginx防火墙目前集成了等候室功能,可以根据业务容量配置相应的规则后开启等候室功能,当达到阈值时等候室将会被自动触发:

3️⃣文件防篡改

如果,我是说如果,你的服务器不幸被入侵了又或者某个同事失误执行了一条命令,导致文件被篡改删除,那后果不堪设想,这时可以通过防篡改做一下预置的防护:

很多小伙伴可能会发现一个问题,我的防篡改开启了为什么我还是能在面板修改我的文件?答案就在进程白名单中

如果你开启后暂时不需要修改你的文件,建议关闭宝塔面板的进程白名单。

3️⃣PHP安全防护

如果程序本身存在漏洞,单纯的依靠文件防篡改是没有任何意义的,因为防篡改不可能让你程序本身也没法修改你的文件,这时候可能就需要通过一些安全防护的工具加固程序本身,比如常见的PHP程序,我们可以使用 PHP网站安全告警去拦截PHP木马

(补充个题外话:很多小伙伴买了不安装,安装了不开启 ,这跟没防护好像没什么区别,要不,咱们还是注意下


监控告警体系

1️⃣资源监控

在监控页面,我们可以通过监控功能开启面板资源的监控, 开启后,监控页面会展示服务器关键资源的实时动态及历史趋势,主要包括以下模块:

1. 实时资源概览(在面板首页即可查看)
  • CPU使用率:显示当前CPU负载百分比及核心数占用情况,帮助识别高负载进程。
  • 内存占用:动态展示物理内存和Swap交换分区的使用情况,避免内存溢出导致服务崩溃。
  • 磁盘IO与:实时监控磁盘读写速度
  • 网络流量:展示内网和外网的实时上传/下载速率,定位异常流量来源。
2. 历史数据图表(需要在面板监控页面查看)
  • 支持查看 过去24小时 或 最近7天 的资源使用趋势,通过折线图分析服务器性能瓶颈。
  • 可针对CPU、内存、磁盘、网络单独筛选,方便排查周期性故障。

2️⃣监控告警

监控告警功能可以在资源使用异常、服务异常、面板遭遇攻击、SSL证书过期、站点异常等场景下发送告警通知,具体设置方法可以参照下方视频:

3️⃣面板日报

在监控页面开启面板日报后,日报会记录每天的异常信息,并形成日报,方便运维人员快速概览服务器及服务的运行情况:
  • 日常巡检:运维人员无需登录服务器,直接通过邮件日报快速确认服务器健康状态。

  • 故障回溯:结合日报中的异常时间点,关联分析监控图表,定位故障根源。

  • 资源规划:根据连续多日的资源峰值数据,决定是否需升级服务器配置。


如果面板使用过程中有任何问题欢迎随时 联系客服咨询

如果大家下期有什么想看的,欢迎在评论区留言分享~







请到「今天看啥」查看全文