创业阶段产品上线
互联网与软件实践经验操作指南产品

产品开发完怎么正式上线?从云服务器部署、域名、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 的立场、认可或背书,内容仅供参考,请结合实际情况独立判断。