我想分享一些关于诸如兼职管理员的商业单服务器Web项目的控制面板之类的东西的必要性或不必要的印象。 这个故事始于几年前,当时熟人要我从技术角度陪同一家企业(新闻网站)的购买。 有必要稍微了解正在做什么,确保以适当的形式和数量传输所有必要的细节,并从战略上找出可以改进的地方。
交易完成了,不再需要小提琴手了。 结束了。 不完全是
该站点在Linode上的双核4-gig VMk上运行,在一些生机勃勃的Debian5上运行,运行时间为400天,并且列出了未更新的软件包。 关于Samopisny TsMSke,nginx,php5.3 FPM,mysql调优的Percona的Web部件。 原则上,它可以工作。
在与我交谈的同时,新所有者正在寻找一名程序员,以使该项目达到预期的目标。 找到了 程序员评估了流量和流量,并决定他能够进行优化和成本管理。 在他通常的IS ****的控制下,他将整个站点迁移到700卢布的共享主机。 几天后,所有者再次打来电话:“一切都在放缓,看来我们已经破产了。” 我试图通过面板纠正这种情况,但是经过一段时间徒劳的尝试后,将PCP或处理程序的版本从fcgi更改为fpm,却放弃了,爬上了外壳。 在那里,我找到了其中包含的调试程序,该调试程序使用来自肌肉的密码在某些文件夹上的777照亮了整个Internet,而那时,这些文件夹正因大量恶意软件和类似游戏而破裂。 所有者意识到并认为节省主机,程序员和管理员的费用是错误的,他们只看一眼事情的进展。
我们要去RuVDS。 比英国的Linode稍微靠近一点,如果您突然想要存储个人数据以及所有这些信息,则无需搬到其他任何地方。 由于计划扩展该项目,因此他们选择了VMKU以“实现增长”:4核,8 GB内存,80 GB磁盘。 这并不是说我不知道如何用手使用nginx配置,我只是不热衷于如此亲密地完成此项目(请参阅上面的兼职部分)。 因为-放置Plesk(这里将省略安装详细信息,因为大体上它们不存在:我启动了安装程序,为管理员设置了密码,输入了密钥-一切),当时是17.0。 基本设置开箱即用,其中包括fail2ban和PHP的最新可用版本nginx。
可能值得停止并解释原因。 由于我很少做这样的事情,并且我没有每种情况的任何特殊工具和空白,因此很明显,首先需要快速地进行一些自动化的基础工作,其次是安全的,其次是所有最佳实践有人已经实施了。
因此,设置。 他体面地节省了时间,在新服务器上重新启动站点几乎是即时的。 它仍然要用肌肉配置来摆弄,给它一半的内存并增加缓冲池的数量,把一半的内核给nginx(Splash不会触及全局配置),然后进入shell几天,以查看mysqltuner的统计信息。 是的,我从扩展目录中购买了付费的ImunifyAV,以摆脱洪水泛滥的恶意。 共有11,000个受感染的文件。 令人讨厌的是,将模糊的代码片段倒入了静态变量中,而用手刷它会完全变钝。 起初我尝试了ClamAV,但事实证明他没有采取这种方法,但ImunifyAV可以。 而且,已固化的文件保持工作状态,仅删除了带有恶意软件的文件。
算术很简单:VMKu每月50美元,Splash每月10美元(实际上更少了,因为您在购买一年后立即享受了两个月的折扣),而反病毒则是3美元。 还是我花了很多时间花了些钱,我一开始会花在服务器上,然后手动耙动这些马s。 所有者对此对齐感到非常满意。
同时,他们找到了新的程序员。 我们同意他的职责分配,为测试版本创建了一个子域,然后开始工作。 他在Laravel上看到了该网站的新版本,而我查看了fail2ban%)。
有趣的是,好奇心的流向并没有停止,在被禁止的地址列表中总是有大约一百个地址。 效果很有趣:特别是通常,当我进入shell时,在问候语中看到约20000-30000次通过SSH的尝试失败。 启用fail2ban时,大约需要70。投资的努力:0。不幸的是,焦油下降了。 默认情况下,WAF(modsecurity)为“半启用”:处于发现模式。 也就是说,他将可疑活动写入日志,但实际上未采取任何措施。 根据随附的监狱报告,fail2ban会不分青红皂白地读取所有日志,并浸透所有移动的内容。 因此,我们禁止了一半的编辑人员:D. 我不得不禁用此监狱,并将必要的IP地址放在白名单中以确保可靠性。 投入了大量精力:用鼠标拨两次,并告诉编辑者说出他们的IP地址。
程序员立即喜欢的是能够直接在面板中上载数据库并快速访问phpMyAdmin的功能。
我喜欢的东西-日志和备份。 日志被写入并自动旋转。 备份的配置非常简单。 在最缓慢的时间里,完整备份完成了,大约10 GB,然后每天递增200兆字节,为期一周。 粒度恢复到特定文件或数据库。 如果您需要从增量还原,那么您就不必先费心整个链的全部和还原,Splash会自己做所有事情。 您可以将备份上传到任何地方:在ftp上,在保管箱,s3存储桶,Google驱动器等上。
第F天:程序员终于完成了新引擎的开发,我们将其倒入产品中,导入了旧数据,并坐下来选择了他们未来玛莎拉蒂的颜色。 我们仍在选择。
第一个问题开始了。 预计新站点要比旧站点重,但真正的原因是Yandex.Zen尤其被用来吸引访问量,从而成批地吸引了访问者。 该站点在150个同时连接时处于弯曲状态(我不是在谈论RPS,因为我没有测量它)。 我们开始在php_fpm设置区域中戳按钮和扭转旋钮:
运营商,已经拥有500个连接。 随着信用卡被用于促销手段,交通的浪潮变得更大。 下一个里程碑是1000个并发连接。 在这里,我必须避免编写代码,并查看我灵魂中的肌肉。 飞溅并没有帮助,但他们并没有真正想到它。 他们打开了慢查询日志,在数据库上挂起了索引,从代码中删除了不必要的查询,并根据mysqltuner的建议再次梳理了mysql配置。
新挑战-2000个连接。 刚刚设法发布了Plesk 17.8版本,其中包括拧紧了nginx缓存。 更新(非常容易)。 我们尝试。 有效! 然后他们踩了一下,Yandex.Zen饲料停止工作了。 该网站正在运行,Feed无法正常运行。 供稿无效,无流量。 气氛正在升温。 在环境压力和缺乏想象力的压力下,我立即爬到nginx,找到了我想要的东西。 事实证明,在某个时候,愚蠢的nginx会动态缓存第500个错误,作为对Yandex get feed.xml的响应。 通过将异常添加到缓存设置进行更正:
显然,所有者需要STILL,波浪正在缓慢增加。 虽然我们正在处理它,但是由于Laravel几乎是开箱即用的,因此我们开始预先尝试使用memcached。 我以某种方式不想用手将memcached“玩耍”,所以我安装了docker映像。 直接从面板上。
好吧,我在撒谎,我不得不进入外壳并将模块穿过pecl。 直接按照
说明进行 。 关于吞吐量的增加,没有什么可说的,没有足够的大量涌入。 在本地主机上获取了站点引擎:11211,显示了统计信息,内存正在消耗。 如果您喜欢,让我们看看下一步该怎么做。 要么以这种方式离开,要么将“真实”权利放在Axis中。 或以相同方式尝试redis
然后,我需要附加一个邮件列表。 没有中继,只有smtp身份验证。 我得到了一个通讯地址,通过PHP的详细信息,我们进行了通讯。
不久前,Plesk Obsidian(18.0)问世,根据过去的经验进行了更新,无所畏惧。 一切进行得非常顺利,甚至没有什么可谈的。 从令人愉快的角度来看,该界面的质量已大大提高,已经实现了现代化,并且在某些地方变得更加方便。 很酷的Grafana高级监视。
我还没有找到答案,但是您可以例如为邮件中的任何参数配置警报。 给主人,哈哈。
既然我在说接口,它是自适应的,并且在电话上确实能很好地工作。 在早期阶段,尽管我们试图找到最佳的PHP设置和其他功能,但它起了很大的作用。 尤其是当一个工作热情高涨的程序员在23点钟做某事,而我在洗澡时喝伏特加酒以攻击工作热情时,我迫切需要进行一些改变。
哦,对了 在图中,出现了PHP Composer。 我们还没有和他一起玩过,但是,对于同一个Laravel,他可以在shell中保存一些登录信息,并花一些时间安装依赖项。 Node.JS和Ruby存在相同的系统。
使用SSL,一切都很简单。 如果域确定了应该在的位置,则一键完成“加密”,并在域本身,子域甚至邮件服务上对其进行进一步更新。
作为软件,Plesk本身目前非常令人满意且稳定。 自我更新,轴安静,消耗很少的资源,运行平稳。 我什至不记得我踩过某处东西,这显然是产品的缺陷。 当然存在问题,但是它们要么是由于配置不完善,要么是由于连接处的某个地方,因此没有什么可抱怨的。 使用Splash的印象通常令人愉悦。 任何(任何)群集都是它所缺少的,并且必须要了解这一点。 LB和HA均不可用。 您可以尝试,但是会花费很多精力,因此最好一开始做一些不同的事情。
我想你可以总结一下。 对于没有管理员或不够的情况,当托管和站点旋转的价格超过(例如)100 cu时,当服务器上的1,500个站点的占有率不高时,在决策者面前值得选择兼职,或者购买软件并让管理员获得“半价”,或者根本不启动它-这绝对是有道理的。 从远程管理员的角度来看-同样的事情。 每月10美元,并且可以节省大量时间并节省工作时间。 例如,如果强烈要求我在机翼下进行类似的项目,那么我将坚持运送到Plesk。
