how to-start-your-own-website v1.3
TRANSCRIPT
为何建立个人网站
4
l 每个人都有创业梦
l 个人站点Ø展现个人特点
Ø试验新技术和新产品u开源Wiki
u开源Blog
u新开发工具
l 个人站点也可以…Ø TechCrunch
ØMartinfowler.com
ØWeibo/tmall
5
站点建立要素
域名 服务器 程序
注册注册
购买购买
共享主机共享主机
专用主机专用主机
自己编写自己编写
开源开源
购买购买
维护
硬件维护硬件维护
系统运营维护系统运营维护
业务处理业务处理数据中心数据中心
域名注册
7
l 域名选择Ø 国际域名(.com/.net/.org)注册
uDomainSite
uGodaddy
uetc
Ø 国内域名(.cn)注册
u中国万网
u新网
uEtc
l 国际/国内域名注册比较Ø 国际域名更便宜[$3/年]
Ø .cn不再对个人开放
Ø 国内域名需备案
主机商选择
9
l 国内主机不推荐
Ø 费用高
Ø 需备案
l 国外主机
Ø $5/月
Ø Windows主机
uASP/ASP.NET/PHP
Ø Linux主机
uPHP/Perl/Ruby/Python
l 国外主机商选择
Ø Godaddy
Ø LunarPages
Ø Amazon EC2 (免费使用一年MicroInstance)
用户体验
11
l 跨浏览器支持Ø IE (6,7 , 8,9)
Ø Firefox
Ø Chrome/Safari (webkit)
l 不要向用户显示不友好错误信息
l 不要明文显示用户邮件地址
l 页面Post之后重定向以避免重复提交
l 向用户提供提交建议或者其他反馈的功能
l 建立一些限制Ø CAPTCHA验证码
Ø限制搜索发帖时间间隔
l 研发中心UI十八条黄金守则
性能 & SEO
12
l 了解缓存机制Ø HTTP 缓存/内存缓存
Ø 知道可以缓存,什么没有必要缓存,何种方式缓存比较合适
l 启用Gzip压缩
l 在网站根目录放置favicon.ico
l CSS放在顶部,JS放在底部
l 使用搜索引擎友好URL (URL Rewrite)
l 设置robots.txt (可以自己尝试写个爬虫)
l 有个xml格式的sitemap
l 使用Google Analytics或者Alexa Analytics
l 避免类似Click Here的连接
l 研发中心UI十八条黄金守则
Demo
13
l 跨浏览器支持工具Ø IETester: 模拟 IE6, IE7, IE8, IE9
l 性能Ø Firefox, firebug,yslow
Ø Httpwatch/httpfox/fiddler
l SysinternalsSuiteØ Dbgview
Ø Procex
Ø Filemon
Ø …
安全
14
l OWASP开发指导Ø 每年发布Top 10网站攻击弱点
l 永远不要相信用户的录入
l 不要试图创造自己的认证系统
l 安全保存密码
l 处理信用卡信息 (PCI-DSS)
l 敏感信息页面使用HTTPS
l 常见漏洞Ø SQL Injection
Ø XSS/CSRF
l 研发中心代码安全规范
l 保持了解最新的攻击方式(OWASP)
安全 – Web SSO
15
l 为什么需要Web SSOØ 当存在多个子站点
Ø 使用第三方认证登录
Ø 提供给第三方认证登录
Ø 提高用户使用友好度
l 原理
用户访问被保护信息...
...认证信息返回信息提供商.
1
3
...用户被指向到认证中心登录...2
应用用户
认证中心
安全 – Web SSO
16
l 常见实现方法Ø Cookie
Ø CAS
Ø SAML
Ø OpenID
Ø OAuth
l 问题:
Ø单点故障
Ø需要为各个语言提供客户端支持
Ø如果SSO实现有漏洞其下所有应用都被暴露
Ø SSO安全报告 by Rui Wang, Shuo Chen和XiaoFengWang,研究googleId, paypal Access, facebook等,找到数个严重逻辑错误
设计和架构
17
l Think big, Start Small; Keep every stage small
l 持续重构
l 择机改版
l NOSQL (Dynamo vs Bigtable)
l 相对稳定的数据结构
l 引入合适的技术
l 避免技术债务
l 备份,备份,备份
l SHIT Happens – 做好准备
l Scale up vs Scale out
l ITIL/MOF
l Family Tree Scenario
杂项
18
l 理解HTTP协议,知道 GET, POST, sessions, cookies 等
l 保证XHTML/HTML和CSS符合W3C规范
l 了解Javascript,Ajax以及Javascript框架
l 了解浏览器如何处理页面资源(javascript, CSS etc)
l 2/8准则:20%开发,80%维护
l 有个好的错误报告及跟踪机制
l 版本管理工具
l 文档化
l 记录适度的日志
l 了解开发环境:操作系统,编程语言,Web Server, Database etc.
为何自建主机
20
l 自建主机的好处
Ø 访问速度可以保证
Ø 流量无限制
Ø 避免成为被天朝特色殃及的池鱼
Ø 隐私数据可以得到更好的保护
Ø 可定制系统环境(Linux/Windows/Unix)
Ø 方便跟踪性能和日志
l 自建主机的不足
Ø 费用增加
u硬件设备
u软件License费用
u电费/UPS设备
Ø 安全要求
Ø 运维要求
Ø 备案要求
服务器性能估算
23
l Web服务器 要求估算
SPECweb99:
∑(各业务处理的消息交互次数) = ∑(用户数 * 该业务用户使用比率 * 每用户业务每分钟使用次数 * 每个Session的呼叫次数) * 峰值系数
l 数据库服务器要求估算
TPC-C(TPM)= TASK * S * F / (80% * T * C)
TASK:为每日业务统计峰值交易量
T:为每日峰值交易时间
S:交易的复杂度
C:主机CPU处理余量
F:业务量发展冗余预留
技术进阶
25
l 不要拘泥于特定语言/操作系统
l 选择恰当的工具(根据任务场景)
l 知道如何重构系统, 理解Unit Test和TDD相关知识
l 理解各种缓存机制适合的场景
l Scale up vs Sacle out
l 懂一点UI设计方面的知识
l 知道些项目管理知识
l 关注开源社区
l 向他人分享知识
l Architectural pattern
Ø ESB/EAI/SOA
Ø ETL/DW/BI
ØMDM
ØP2P
References
l Amazon EC (AWS)注册
http://blog.csdn.net/along602/article/details/6410732
l Godaddy 注册
http://www.issoho.com/html/res/godaddy_domain.html
l Progressive Enhancement
http://en.wikipedia.org/wiki/Progressive_enhancement
l Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html
l Security Now
http://twit.tv/sn
l Check Browser Compatibility
http://browsershots.org/
l Browser Security Handbook
http://code.google.com/p/browsersec/wiki/Main
28
References
l RAID
http://en.wikipedia.org/wiki/RAID
http://baike.baidu.com/view/7102.htm
l TPC事务处理性能委员会
http://www.tpc.org
l The Standard Performance Evaluation Corporation
http://www.spec.org/benchmarks.html#web
l Open Web Application Security Project
https://www.owasp.org/index.php/Main_Page
l CDN 内容分发网络
http://baike.baidu.com/view/21895.htm
l Continuous Integration
http://martinfowler.com/articles/continuousIntegration.html
l NOSQL Database
http://nosql-databases.org/29