打算搭建个人网站,很多人最先考虑的就是零成本方案。免费空间和免费域名一直都存在,只是寻找和申请环节有不少细节,不清楚就容易白费功夫。我前后试过五六个免费主机,部分至今还在运行,也有注册隔天就无法登录的案例。下面拆解整套申请流程,尽量说得直白。
首先分清两个基础概念,空间和域名是相互独立的两样东西。空间存放网站代码、图片、数据库文件;域名就是浏览器输入的访问地址。免费空间一般自带二级域名,类似yourname.infinityfree.com,可以直接使用,但观感不够正式。想要独立网址,需要单独申请免费域名,再解析绑定到主机。分开申请,整体成功率更高。

免费主机里,InfinityFree稳定性相对突出。打开官网点Register,注册渠道包含Google、GitHub或者邮箱,推荐邮箱注册。注册完成打开邮箱接收激活邮件,点击链接激活账号,登录后台选择Create Account新建虚拟主机,选定免费套餐,填写二级域名前缀,例如yourname.42web.io或者yourname.epizy.com,后续也可以绑定自有域名。配置项里Email Consent是广告推送选项,选或者不选都不影响核心通知。提交配置等待几分钟到数小时,开通成功进入控制面板,找到File Manager,打开htdocs文件夹,删除自带默认文件,上传自己的网站文件,首页文件命名必须是index.html或者index.php。上传之后访问二级域名,出现404或者空白页面,大概率是文件存放目录出错,确认文件放在htdocs根目录。
数据库在控制面板MySQL Databases模块创建,创建完成给出主机地址、数据库名、账号密码,填写到网站程序配置文件,WordPress对应wp-config.php。需要留意数据库主机地址不一定是localhost,InfinityFree会分配独立数据库地址,填写错误无法建立连接。
Serv00是另一款值得尝试的免费主机,产品逻辑和InfinityFree不一样。底层是FreeBSD虚拟主机,开放SSH权限与独立端口,可以运行自定义进程,不少用户拿来充当轻量微型VPS。免费账户分配3GB存储、512MB内存,支持MySQL、PostgreSQL、MongoDB,允许绑定自有域名,自动签发Let’s Encrypt证书。很多人在上面部署Typecho、Node程序、Telegram机器人。注册入口serv00.com,账号总量存在上限,每次放量新增一万名额,名额耗尽只能等待下一轮开放。重要规则:连续三个月没有SSH登录或者面板登录,系统判定闲置直接删除账号。FreeBSD和Linux操作命令存在差异,apt、yum无法使用,进程占用内存超过512MB会被系统终止。
免费域名方面,eu.org是接近永久免费的选择。自1996年运营至今,由非营利机构维护,提供.eu.org二级域名,无需续费,审核通过之后永久持有管理权限。申请流程,访问nic.eu.org注册账号,填写用户名邮箱密码完成验证。登录后台点击New Domain,填写想要的子域名,比如mytest.eu.org,服务器IP或者NS记录属于必填项,已有服务器就填入公网IP。提交等待人工审核,多数情况1到2天完成,慢的情况可能持续几周。审核通过,后台配置DNS解析指向主机服务器,网站即可访问。
ClouDNS是另一种免费域名方案,优势是即时生效,不用人工审核。注册账号,后台选择创建区域,选定免费区域,挑选可用后缀,abrdns.com、cloud-ip.cc都可以,填写前缀组合成myname.abrdns.com,提交立即生效。免费版本限制1个DNS区域,50条解析记录,每月50万次查询,个人站点足够使用。
拿到域名之后,绑定主机的操作方法。使用InfinityFree的情况下,控制面板找到Addon Domains或者Parked Domains,填入域名,系统返回两组nameserver地址。到eu.org或者ClouDNS后台,修改域名NS记录为给出地址。解析生效耗时几分钟到数小时,全球完全生效最长需要一天。期间网站打不开属于正常现象,不要反复修改解析记录。
要客观看待免费产品的限制条件。InfinityFree提供5GB空间,月流量无上限,但CPU资源、数据库查询存在每小时硬性限额,超额直接冻结站点。免费域名无法完成国内ICP备案,不能绑定中国大陆服务器,只能搭配香港或者海外节点。如果站点面向国内正式用户,这条限制基本无法绕开。
保活策略不能忽视。Serv00需要每三个月至少登录一次,番茄互联这类国内免费主机,每年年底清空全部数据。申请前通读服务条款,记下保活要求,设置提醒。无论选用哪款免费主机,定期导出网站文件和数据库备份到本地,这个操作必不可少。000webhost关停的时候留给用户下载数据的窗口期很短,大量用户没能收到通知丢失数据。免费主机适合用来调试代码,验证站点效果,不要把唯一一份业务数据托管在上面,风险由使用者承担。