几周前接到一个亲戚的留言,说是他们公司的工会想做个网页。由于最近朗读者之类的节目比较火,又是临近一个不大不小的节日,于是想做一个可以播放儿童朗诵的投票页面,可以在手机端访问,并且进行投票。
这家公司人数规模比较大,有上千人,儿童比例也不少。亲戚听说我是做网页的,想拜托我做这个。制作时间只有一周,时间略紧。
和对方公司工会的秘书沟通后,对方的需求很明确。
但是缺点同样很明显
于是问题来了,服务器和域名可以在阿里云上面买,阿里云是付费即时到货的,但是现在除了在通管局备案外还要进行公安局备案,一周的时间不知道够不够。
好在我之前学习使用了Github Pages和Heroku于是先写了个demo测试一下备选方案。
Github Pages只能运行html代码,Heroku能运行php代码,阿里云数据库的话,不进行备案也是可以用的。
GitHub Pages sites have a recommended bandwidth limit of 100GB or 100,000 requests per month. If your site exceeds that quota, you may receive a polite email from GitHub Support suggesting strategies for reducing your site’s impact on our servers, including moving to a different hosting service that might better fit your needs.
然而在该回答所引用的source中并没有找到关于100,000请求数的限制。
GitHub Pages source repositories have a recommended limit of 1GB .
Published GitHub Pages sites may be no larger than 1 GB.
GitHub Pages sites have a soft bandwidth limit of 100GB per month.
GitHub Pages sites have a soft limit of 10 builds per hour.
综合上面得出备选方案
虽然Github Pages的usage limits里没有关于100,000请求数的限制描述,宁可信其有不可信其无。
鉴于客户的使用人群广大(该公司员工数上千,朋友圈一发分分钟破万),决定若一周时间无法通过两次备案则使用2号备选方案。
接下来就是把一些事项和客户工会的秘书罗列清楚,假如他们都可以接受,再进行开发。
购买域名、租服务器,上阿里巴巴都能快速搞定,支付宝扫一扫付钱,域名和服务器即时到帐。
由于这次时间较紧,我没有买云ECS而是买了预装PHP+MySQL环境的独享虚拟机,这里有个坑需要了解
/tmp
目录(session的保存目录)下的和/dev/home/username/htdocs
目录下的文件。底配1核1G1Mbps5G网页空间500M数据库一年298块。 新买的域名都要先去工信部备案,跟着流程一步步走。
由于我是在阿里云上买的域名和服务器,工信部备案可委托阿里云进行(这也是我选择阿里云的一个理由)。
只要打印一张委托书,打印出来填上姓名日期拍个照,剩下交给阿里云。
备案审核通过后,预留的手机号会收到【工信部备案系统】发来的短信通知,邮箱也会收到【阿里云备案】发来的《通管局审核通过》邮件。
工信部备案审核通过(收到短信和邮件)后需要约1日的时间,才能在工信部查询网上查到。
必须要确保能够在工信部查询网上查到自己的备案号,才能进行公安局网站备案,查不到的话即使提交了备案也会被驳回。
这一步操作我用了3天(包括一个周末),不知道是不是委托了阿里云的关系。
根据公安局的一个通知,所有的网站必须在当地公安局进行网站备案,上海的通知长这样。
公安局备案得自己来搞,分为两步。
这一步我用了2天,其中第一步主体审核可以和工信部备案一起做,互不影响。公安局审批还是挺迅速的,一般提交后过个把小时,就能收到通过或拒绝的短信通知。
网页样式这块直接拉过来就能用,唯一需要变动的是页首的图片背景,对彩色渐变文字以及一些小图标进行替换 小图标可以上iconfinder找,有免费使用的。
终于用上了我自己造的api根文件和db类。
由于客户要求要将投票方限制为个人,却又没有微信公众号,而且不允许增加短信验证和图形验证,说是怕影响参与人数。无奈下只能进行IP限制,将私有地址和广播地址进行排除。以防万一顺便加了个自定义ip地址排除。
客户发过来的照片需要按照4:3的大小把脸切出来,使用PS的矩形工具(U)固定大小、自由变换Ctrl+T、按比例缩放Shift+拖、裁剪工具(C)、调整图像大小Alt+Ctrl+I,对某些倾斜的照片摆正后使用仿制图章工具(S)进行修复等操作。五十多张图切下来,对PS的快捷键有了大致的了解。
之前想着这个音频随便一压,就用格式工厂(FormatFactory,简称FF),没想到在客户发来的音频各种各样格式都有,有些格式的音频被FF转压过以后会缺斤少两。
犹豫间想到了大学时压片用的MeGUI(下称MG),凭借记忆,稍微配置了一下。经测,针对同一个音频进行mp3转换并压缩,MG压制的速度和FF差不多且不会缺斤少两。MG可以将音频码率压到8bit,而FF只能压16bit。
开发过程中用到微信扫一扫进行测试,发现会先进入蓝色感叹号页面,进行站内跳转也会先显示蓝色感叹号。按照页面内提示,提交了通管局的备案号,约2天后,蓝色感叹号页面便不出现了。
投产前一日,将一个测试地址发给客户秘书,客户内部查看样式并进行微调。
当晚,清表清tmp,将带宽提升到7M。客户秘书告知将于约定日的上午八点半进行二维码与链接的投放。
约定日当天,上午八点半,带宽用量飙升,又加了2M,提到9M。经观测没有再出现破峰值。
class="caption">
阿里云虚拟机增加带宽有个坑,如下表所示。
M数月数页面显示应付金额按25/M/月计算应为 1 1 25 25 2 1 50 50 3 1 79 75 4 1 179 100 5 1 279 125 1 2 50 50 2 2 100 100 3 2 175 150 4 2 358 200 2 3 150 150 3 3 237 225 2 4 200 200 3 4 316 300由此表可得,假如要买带宽,每次2M的买比较划算,经实测一天至少可连买4次。由于业务用量已够,也没有测试更多的购买量。
因为客户这个不准那个不准,在投放当日的10点多果然出事了。有一名参赛者的票数异军突起,高出第二名800多票。经过查看记录,有600多票是在近20分钟内投出的,显示的来源IP均不同,且IP为正常值,符合先前制定的规则。在做表的时,抓取了投票请求的请求头,经过分析发现了不同。
\正常请求值刷票请求值 $_SERVER[‘HTTP_ORIGIN’]'http://www.xxx.com'
''
getallheaders()[‘Origin’]
'http://www.xxx.com'
2
发现问题后,和客户进行了沟通,客户协商后决定将刷票方的票数退回,并由客户方领导对享受刷票的参赛者进行口头劝诫。
虽然出现了刷票问题,客户也表示不需要增加限制,但是还是对这一现象增加了代码限制。
之后直到投票结束,没有发现其他的突发情况。
项目结束当天早上,导出以票数为排序的参赛选手excel表发给客户秘书。
What are bandwidth and traffic limits for GitHub pages? - quora
What is GitHub Pages? - github
为你揭开阿里云公安备案的神秘面纱!申请到成功历时22小时 - 阿里云开发者论坛
备注:本文发布于2017-06-06,最近写文章都用md,文章也直接发到了我个人的github page内,有时间会逐步贴进博客园里。