我正在创建我的第一个网站,我想克隆 fmylife.com 并为此购买了一个名为 fmyscript 的脚本。
运行 fmyscript 的要求如下:
Apache web server with mod_rewrite enabled. MySQL version 4.0+ GD Library 2+ with freetype support. PHP5 with the following configuration safe_mode = off short_open_tag = on output_buffering = on register_argc_argv = On session.gc_maxlifetime = 15000 (Recommended or higher) register_globals = off magic_quotes_gpc = on allow_url_fopen = on
我想在 linode.com 的 VPS 上托管我的网站。我的问题是:
- 我可以在 VPS 上运行这样的脚本吗?
- 在托管包含用户生成内容的网站时,VPS 有哪些优点和缺点?
- linode.com 上说“所有传入流量都是免费的”。这到底是什么意思?例如,如果我订购了“Linode 512”套餐,传输量为 200GB,每天有 100-200 万访问者,那么这就是传入流量,对吗?无论如何,这是我的猜测。
基本上,我想要一个运行快速的网站,可以支持每天数十万次点击,现在我正在为这样的网站寻找最佳的托管解决方案。
如果我的写作令人困惑,请原谅,英语不是我的母语。
提前感谢您的帮助并祝您圣诞快乐!
答案1
100-200万访客一天的时间太长了,我怀疑你是否能够仅靠 VPS 就能完成这些任务。
回答您的问题:
1 ) 是的,您可以在 VPS 上执行此操作。但这需要您对服务器有足够的基本了解才能进行设置。VPS 允许您执行此操作,因为您可以在其上成为 root。
2 ) 与什么相比?与随机共享托管解决方案相比,它为您提供了大部分优势;完全控制功能、通常更好的资源分配、通常专用资源等。“缺点”是您需要自己维护服务器软件,您需要技术知识来运行它。
3 ) 传入流量与传出流量相比非常少。基本上,只有请求是传入的。当然,除非你建立了一个图片托管网站,你将拥有相当数量的传入流量。所有内容已提交用户提交时为传入流量。当将其提供给其他用户时,则是传出流量。
我认为每天 100-200 万的访客消耗的流量比每月 200 GB 要多得多。但话又说回来,这取决于您的平均请求大小。
我运营的一个网站每天有大约 13,000 名独立访客。该网站每月消耗大约 280 GB 的流量。
总而言之,在我看来,您目前不适合使用您运营的服务器上托管的网站进行生产。我并不是想妄下判断,但您提出的问题给了我一些提示。
要吸引如此多的访客访问您的网站,需要进行大量的营销。如果我是您,我会将我的网站放在符合您要求的共享网络主机上,然后购买小型 VPS 并开始学习。
答案2
首先,回答你的问题:就功能而言,专用服务器、VPS 或云计算(例如 Amazon EC2)解决方案之间几乎没有区别。它们都提供根访问权限,让你安装所需的任何内容并根据需要设置配置。它们之间的区别在于资源在用户之间分配的方式(以及成本)——对于云解决方案,则在于部署的简易性。
Apache、MySQL 和 PHP(以及 GD)是一种非常常见的设置 - 并且 PHP 的所有特定配置都可以在 php.ini 中轻松完成。(顺便说一下,GD 用于图像处理 - 例如生成 CAPTCHA、随机头像、缩略图等。)
至于用户生成的内容 - 需要考虑的因素之一是所需的处理。图像处理(甚至大量创建缩略图)、转换视频等需要大量处理(CPU 和 RAM) - 而 VPS 不太可能处理这种压力。此外,根据类型,用户生成的内容可能需要大量存储空间。有一种以云存储形式存储的解决方案(例如 Amazon S3,您可以使用 S3fuse 将其安装为本地存储),它将为您提供无限存储空间 - 您可以按使用量付费。
传入流量是指进入您服务器的所有数据,而传出流量是指您的服务器传输的数据。传入流量包括:
- 下载软件(例如 Apache、MySQL)
- 用户上传内容(例如图片、视频等)
- 用户请求页面(请求包含一些标题、附加数据(例如 GET/POST)、cookie 等)
- FTP 内容已上传到您的服务器
传出流量包括:
- 您的服务器生成的所有内容 - 在您的网站上查看的所有页面、图像等
- 从您的服务器下载的文件
- 从您的服务器发送的电子邮件
估算一下平均页面大小。如今的平均网页大小已经超过了600kB- 但假设您确实优化了页面,缓存效果很好,并且每次页面浏览仅发送 100kB。每天有 100 万访问者(浏览量有望超过访问者数量)- 您需要考虑 100kB * 1M = 100GB/天 - 因此每月约为 3TB,非常保守 - 更可能接近每月 10TB。
一个运行速度快的网站取决于几个因素 - 首先,脚本的复杂性 - 简单脚本或静态文件的服务速度总是比复杂动态脚本快。其次,优化程度,如果您每天要处理数百万次点击,您需要缓存所有动态内容以减轻服务器负载。最后,您运行的硬件 - 在具有 512MB RAM(和 Apache)的单个 VPS 服务器上运行动态(PHP-MySQL)网站并尝试每天处理几百万次点击,这在最好的情况下也是不太可能的。
我运行了一个 PHP-MySQL 网站,在具有 1GB RAM 的 VPS 上相当轻松地获得 60k 次/天的点击量 - 但用户内容主要是基于文本,而不是图像/视频)。
每天 100 万次点击大约相当于每秒 11.5 次点击。如果每个请求需要您的服务器 1 秒钟来处理,则意味着您平均需要运行 12 个 Apache 线程。如果每个线程占用 30 MB 的 RAM - 您已经使用了 360MB(一个好的估计是峰值流量至少高出 3 倍 - 此 VPS 无法处理),您还需要考虑 MySQL,它将需要大量内存来处理如此数量的请求。大多数拥有大量流量的数据库密集型应用程序的站点都将数据库服务器与其应用程序服务器分开。
底线:您的 VPS 肯定会运行您的脚本 - 但很可能它无法每天满足几百万次点击的需求。
现在来谈谈论点的另一面 — — 活在当下,梦想明天。
不是愤世嫉俗,但你说“这是你的第一个网站”——鉴于此,每天几百万次点击量是相当乐观的。除非你对这种流量有明确的保证(既定的用户群、病毒式营销活动、与重要网络存在签订的合同等),否则每天几百次——或者一开始几千次点击量可能是你开始关注的事情。在没有确定会发生的情况下计划每天几百万次点击量,将导致你将资源浪费在可能在很长一段时间内都不需要的事情上。此外,你以后总是能够扩大规模。希望随着你的流量增加,你的收入也会增加,你可以考虑更大规模的部署。
最后,有几个一般性建议:不做任何假设,但您的问题的性质表明您刚刚开始使用服务器。如果您希望设置自己的服务器,我建议您学习的一个好方法是获取 Virtualbox 的副本,并设置 CentOS 服务器(或者 Ubuntu,如果您更喜欢的话)。安装 PHP、Apache、MySQL 并设置您的脚本 - 测试它并查看它如何工作,并解决您遇到的任何困难。这样做的好处是它是免费的 - 您可以花时间学习和解决问题,而无需支付托管费用,您会发现这很容易做到,或者您需要研究其他方法。对于一个好的指南,我建议使用 HowToForge 的 Perfect Server 教程。
如果您确实需要高并发性,并且不介意付出一些额外的努力,您会发现 nginx 和 php-fpm 应该为您提供在 VPS 上运行的更好解决方案(Apache 使用的重写规则通常可以转换为 Nginx 识别的规则)。但是,如果您决定使用 Apache,您肯定希望研究 FastCGI - 尤其是 php-fpm,而不是使用 mod_php。此外,一旦您的页面浏览量开始大幅增加,您还可以研究 Varnish 来缓存您的动态页面。
另一个值得考虑的选择是一些云产品。优点是它们可以随着您的流量而扩展 - 当您从小规模开始,您将产生相当小的月度成本 - 随着您的成长,您的成本将会增加(但希望您的收入也会增加) - 它们非常适合学习(非常容易拍摄快照,如果您犯了错误可以恢复某些内容,如果需要启动更多服务器等)。最大的缺点是您通常无法限制您的成本 - 如果您的网站最终确实使用了 10TB 的带宽,您将最终收到非常高昂的账单(超过 1200 美元,仅带宽费用) - 如果您处于这种情况,您肯定需要另一种解决方案。但是,这些服务器(例如 Amazon EC2、Rackspace 等)非常适合学习和在您需要时运行。