产品开发完怎么正式上线?从云服务器部署、域名、ICP备案到短信和公安备案的完整流程
产品开发完成并不等于可以直接上线。部署到云服务器后,还要处理域名、ICP备案、HTTPS、短信资质与运营商报备、公安备案、安全、备份和监控等事项。其中短信报备尤其容易拖延上线。本文按照实际发布顺序,讲清互联网产品从开发完成到正式对外运营的完整流程和常见坑。
很多人第一次做互联网产品时,会把“开发完成”当成上线前的最后一步。
前端写完了。
后端跑通了。
数据库也建好了。
本地测试没有问题。
于是下一步似乎就是:
买一台云服务器,把代码部署上去,然后正式上线。
真正完整走过一次以后就会发现,事情远没有这么简单。
一个主要面向中国大陆用户正式运营的网站,从代码开发完成到真正上线,中间至少还隔着:
域名;
云服务器;
域名实名认证;
ICP备案;
DNS解析;
HTTPS证书;
数据库;
对象存储;
短信实名资质;
短信签名;
运营商实名报备;
短信模板;
公安联网备案;
服务器安全;
数据备份;
日志和监控。
其中有些事情十几分钟就可以完成,有些却可能需要等待一两个星期甚至更久。
所以产品上线最容易踩的坑,并不是某个技术问题特别难,而是:
你以为所有事情都可以等产品开发完以后再办,最后却发现真正卡住上线时间的,往往是备案和审核。
如果重新做一次,我不会再按照“开发完成以后再处理上线”的顺序,而是从产品开发中后期开始,就让域名、备案、短信和技术开发并行推进。
第一步:产品还没开发完,就应该开始准备上线
一个产品如果最终准备部署在中国大陆的云服务器上,我会提前准备:
公司主体、云服务企业账号、域名、云服务器。
如果产品需要手机号验证码登录,还要再加一件:
短信服务。
尤其是短信,越早开始越好。
因为云服务器通常购买以后马上就能使用。
域名也可以很快注册。
SSL证书申请通常也不复杂。
但是ICP备案、短信实名资质和运营商报备,都存在人工审核和等待时间。
这种时间不是增加开发人员就能压缩掉的。
所以真正正确的上线思路应该是:
开发和备案并行,而不是先开发、再备案。
第二步:公司产品尽量统一使用企业主体
如果产品未来由公司正式运营,不建议长期把生产环境建立在个人账号上。
更合理的方式是使用公司主体完成云服务平台实名认证。
以后公司的:
云服务器;
对象存储;
短信;
域名;
备案;
CDN;
云数据库
等资源,都尽量统一放在企业主体下管理。
这里最重要的不是“显得正规”,而是减少后面各种主体不一致的问题。
例如:
域名实名认证是个人;
ICP备案主体是公司;
短信签名又是另外一家主体;
服务器还在创始人的个人账号下面。
产品刚上线时似乎没什么影响。
等以后要换负责人、融资、迁移服务器、增加管理员或者处理合规问题时,就会发现特别麻烦。
所以如果一开始就确定产品由公司运营,最好从第一天开始就把主要生产资源归到公司主体。
第三步:域名一定要提前买
品牌名字基本确定以后,就可以开始注册域名。
不要等产品完全开发好了才想:
“网站到底叫什么?”
因为域名不仅是一条网址。
产品上线以后,它会出现在:
网站;
搜索引擎;
短信;
公众号;
小程序;
用户协议;
隐私政策;
宣传资料;
合同;
ICP备案;
公安备案;
API;
第三方登录回调地址。
以后再改域名,并不是换一个网址那么简单。
尤其是产品已经有真实用户以后,换域名还可能涉及:
登录状态;
Cookie;
搜索权重;
旧链接;
接口白名单;
OAuth;
短信链接;
支付回调。
所以域名最好提前确定。
如果品牌比较重要,还可以顺便把常见的核心后缀一起保护下来,避免产品做起来以后发现最重要的域名已经被别人注册。
第四步:域名买下来以后,马上做实名认证
买完域名以后不要只放着。
如果后面要做ICP备案,域名需要完成实名认证,并且备案主体和域名实名信息需要符合备案核验要求。
如果网站明确由公司运营,域名最好一开始就使用公司主体实名认证。
不要先用个人身份购买并实名。
公司成立以后又改成公司。
等真正做ICP备案的时候才发现主体信息不一致,再重新处理域名实名信息。
这种问题通常不是解决不了,而是非常容易浪费上线时间。
第五步:服务器放境内还是境外,要在一开始想清楚
如果主要用户在中国大陆,并且准备长期正规运营,我一般更建议使用中国大陆地域的云服务器。
优势很直接:
国内访问延迟通常更低;
网络体验更稳定;
可以正常完成ICP备案;
对象存储、CDN、数据库等国内云服务接入也更方便。
但是使用中国大陆服务器正式提供网站服务,一个最重要的前提就是:
ICP备案。
有的人为了避开备案,会直接把服务器部署到香港或者海外。
技术上当然可以。
但如果主要用户一直在中国大陆,而且这是一个准备长期运营的正式产品,仅仅为了少走一次备案流程,就长期使用境外服务器,并不一定是最优方案。
ICP备案麻烦的是第一次。
备案完成以后,后面的运营反而更加顺畅。
第六步:服务器不用一开始就买得特别贵
创业项目非常容易出现一种典型浪费:
产品还没有用户,就按照未来几十万用户的规模采购服务器。
实际上冷启动阶段真正的问题通常不是服务器性能不够,而是根本没有那么多流量。
普通Web产品完全可以根据自己的技术栈,从合理的小规格开始。
例如:
应用服务器;
云数据库或者自建数据库;
Redis;
对象存储。
后面真实用户和流量起来以后,再扩容。
云计算最大的优势本来就是弹性。
不要在产品还没有验证市场之前,把大量现金花在闲置算力上。
但是有两样东西不能因为用户少就省:
安全和备份。
第七步:只要产品需要短信,短信资质就应该优先申请
这是我认为整个产品上线过程中最容易低估的一件事。
如果你的产品使用:
手机号验证码登录;
手机注册;
找回账号;
实名认证;
重要操作验证;
业务通知
等功能,就可能需要接入短信服务。
开发人员第一次接短信时很容易觉得:
“不就是调用一个API吗?”
代码本身确实并不复杂。
真正耗时间的是代码之外的流程。
国内短信通常会涉及:
企业实名资质 → 短信签名 → 平台审核 → 运营商实名报备 → 短信模板 → 正式发送。
真正容易把产品上线时间拖住的是:
运营商报备。
云服务平台自己的审核可能很快。
但是平台审核通过,并不代表运营商侧马上就已经完成实名报备。
运营商报备可能需要多个工作日。
复杂情况下还可能更久。
我自己就踩过这个坑。
产品已经基本开发完了,手机号验证码登录也全部做好了。
原本以为短信服务申请下来很快。
结果前后等了大约3周。
技术上网站已经可以上线。
最后真正卡住我的,却不是服务器、数据库或者代码,而是:
用户没有办法正常收到登录验证码。
所以如果产品明确需要短信:
公司主体和产品名称基本确定以后,就应该尽快开始办理短信资质和签名。
不要等正式上线前一周才申请。
第八步:短信签名不要等到最后才想
用户收到验证码短信的时候,通常会看到类似:
【某某科技】您的验证码为123456。
前面的名称就是短信签名。
短信签名并不是想写什么都可以。
它需要能够证明和企业、产品或者品牌存在真实关系。
如果初创产品还没有商标、APP上架等完整材料,使用和公司主体能够直接对应的名称,通常更容易提供证明。
所以短信签名第一目标不是:
“这个名称够不够漂亮?”
而应该是:
能不能顺利完成审核和运营商报备。
验证码、登录验证、修改密码等确定会使用的短信模板,也可以一起提前申请。
不要产品上线以后,每增加一个场景再临时等审核。
第九步:域名和服务器准备好以后,尽快开始ICP备案
如果:
公司主体已经确定;
域名已经完成实名认证;
符合要求的境内云资源已经准备好;
那么ICP备案就可以开始了。
不需要等产品100%开发完成。
ICP备案通常会经历:
备案主体信息填写;
网站信息填写;
负责人信息;
资料核验;
接入商审核;
工信部短信核验;
通信管理局审核。
这里有一个非常容易忽略的环节:
工信部短信核验。
备案提交以后,负责人手机可能会收到工信部发送的核验短信。
需要按照短信要求在规定时间内完成验证。
所以申请ICP备案期间,负责人的手机一定要保持正常使用,并关注相关短信。
不要提交完备案以后就完全不管。
第十步:ICP备案最大的成本不是钱,而是等待
ICP备案本身并不是什么特别复杂的技术工作。
真正影响项目进度的是:
审核时间无法完全由自己控制。
云服务接入商需要审核。
后面还需要提交通信管理部门审核。
不同地区、不同材料情况,实际时间会存在差异。
所以最差的上线安排就是:
产品全部开发完;
所有测试完成;
运营内容准备完成;
然后才开始ICP备案。
这意味着整个团队接下来可能只能等。
更合理的安排是:
产品开发进入中期;
品牌和域名确定;
服务器准备完成;
立即提交备案。
备案审核期间继续:
做功能;
改UI;
压测;
完善运营内容;
做安全扫描;
配置生产环境;
申请短信;
写用户协议;
写隐私政策。
这样等备案通过的时候,产品也接近正式上线。
第十一步:备案等待期间,生产环境完全可以先搭起来
备案还没有通过,并不意味着服务器不能做任何事情。
这段时间完全可以把生产环境提前准备好。
例如:
部署Linux环境;
安装Docker;
部署前端;
部署后端;
配置Web Server;
部署数据库;
配置Redis;
接对象存储;
配置CI/CD;
运行数据库Migration;
建立日志系统;
配置自动备份。
也可以通过内网、hosts或者受控测试方式进行生产环境验证。
核心原则是:
技术部署可以提前完成,但正式公网网站应按照备案要求上线。
这样备案一旦通过,只需要完成最后的域名解析和上线切换,而不是从零开始配置服务器。
第十二步:生产数据库不要直接暴露在公网
正式部署以后,第一个应该检查的不是页面漂不漂亮,而是服务器有没有明显的安全问题。
最典型的就是:
数据库直接暴露公网。
例如MySQL、PostgreSQL、Redis直接开放端口,并允许全网访问。
这是非常危险的。
更合理的架构应该是:
用户 → HTTPS → Web服务 → 应用服务 → 内网数据库。
数据库原则上只允许应用服务器或者指定管理网络访问。
服务器安全组只开放真正需要的端口。
Web服务通常主要需要:
80;
443。
SSH也不要简单长期允许全球任意IP访问。
可以使用:
SSH Key;
IP白名单;
VPN;
堡垒机;
SSH隧道
等方式加强管理。
原则很简单:
不需要暴露公网的服务,就不要暴露公网。
第十三步:用户文件不要全部存在应用服务器硬盘
产品早期为了方便,经常会把:
用户头像;
图片;
附件;
文档;
合同
直接保存到服务器本地目录。
刚开始当然能用。
但是以后服务器重装、迁移、扩容、容器化或者多实例部署以后,这种架构会迅速变得麻烦。
更合理的方式是使用云对象存储。
应用服务器负责业务逻辑。
数据库保存结构化数据。
对象存储保存用户上传文件。
如果用户上传的是私人文件或者敏感资料,还应该设置:
私有Bucket;
访问权限;
临时签名URL;
文件类型限制;
大小限制;
安全检测。
不要为了方便,把整个存储桶直接设成公共访问。
第十四步:正式上线必须配置HTTPS
现在一个正式互联网产品基本没有继续使用纯HTTP的理由。
ICP备案完成、域名解析正确以后,就应该配置:
HTTPS。
一般流程是:
域名解析到服务器;
申请SSL/TLS证书;
Web服务器配置证书;
开放443端口;
HTTP自动跳转HTTPS。
HTTPS并不是单纯为了浏览器显示一个安全标志。
用户的:
登录信息;
Cookie;
Token;
手机号;
个人资料;
接口数据
都需要避免以明文方式在网络中传输。
所以HTTPS应该属于:
上线基础配置。
第十五步:DNS配置时,www和根域名是两个地址
这是一个非常小,但是实际特别容易踩的坑。
例如你的正式域名是:
example.com
你还希望用户访问:
[www.example.com](http://www.example.com)
也能进入网站。
那么需要注意:
example.com和www.example.com是两个不同的DNS名称。
配置了根域名,不代表www自动生效。
如果系统还有独立接口域名,还可能存在:
api.example.com
static.example.com
admin.example.com
等子域名。
正式上线之前应该把所有需要使用的域名列一遍,逐个检查DNS。
否则非常容易出现:
主站可以打开;
API访问不了;
www打不开;
后台打不开。
最后排查半天代码,实际只是少了一条DNS记录。
第十六步:换成正式域名以后,要全局检查生产配置
很多人认为域名上线就是:
“把服务器IP指过去。”
实际上域名通常会进入大量系统配置。
正式切换时至少应该检查:
前端API地址;
后端CORS;
Cookie Domain;
登录回调;
OAuth回调;
支付回调;
短信中的链接;
邮件链接;
对象存储跨域;
CDN配置;
Webhook;
后台白名单;
Web Server;
环境变量;
robots.txt;
sitemap;
用户协议;
隐私政策。
特别是前后端分离系统,非常容易发生:
网页可以打开;
但是用户登录失败。
常见原因就是:
Cookie;
CORS;
API域名
仍然是测试环境或者旧域名。
所以正式换域名最好单独做一份上线Checklist,而不是靠开发人员凭记忆修改。
第十七步:ICP备案完成以后,要展示备案信息
ICP备案审核通过以后,会获得ICP备案编号。
网站正式开放以后,需要按照监管要求在页面适当位置展示备案编号,并按要求链接到备案信息查询系统。
所以网站设计时,页脚最好提前预留:
ICP备案信息;
公安备案信息;
版权信息;
用户协议;
隐私政策
等区域。
不要等备案通过以后才发现网站Footer根本没有地方放。
第十八步:正式上线以后,还要办理公安联网备案
ICP备案完成并不是全部备案流程结束。
网站正式开通以后,还需要按照规定办理公安联网备案。
一般需要通过全国互联网安全管理相关服务平台提交:
单位信息;
网站信息;
域名;
服务器信息;
负责人信息等内容。
审核通过以后会得到类似:
京公网安备XXXXXXXXXXXXXX号
这样的备案编号。
然后同样按照要求展示在网站页面。
所以完整顺序应该理解成:
先ICP备案 → 网站正式上线 → 再按照规定办理公安联网备案。
不要把ICP备案和公安备案理解成同一件事情。
第十九步:ICP备案和ICP许可证也不是一回事
这也是第一次做网站非常容易混淆的问题。
普通网站常说的:
ICP备案
主要是网站在境内提供互联网信息服务所涉及的基础备案。
而:
ICP许可证
属于增值电信业务经营许可范畴。
不是所有网站上线都需要ICP许可证。
也不能简单理解成:
“只要网站以后赚钱,就一定要办ICP许可证。”
是否需要ICP、EDI等增值电信业务许可证,需要根据具体业务模式判断。
例如是否存在:
平台型经营;
第三方商家入驻;
在线数据处理;
特定收费信息服务;
撮合交易
等业务。
所以产品上线以前除了研究ICP备案,还应该单独判断:
我的商业模式有没有涉及额外的增值电信业务许可。
第二十步:正式上线前做一次安全检查
功能测试通过并不代表系统可以开放给真实用户。
正式上线以前,至少应该检查:
生产环境有没有默认密码;
数据库有没有暴露公网;
Redis是否安全;
代码仓库有没有云服务密钥;
后台管理系统有没有保护;
管理员是否启用强密码或MFA;
文件上传有没有限制;
登录有没有防暴力破解;
短信接口有没有防刷;
验证码有没有过期时间;
付费API有没有频率限制;
Cookie安全属性是否正确;
敏感数据有没有脱敏;
是否配置接口限流;
是否有数据库备份。
其中尤其要关注:
短信验证码接口。
如果没有做好:
单手机号发送频率;
单IP频率;
设备限制;
验证码错误次数;
图形验证或CAPTCHA;
每日发送上限
等措施,攻击者完全可以批量调用短信接口。
结果可能不是服务器被打挂,而是:
短信余额被刷光。
第二十一步:正式环境一定要做自动备份
服务器坏了可以重新部署。
代码有Git。
真正不能轻易丢失的是:
用户数据。
至少应该备份:
数据库;
重要系统配置;
关键用户文件。
数据库最好开启自动备份,并设置合理的保存周期。
但不要认为:
控制台显示“备份成功”就万事大吉。
最重要的是验证:
备份能不能真的恢复。
建议正式上线以后至少做一次恢复演练。
从备份文件恢复一套测试数据库。
确认:
数据完整;
结构正确;
应用能够正常访问。
只有真正能够恢复的备份,才有意义。
第二十二步:上线以后一定要配置监控
不要等用户来告诉你:
“你的网站挂了。”
最基础的生产监控至少应该覆盖:
CPU;
内存;
磁盘;
网络;
数据库;
接口错误;
HTTP 5xx;
服务进程;
证书有效期;
磁盘剩余空间。
最好再增加外部可用性监控。
例如定期访问网站健康检查接口。
如果连续失败,立即通过短信、电话、邮件或者其他方式通知管理员。
一个正式产品应该做到:
系统出问题时,你比用户更早知道。
第二十三步:如果现在重新上线一个产品,我会这样安排
第一,品牌基本确定以后立即买域名。
不要等产品开发完成。
第二,统一企业主体。
云服务、域名、备案、短信尽量使用公司主体。
第三,购买合适的云服务器。
不要冷启动阶段过度配置。
第四,只要需要短信,立即开始短信实名资质和签名申请。
这件事必须优先。
第五,同时提交ICP备案。
不要等代码全部写完。
第六,备案和短信审核期间继续开发。
同时搭生产环境、数据库、对象存储、备份、日志和安全策略。
第七,短信运营商报备完成后测试验证码。
不同运营商手机号最好都进行真实测试。
第八,ICP备案完成后配置正式DNS。
根域名、www、API等全部检查。
第九,部署HTTPS。
确保HTTP强制跳转HTTPS。
第十,全局检查正式域名配置。
CORS、Cookie、回调地址、对象存储、第三方服务全部核对。
第十一,做上线前安全检查。
重点检查数据库、密钥、后台、短信防刷、接口限流和备份。
第十二,正式上线。
展示ICP备案信息。
第十三,按照要求完成公安联网备案。
备案通过后展示公安备案信息。
第十四,开启监控、日志和自动备份。
走到这里,产品才算真正从一个“开发项目”变成了一个可以长期运营的“生产系统”。
最后:上线真正容易卡住的,往往不是代码
第一次做产品的时候,很容易把全部注意力放在功能开发上。
等真正上线以后才会发现:
服务器可以买完马上开。
代码自己可以改。
Bug也可以加班修。
但是:
ICP备案要审核;
短信资质要审核;
短信签名需要运营商报备;
公安备案也要审核。
这些流程最麻烦的地方在于:
它们存在你无法通过加班压缩掉的等待时间。
尤其是短信。
如果产品核心登录方式就是短信验证码,而你产品开发完成以后才开始申请短信签名,那么整个项目很可能会出现一个非常尴尬的状态:
网站做好了。
服务器部署好了。
备案也完成了。
运营准备好了。
但用户就是收不到验证码。
所以产品上线最重要的经验之一就是:
能提前申请的东西,一定不要等开发结束。
我会把整个项目拆成两条线并行推进:
开发线:产品功能、测试、服务器、数据库、安全、监控。
上线线:公司主体、域名、ICP备案、短信资质、运营商报备、公安备案。
最终的目标不是:
代码什么时候写完。
而是:
代码写完的时候,所有上线条件也刚好准备完成。
这才是一套真正高效的产品上线流程。
免责声明:本文仅代表作者个人观点及经验,不代表 COWIN 的立场、认可或背书,内容仅供参考,请结合实际情况独立判断。