我想与一个非常兼职的管理员分享一些关于商业单服务器 Web 项目的控制面板的必要性或不必要性的印象。 故事开始于几年前,当时朋友的朋友请我从技术角度协助购买一家企业(一家新闻网站)。 有必要深入研究正在做什么,确保所有必要的细节都以适当的形式和数量转移,并从战略上找出可以改进的地方。
交易完成了,不再需要小提琴手了。 结尾。 并不真地。
该网站在 Linode 上的双核 4 GB 虚拟机上运行,在一些长满苔藓的 Debian5 上运行,正常运行时间为 400 天,并且包含大量未更新的软件包。 Web部分在自写的CMS、nginx、php5.3 FPM、mysql调优的Percona上。 原则上,它有效。
在与我交谈的同时,新所有者正在寻找一名程序员来使项目达到预期。 成立。 程序员评估了流量和数量,并认为他知道如何优化和成本管理。 他将整个网站迁移到了一个价值 700 卢布的共享主机,由他惯用的 IS****er 管理。 几天后,业主又打来电话:“一切都很慢,看来我们已经坏了。” 我试图通过面板纠正这种情况,但是在尝试将 PHP 版本或处理程序从 fcgi 更改为 fpm 一段时间后无果而终,我放弃了并进入了 shell。 在那里,我发现了一个启用的调试程序,该调试程序在整个互联网上都闪耀着光芒,其中一些文件夹上的密码为 777,当时这些文件夹正在被恶意软件和类似的废话所破解。 业主意识到并决定节省托管、程序员和可以关注事情进展情况的管理员的费用是错误的。
我们要去RuVDS。 比英国的 Linode 更近一点,如果你突然想要存储个人数据和所有这些,你不必搬到其他地方。 由于项目计划扩展,我们选择了一台虚拟机进行扩展:4核、8GB内存、80GB磁盘。 并不是我不知道如何手动配置 nginx 配置,而是我没有热情如此深入地从事这个项目(参见上面关于兼职的内容)。 这就是我安装 Plesk 的原因(这里我将省略安装细节,因为总的来说没有:我启动了安装程序,设置了管理员密码,输入了密钥 - 就这样),当时是 17.0。 基本设置开箱即用,有fail2ban以及最新可用版本的PHP和nginx。
也许值得停下来解释一下原因。 由于我很少做这样的事情,而且我没有任何特殊的工具或针对每种情况的准备工作,所以很明显需要对基本事情进行某种自动化,以便第一,快速,第二,安全,第三,所有最佳实践都已经有人实施了。
所以,我安装了它。 我节省了大量时间,在新服务器上重新启动站点几乎是瞬时的。 剩下的就是编辑muscle配置,给它一半的内存并增加缓冲池的数量,并给nginx一半的核心(Plesk不触及全局配置),然后花几天时间进入shell查看在 mysqltuner 统计信息中。 是的,我从扩展目录中购买了付费的 ImunifyAV,以摆脱泛滥的恶意软件。 发现了大约 11000 个受感染的文件。 令人厌恶的是,混乱的代码片段被倒入静态中,手动清理它会变得非常乏味。 首先我尝试了 ClamAV,但事实证明,它不需要这些东西,但 ImunifyAV 可以。 此外,被杀毒的文件仍然处于工作状态;带有恶意软件的部分被简单地删除。
算术很简单:VMka 每月 50 美元,Plesk 每月 10 美元(实际上更少,因为您一次购买一年,有两个月的折扣),防病毒软件 3 美元。 或者花费我大量的时间,我一开始会花在服务器上,手动清理这些马厩。 对于这样的安排,业主非常满意。
与此同时,他们找到了一位新程序员。 我们同意他的责任分配,为测试版本创建了一个子域,然后工作就开始了。 他正在 Laravel 上剪裁一个新版本的网站,而我正在查看fail2ban%)。
有趣的是,好奇的人流并没有停止,被禁止的名单上总是有大约一百个地址。 效果很有趣:特别是,通常,如果我登录到 shell,我会在问候语中看到大约 20000-30000 次通过 SSH 登录失败的尝试。 启用fail2ban后,大约为70。投入的努力:0。不幸的是,这并非没有一点好处。 默认情况下,WAF (modsecurity) 处于半启用状态:处于发现模式。 也就是说,他将可疑活动写入日志,但实际上没有采取任何操作。 并且fail2ban根据启用的监狱不加区别地读取所有日志,并杀死所有移动的东西。 因此,我们禁止了一半的编辑:D。 我必须禁用这个监狱,并将必要的 IP 地址列入白名单以确保可靠性。 努力是投入的:鼠标戳两下,教编辑告诉你你的IP地址。
程序员立即喜欢的是能够将数据库直接上传到面板中并快速访问 phpMyAdmin
我喜欢的是日志和备份。 日志的写入和轮换开箱即用; 备份非常容易设置。 在最慢的时候,会进行完整备份,大约 10 GB,然后每天进行增量备份,每次 200 MB,持续一周。 恢复是精细的,精确到特定的文件或数据库。 如果您需要从增量恢复,那么您无需首先费心完整恢复整个链,Plesk 会自行完成所有操作。 您可以将备份上传到任何地方:FTP、Dropbox、s3 存储桶、Google Drive 等。
F日:程序员终于完成了新引擎,我们将其上传到生产环境,导入旧数据,然后坐下来选择我们未来玛莎拉蒂的颜色。 我们仍在坐着选择。
第一个问题开始了。 预计新网站会比旧网站更重,但真正的好处是为了吸引流量,他们使用了 Yandex.Zen 等工具,带来了大量访问者。 该网站因 150 个并发连接而崩溃(我不是在谈论 RPS,因为他们没有测量它)。 我们开始在 php_fpm 设置区域中戳按钮并转动旋钮:
嘿,他已经有 500 个联系人了。 随着信用卡加入到促销手段中,流量也变得更大了。 下一个里程碑是 1000 个同时连接。 在这里我们必须重新完善代码并研究肌肉的灵魂。 溅起的水没有任何帮助,但我们并没有真正想到它。 我们启用了慢查询日志,向数据库添加了索引,从代码中删除了不必要的查询,并根据mysqltuner的建议再次清理了mysql配置。
新挑战 - 2000 个连接。 Plesk 17.8 版本刚刚发布,其中添加了 nginx 缓存等功能。 更新(出奇的简单)。 咱们试试吧。 作品! 然后他们就踩到了软弱的一面,Yandex.Zen 源停止工作。 该网站正在运行,但提要无法运行。 Feed 不起作用,没有流量。 气氛正在升温。 在环境的压力和缺乏想象力的压力下,我立即转向 strace 和 nginx,找到了我想要的东西。 事实证明,在某个时刻,愚蠢的 nginx 缓存了第 500 个错误,作为对 Yandex get feed.xml 的响应。 通过向缓存设置添加例外来修复它:
很明显,业主需要更多,波浪正在慢慢增加。 我们现在正在应对,但我们提前开始尝试 memcached,幸运的是 Laravel 几乎开箱即用地支持它。 不知何故,我不想只是为了“玩玩”而手动安装 memcached,所以我安装了一个 docker 镜像。 直接从面板上。
好吧,我在撒谎,我必须进入 shell 并通过 pecl 安装模块。 就在
然后有必要附上邮件列表。 没有中继,只有 smtp 身份验证。 我设置了一个邮寄地址,并使用其详细信息通过 PHP 发送新闻通讯。
不久前 Plesk Obsidian (18.0) 发布,我们根据过去的经验进行更新,没有恐惧。 一切都很顺利,甚至没有什么可谈的。 令人高兴的是,界面的质量有了很大的提高,变得更加现代,在一些地方变得更加方便。 Grafana 上的高级监控很酷。
我还没有详细讨论它,但是您可以例如为电子邮件中的任何参数设置警报。 给楼主,呵呵。
当我谈论界面时,它反应灵敏,并且在手机上运行得非常好。 在早期阶段,当我们试图找到 PHP 和其他东西的最佳设置时,这很有帮助。 尤其是当一个程序员一时工作热情在23:XNUMX做某事,而我一时工作热情在澡堂里喝伏特加,我迫切需要换点东西。
哦,顺便说一下。 图为PHP Composer已经出现。 我们还没有使用它,但是,对于 Laravel,它可以节省几次 shell 登录和安装依赖项的时间。 Node.JS 和 Ruby 存在相同的系统。
有了 SSL,一切就变得简单了。 如果域按预期解析,Let's Encrypt 一键完成,然后自行更新,无论是域本身还是子域,甚至邮件服务。
Plesk 本身作为一个软件目前相当令人愉快且稳定。 它可以安静地更新自身和轴,消耗很少的资源,并且工作顺利。 我什至不记得我踩到过某个地方的东西,这将是产品的明显缺陷。 当然,存在一些问题,但这些问题要么是由于配置不完善,要么是在连接处的某个地方,所以没有什么可抱怨的。 与 Plesk 合作的印象总体上是愉快的。 它没有任何(任何)聚类,而我们需要理解这一点。 LB和HA都没有。 你可以尝试,但所涉及的努力会很大,所以最好从一开始就做一些不同的事情。
我想我们可以总结一下。 对于没有管理员或没有足够的管理员的情况,当托管和在其上运行的网站的价格超过,比如说,100 美元,当我们不是在谈论 1500 美元的野蛮分享时服务器上的站点,当决策者面临着是否可以选择雇用一名兼职管理员,或者花半美元购买软件并拥有一名管理员,或者根本没有管理员时,这绝对是有道理的。 从远程管理员的角度来看 - 同样的事情。 每月 10 美元,节省时间并在很长一段时间内提供工作灵活性о较大的金额。 例如,如果有人强烈要求我负责一个类似的项目,我会坚持将其转移到 Plesk。
来源: habr.com