作者归档:白宦成

关于白宦成

独立开发者, 自由职业者, 写作者

梦想的房子(5):弱电箱、书房弱电环境

梦想的房子(5):弱电箱、书房弱电环境

作为一个计算机相关行业的从业者,我自然少不了在家中配置一些电子设备。而且我也会花费大量的时间用来在家庭中编程、生活,因此,一个好的家庭网络环境是必要的。

弱电箱

从我当前的租房的状态来看,我可能会在弱电箱中需要以下一些东西:

  1. 光猫:这是当下必备的了,毕竟已经光纤入户,那我们就必须要有相应的光猫来完成光信号的解析。所以这个是不可或缺的。
  2. 交换机:我的家中可能会有大量的设备,因此,交换机对于我来说是必要的。实际上,简单一算可能就会发现我需要的设备需要不止一根网线 mac Mini + PC、NAS、单独接入无线路由器、可能还需要给电视预留网线的接口,再考虑到后续可能会有儿童房、卧室电视之类的,这样就至少需要六口交换机了,需要提前预留(但不一定会用到)
  3. 插座:光猫和交换机需要相应的电力供应,因此,弱电箱中至少要有 5 个左右的插头,以确保不同的设备有充足的电力供应
  4. 风扇:确保弱电箱内部的热量可以散发出去(如果是一个比较大的弱电箱的话,就可以免于买风扇,考其自然散热)。

通过这样的方式,就可以将网络信号从外部问题转化为稳定的内部问题。接下来要处理的就是如何将信号传递到不同的位置。

对于电视,可以直接通过墙内的线路进行信号的传递,直接购买千兆的超6类线来进行线路的部署即可。

此外,还涉及到家中会用到的无线网络。无线网络需要通过网线从交换机侧接入,并辅以 AP 来完成家庭内部的网络覆盖。

对于需要用到网线的书房,需要通过单独的网线,从弱电箱将信号牵引至书房,从而可以在书房内获得信号。出于使用场景的问题,书房内需要单独设定路由器来进行信号的分流。

书房

书房中我的电子设备较多,因此也需要有更多的网络接口来使用。从弱电箱进入到书房后,需要有一个单独的路由器来进行网络承载,这样也可以在书房内构建一个小型局域网,方便在局域网内进行高速的传输。

在路由器方面,我希望是至少支持 1 – 2 个光纤入口的路由器,这样可以让我的 NAS 和 PC 能够以光纤的方式进行接入。另一方面,还要考虑到 NAS 能够被其他设备所访问和其他的电脑(比如 mac 笔记本)的接入,因此,书房应该也有一个单独的空间用于放置路由器和 NAS。

总体来看,我需要一个能够满足如下需求的书房弱点环境:

  1. 路由器:用来建设书房的局域网;
  2. NAS:我的是 QNAP 的 TS231P2,挺好。
  3. 插座:至少需要 2- 3 口的插座,来完成电路的接入。

梦想的房子(4):玄关篇

梦想的房子(4):玄关篇

租房多年,也对于玄关有了一些简单的理解。因此,也就有了自己的需求。

尺寸

够用就行,没啥特别的追求。

功能设施

鞋柜

我们每个人都会有不止一双鞋子。女性更是有不同功能的鞋子,因此,玄关的鞋柜至关重要。在我看来,两个人的话,最少需要 10 ~ 15 双鞋子的存储空间,才能确保地上没有多余的鞋子。

收纳柜

玄关区域除了鞋子以外,其实还有更多的东西,比如钥匙、门卡、口罩、洗手凝胶、一次性拖鞋、耳机等物品。

有了一个单独的收纳柜,可以将这些东西存储在收纳柜中,并在使用时随时拿出来。

在收纳柜上可以有一个区域/小篮子,来放日常出门的钥匙。

下沉式玄关

下沉式玄关和非下沉式玄关的一个很大的区别是它人为的区分出了一个区域,从而可以更好的实现外鞋不进屋。

不过,下沉式玄关挺依赖房子本身的属性的,也不一定能搞定。

可视门禁控制器

现在的新房基本都有这个,不过放在哪也是个讲究。我觉得放在门口比较合适。放在厨房/客厅其实感觉不太实用。

总结

玄关区域不大,但细节不少。特别是在疫情当下,玄关作为家的入口,还是很值得关注一下的。

梦想的房子(3):厨房篇

梦想的房子(3):厨房篇

我其实算是一个比较喜欢做饭的人,虽然做的不算太好吃,但始终坚持在做(又菜又爱玩)。厨房在我的生活中也是一个重要的角色。因此,厨房的好坏,是很影响生活的。

尺寸

厨房对我来说,尺寸不需要特别大, 能够将功能设施安排好,还有一定的空间可以正常做饭,不至于特别窄即可。

功能设施

双开门冰箱

我需要一个足够大的冰箱,或者一个冰箱 + 一个冰柜。我平时蛮喜欢囤一些吃的,一个小冰箱往往就会导致做饭时空间捉襟见肘,看到好吃的也需要思考一下自己的冰箱是否放得下。一个更大的冰箱会成为一个更好的选择。

洗碗机

如果说,做饭最痛苦的是什么,那莫过于洗碗了。租房受限于空间等各项原因,所以没办法用洗碗机。自己买房之后,我希望可以借助洗碗机来降低我做饭的摩擦力,来做饭。

日式三眼灶

自打我点了「焯水」这个技能后,一些比较难熟的菜,我会比较喜欢先焯水再炒。而两眼灶会导致你必须因为焯水而占用了一个位置。多出来的一个灶口可以用来焯水(是否有必要?可能还要看,但可能一个更好的排布设计可以解决这个问题)。

热水洗菜池

热水洗菜也是另外一个做饭的巨大阻力,热水洗菜可以降低做饭的阻力,不多解释。应该能理解,特别是冬天。

可以拔下来的水龙头

方便各种层次和角度的清洗。

厨房架

我会希望在厨房放置烤箱 & 空气炸锅 & 微波炉,因此,最好有一个架子可以容纳这些电子设备(还需要考虑一下电力排布的问题)。

  • 烤箱:可以用来烤口蘑、青菜、肉之类。
  • 微波炉:用来加热饭菜。

收纳柜

我会在厨房放置很多东西,比如多囤的调料、应急储备的方便面、干货、大米、鸡蛋、青菜。因此,一个大的收纳柜可以帮助我更好的收纳这些东西,从而解决厨房的收纳和管理的问题。

当然,这个柜子还需要有一定的碗筷的收纳整理能力。

总结

厨房算是装修过程中一个比较复杂的东西了,因为其设计的大功率电器较多,很容易引发火灾。所以,提前记录下自己的需求,以备日后不时之需。

梦想的房子(2):卫生间篇

梦想的房子(2):卫生间篇

关于卫生间,我其实一直很喜欢日式卫生间的风格,小巧但功能又足够丰富。但是对于我来说,我并不觉得一定要把卫生间做的那么小,如果有充足的空间,可以适当的调整一下,从而获得更好的生活体验。

尺寸

对于卫生间而言,我其实可以接受空间小一点,但我还是希望可以有干湿分离的。这样可以避免卫生间总是潮潮的。

功能设施

浴缸

每日的工作结束后,泡个浴缸是非常舒服的事情。相比于国内的浴缸,日式浴缸会更小一点,但同时也让泡澡这件事变得更加轻量。不需要背负那么重的负担。如果可以的话,我还蛮希望有一个日式的小浴缸,从而让每天都可以更加惬意。

热风/浴霸/自循环温控系统

租房的一个痛点就是大部分房子的卫生间并没有浴霸和热风,这就导致你洗完澡之后,会非常的冷,擦完身子出来瑟瑟发抖。洗澡过程中也必须开着热水,这样才不至于觉得冷。

因此,热风和浴霸对我来说是必要的。这能让你在洗澡中可以获得温暖。洗完澡擦身的时候也不至于感到冷。

淋浴头

淋浴总体来说,我觉得一些星级酒店的淋浴是非常不错的,原因主要如下:

  1. 水压足够大:这可能需要在自己家中安装一个增压泵来实现。
  2. 水温足够热:这可能需要在家中配置一整套零冷水的解决方案来实现。
  3. 多样的冲水方式:你可以选择顶冲,也可以选择侧冲。这样对于我这样的个子相对高一些的人来说,可以用顶冲来洗头,非常舒服。

因此,我希望自己以后装修房子的时候,也可以购买并配置这样的方案。

自动马桶

虽然我其实觉得蹲便可能更适合我们每一个人。但确实要考虑到家中的其他成员的诉求,自动马桶还是必要的。

洗衣机 & 烘干机

晾衣服真的是一个痛苦的事情,如果在洗衣机上提供了烘干的功能或有相应的烘干机,会让晾衣服这件事变得更加简单。同时,也可以让我们更好的利用阳台。

泡着茶,喝着咖啡在阳台上看书难道不舒服么?

总结

卫生间看似不起眼,但说实话,卫生间还挺影响生活质量的。你的一天从卫生间开始,你的一天也从卫生间结束。一个好的卫生间,值得你拥有。

梦想的房子(1):书房篇

梦想的房子(1):书房篇

在毕业的头两年里,我住在一个月只需要 1800 的单间里,艰难求活。而随着女朋友的到来,我的生活开始无休止的膨胀:居住环境的空间诉求变大;共同生活的生物变多;更多的在家工作的时间,让我开始更加希望自己有一个书房。

于是,在最近的两次租房的过程中,我都选择了两居室,并将其中的次卧改为书房,以满足自己的需求。

很快,我也会迎来又一次的搬家,于是,记录下自己的所求,以更好的在下一次搬家时,寻找到适合自己的房子。

尺寸

因为我除了编程相关的工作以外,还会拍一些视频,因此对于房间的纵深会有一定的要求,需要能够确保我不需要离镜头太近,免得视频里都是我的大头。

功能设施

水吧

我经常在深夜写代码、写文章,因此,茶叶、咖啡是我不可或缺的伙伴。现在我的水吧是在卧室,这意味着如果我需要喝茶、咖啡,就必须到卧室去接,在卧室煮咖啡,这样会非常影响同住人的生活体验。

因此,如果可以在书房当中有一个独立的水吧,对我来说,会是非常方便的。

  • 全自动咖啡机:咖啡因重度患者,不能没有咖啡。
  • 饮水机:多喝热水、多喝水、多喝冰水。我的饮水机同时提供了冰水(冰水开关关掉后就是常温)和热水两种版本,因此,我可以在夏天喝到冰水而在冬天喝到热水。
  • 制冰机:我是一个喜欢喝冰水的人(可能是因为胖),因此,在我看来制冰机也是不可或缺的。

此外,到了新的房子的话,我希望我可以不再使用4.5L的桶装水,而是改用 10 ~ 20 L 的饮用水。虽然可能水质没差,但我不再需要频繁的购买桶装水了,也不需要单独留存一个空间用来放水。

书架

人不能无书。从 1800 的单间,还是如今 5000 块的两居室,我始终都带着书。区别不过是书多书少。如今我家中依然放着百来本书。对于我来说,书是进步的阶梯,也是我精神的食粮。每当我迷惘之时,我就开始读书,从书中寻找答案。即使是如今的电子书时代,我也依然不放弃看实体书。

当然,这些书也是有选择的,对于那些不好的,或者是我觉得没有留实体书必要性的,我一般都会选择在朋友圈中将其送出去。留下来的,就是那些精挑细选,重要的图书。

办公桌

办公桌是一天工作的重点,因此,办公桌必不可少。而从我以往的办公桌的大小来看,我需要的应该是 140CM * 70CM 以上大小的桌子,这样才能放下我的两个显示器、鼠标、Mac mini,以及一些零散的水杯之类的小东西。

储物柜

经过以往几次搬家的经验,我发现我自己的东西还是比较多的,我需要一个足够大的储物空间,来存放我自己的杂物,包括:

  • 各家合作方赠送的礼品
  • 相机、镜头、三脚架、录音笔、无线麦克风之类的东西
  • 线材
  • 败家电子设备不常用的电子设备

单人床

对于我来说,最高效的状态是全力工作,然后累了就休息(睡觉),睡半个小时就能满血复活,然后再继续工作。这样的状态会能让我更好的工作。因此,一个 70 CM 宽的单人床,可以让我拥有更好的中场休息。

为什么不是去卧室?卧室太舒服了,可能会一觉睡好几个小时。稍微的不舒服的感觉,会让我更容易醒来。

总结

为什么要总结自己想要的房子?我们终归会踏上拥有自己的房子的路,无论是在一线城市,还是三四线小城市,总是会有的。那我们如何才能拥有一个称心如意的房子?很显然,从我们之前的生活经验中,总结出适合自己房子和布局。

我有一段时间很喜欢住 Airbnb 就是这个原因,我希望可以通过住在别人家里,感受到好的环境是什么样的。然后逐步找到适合自己的环境。接下来的几天,我将继续总结我梦想的房子。

如何处理 Gutenberg 开发过程中的 Minified React error?

如何处理 Gutenberg 开发过程中的 Minified React error?

在开发 Gutenberg 插件时,经常会出现下面这样的提示:

Uncaught Error: Minified React error #231; visit https://reactjs.org/docs/error-decoder.html?invariant=231&args[]=onClick&args[]=object for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

上述提示表示当前的编辑器中出现了一个错误,但由于 React 的 Minified 设置,这些错误没有办法被打印出来。

在这种情况下, React 接管了默认的报错,让应用不至于崩溃,但另一方面,也让我们失去了处理这些问题的可能。因此,在本地的开发环境,最好还是将这个功能给关掉。

如何关闭默认的错误处理?

wp-config.php 文件中添加如下代码即可。

define('SCRIPT_DEBUG', true);
薅微信公众号的羊毛

薅微信公众号的羊毛

我最近开始日更博客,开始逐渐捡起我的写作的习惯,并尝试以此维持生计。

不过,我自己写文章有个坏毛病,比较意识流,这使得我的文章当中会出现很多的错别字。由于心流作用的存在,写作时我自己无法发现这些问题。

所以,我会在写完文章后,将其复制到微信公众号后台,并使用微信公众号后台自带的语法检查工具,来完成中文的基本信息的检查,降低我的错误率。

当然,除了微信公众号,你还可以有很多选择,比如 飞书文档、石墨文档等。

只是我为了让自己能够用的更爽,自己做了个插件 —— https://wordpress.org/plugins/wpstoreapp-spellcheck/

使用 Laravel Envoy 进行项目部署

使用 Laravel Envoy 进行项目部署

在大型企业当中,往往会有各种各样的 CI & CD 工作流来完成项目的部署,而对于我自己的项目而言,我也希望能够有这样顺畅的交付体验,因此,我也为自己的业务加上了类似的方案,以实现顺滑的开发体验。

不过,我没有做的那么重,没有上 Ansible,也没有封装 Docker,就是标准的 LNMP 环境。只不过,我在标准的环境上加入了 Laravel Envoy — 一个快速部署工具

什么是 Laravel Envoy

Envoy 是 Laravel 团队开发的一个在远程服务器上执行某些命令的工具,因为他同样使用 Blade 语法,因此在 Laravel 项目中接入非常方便。

如何使用 Laravel Envoy

1. 安装 Laravel Envoy

Envoy 有多种使用方式,一种是跟随项目的使用方式,即使用 composer require laravel/envoy --dev 来安装,并使用 php vendor/bin/envoy 的方式来运作,这样的好处是你无需污染顶级目录,只在项目层面使用 Envoy 来进行部署。

不过我因为有很多项目,所以我会更加倾向于直接在全局安装 envoy,执行 composer global requre laravel/envoy 实现在全局安装 Enovy。全局安装完成后,当你需要执行命令,只需要执行 envoy run deploy,就能执行当前目录下所定义的命令。

除了全局安装,你也可以考虑使用 Bash alias 来实现类似的效果,将 envoy alias 给 php vendor/bin/envoy 就可以实现即使没有全局安装,也可以实现不需要手动输入前缀的特性。

2. 初始化配置文件

当你需要配置时,你要做的很简单,只需要执行 envoy init 服务器地址/昵称就可以获得一个 Envoy.blade.php 文件,你可以通过修改这个文件的内容,来实现定义不同的工作。同样的,你可以将这个文件纳入到版本控制系统当中,从而实现部署脚本的跟踪和定义,对于后续的持续维护比较有帮助。

因为 Envoy.blade.php 也是采用了 Blade 的后缀,所以也同样适用了 Blade 引擎,你可以通过一个语意更加友好的方式来定义你的脚本。

@servers(['web' => '127.0.0.1'])

@task('deploy')
    cd /path/to/site
    git pull origin master
@endtask

比如,上面的脚本就是一个最基础的脚本,首先定义了这个脚本的命令会在名为 web 的服务器上执行,而这个服务器的地址是 127.0.0.1;并定义了一个任务 deploy。

3. 执行部署命令

当你完成代码的编写,并提交了 Git 之后。执行命令 envoy run deploy ,就会自动的在 web 这个服务器上执行在 deploy 当中执行的命令。

deploy 的命令只要是正常的 bash 命令即可。

高级用法

1. 引入其他任务

因为 Envoy 使用 Blade 语法来编写,你也可以使用 Blade 语法中的命令来引入其他文件的中的任务。因此,你可以将自己常用的命令定义出来,并将其通过 Packagist 发布出去,并在实际应用过程中,引入对应的文件来使用。

@import('vendor/package/Envoy.blade.php')

2. 处理多个服务器

Envoy 支持定义多个服务器以及并行执行,对于架构相对复杂的业务,你可以定义不同的 servers ,并在对应的 task 当中来设定需要在哪些 Server 上执行。定义任务时,如果你传入了 parallel 参数,则可以控制命令同时在多个服务器上并行(该属性为 false 时则是串行(

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])
 
@task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true])
    cd /home/user/example.com
    git pull origin {{ $branch }}
    php artisan migrate --force
@endtask

3. 定义变量或引入其他功能函数

你可以在 Envoy.blade.php 中加入 @setup 来完成变量的定义,并在后续的代码中使用。

@setup
    $now = new DateTime;
@endsetup

也可以直接使用 @include 来引入文件

@include('vendor/autoload.php')
 
@task('restart-queues')
    # ...
@endtask

4. 使用命令行参数

在启动时,如果你使用诸如 --param=value这样的参数来调用,则可以在你的代码中直接读取对应的变量,从而实现执行时带入不同的参数。

更多用法

Envoy 当中还有更多的用法,这里不再一一列举,如果你感兴趣,可以直接参考其官方文档,了解如何使用 Envoy 达成你的部署目标。

总结

在你不是很着急使用 Ansible 或 更重的部署工具的时候, Envoy 是一个不错的选择。特别是你使用 Laravel 进行开发时,Envoy 就是一个有效的工具。

什么样的业务用什么样的架构

什么样的业务用什么样的架构

多年来,我一直是 PHP 的拥趸,不论中间我写过多少编程语言,但我始终觉得,PHP 能从 2000 年活到现在,是有其意义和价值的。

而到了现在,我终于可以回答这个价值和意义到底是什么 —— 什么样的业务,使用什么样的架构

作为技术创业者,我们最常遇见的问题,便是过度设计技术方案:我的项目是不是应该做个数据库主从备份?我的项目是不是应该做 Kuberentes 集群来处理弹性?

但实际上,对于绝大多数的业务而言,这些问题都是根本不重要的 —— 如果没有 Kubernetes,我们能否保证我们的业务的稳定性?如果没有主动备份,我们能否保障我们的业务可以平稳运转?

技术在绝大多数的业务中,都是一个成本中心,是一个保障业务正常运转的基石。他应该被重视,但不应该被过度重视。一个创业公司可能会因为业务不够稳定而失去用户,但绝不会因为业务非常稳定而留住用户。用户在乎的是你为用户解决了什么样的问题,而不是用了什么样的架构。

过度(提前)优化是万恶之源。

摊销的魅力

摊销的魅力

今天在和 @bobo 聊天的时候,讨论起了摊销这个话题,我觉得很有价值,因此记录下来。

事情的前提是出于控制开支的目的,我在 2022 年为自己定下了 10000 元的数码设备采购预算,这个预算是考虑到我不需要在 2022 年更换手机( 2021 年刚换了 iPhone 13 ,我的预期是用到 2024 年),我不需要在 2022 年购买新的相机(我已经有了 6400、ZV1、G7X3,主要的几个需求都满足了,唯一希望买的是 GR3/GR3X,但不是特别急),唯一想要买的就是 采用了 M2 的 Macbook Air(32G 内存,512 GB ~ 1TB 的 硬盘),但我不确定新的 Macbook Air 能够在我的预算内解决,所以其实一直比较忐忑是否能买。

不过,今晚和bobo聊的时候,他提出了一个方案,或许可以解决我的问题 —— 摊销

虽然我今年给自己定的数码设备的预算是有可能无法满足我的采购诉求,但我可以借助于信用卡本身的 24 期分期付款的方式,来实现需要单次支出的成本被摊销到接下来的 24 个月里,这样虽然我支付的钱没有变少,但却将整体的记账周期拉长,从而实现了我在今年的预算不会超出预期。

通过摊销,我超期消费了明年的预算,解决了今年的问题,确实是一个很好的解决方案(当然,也是信用卡分期的意义)。不过,这也反过来让我思考企业的预算和摊销体系,可能作为一个员工,我们会认为思考预算是有点奇怪的,业务随时可能增长,预算必然被打破,但换个角度来看,如果我们的预算在可控范围内进行增长,就可以在享受到摊销带来的价值的同时,不至于过度消费未来。

我近几年一直在用 MoneyWiz 在记账,之前也写过一些关于关于 MoneyWiz 的文章

得益于 Moneyiwz 的预定功能,摊销也可以以一个十分轻量的方式来完成,现在,我更期待今年的发布会了!。

从头梳理,看看中国的 ICP 备案制度

从头梳理,看看中国的 ICP 备案制度

对于生活在中国互联网环境中的开发者来说,ICP备案(后称「备案」)是一个很难绕过去的话题,但凡你需要正经的建设一个网站,那么备案就是一个必须要做的事情,不然可能会出现各种奇奇怪怪的问题。但,你是否思考过,为什么我们需要备案?你是否了解过备案二字背后的深层含义?

为什么我们需要备案?

备案的要求和历史,可以追溯到 2000 年 9 月 20 日国务院第 31 次常务会议通过的一个管理办法 —— 《互联网信息服务管理办法》(后称信息管理办法),由时任总理朱镕基先生签发。后续我们所进行的一切备案工作,其实都是这个信息管理办法的延展。

在《互联网信息服务管理办法》当中,第二条说明了什么样的情况才需要进行备案:在中国境内从事互联网信息服务活动。

第二条 在中华人民共和国境内从事互联网信息服务活动,必须遵守本办法。

互联网信息服务管理办法, 2000 年 9 月 20 日

这一条也解释了,为什么 Facebook、Google这些网站也可以正常运转,因为他们严格意义上来说,并不算在中国境内从事相关的信息服务活动(但也没保证你一定能够访问)。同样的,如果你自己的网站托管在海外的服务器上,一样不需要备案(但同样不保证你一定能访问,毕竟你不在境内提供服务,网络出现波动啥的非常正常)。

圈定了范围之后,第三条规定了不同的互联网信息服务都是什么样的类型,进行了定性操作。

第三条 互联网信息服务分为经营性和非经营性两类。经营性互联网信息服务,是指通过互联网向上网用户有偿提供信息或者网页制作等服务活动。非经营性互联网信息服务,是指通过互联网向上网用户无偿提供具有公开性、共享性信息的服务活动。

互联网信息服务管理办法, 2000 年 9 月 20 日

而在完成了定性操作后,紧接着在第四条声明了不同服务类型应该执行的策略:经营性采取许可制度,非经营性采取备案制度。

第四条 国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。

互联网信息服务管理办法, 2000 年 9 月 20 日

至此,我们熟悉的 ICP 备案走上了台前。而我们现在了解到的各种具体的备案的细节,则是在管理办法内容的延展,如果你对于这些内容感兴趣,可以详细的阅读这个信息管理办法。

在 2005 年 1 月 28 日,在《互联网信息管理办法》之上的细分管理办法《非经营性互联网信息服务备案管理办法》(后称非经营性管理办法)也相应出台,对于非经营性互联网信息服务进行了更加明确的安排和说明。我们所熟悉的备案登记表、省级通管局、网站底部公示备案编号等描述也出现在了非经营性管理办法当中,网站的备案事项,也正式被推行。

备案到底在备案什么?

备案对于很多人来说,最麻烦的不是搞不清楚怎么备案,而是搞不清楚如何处理域名、网站、 服务器、个人之间的关系。而所有的这些关系,其实可以用一个词来说明 —— 「双绑定制度」。

现行的网站备案制度其实是一种“双绑定制度”,一方面将网站和所有人绑定在一起,另一方面,将网站和它的接入商绑定在一起。一旦某个网站出现了问题,则需要能够在第一时间找到网站的所有人和接入商。

阮一峰,《关于网站备案,》,2009年 9 月 9 日

备案并非一个阻拦性措施,而是一个监管性措施(对比经营性互联网信息服务的许可制),希望大家可以积极踊跃的进行互联网信息服务的同时,避免恶劣影响的网站持续提供服务。找到接入商来第一时间拔网线,缩小影响范围;找到所有人来进行相应的处罚。

备案过程中的五个关键角色

当我们搞清楚了备案的核心理念和目的之后,我们重新回过头来看看备案当中的五个关键角色:备案主体省通管局接入服务提供商域名注册商域名管理机构

各关键角色之间的关系

当我们真正开始进行备案时,就会面临三个元素:域名、服务器、所有人。这五个关键角色与三个元素,依次发生关系。

域名管理机构和域名

当我们开始思考建设一个网站时,必然会涉及到域名的问题。而实际上自 2017 年 11 月 30 日颁布的《工业和信息化部关于规范互联网信息服务使用域名的通知》正式实行之后, 并不是每一个域名都能够完成备案。在该通知中,要求互联网域名注册服务机构要在我国进行相应的注册和审批,才能够让对应的后缀进入到备案的流程。如果对应的域名注册服务机构没有在我国进行注册,则对应的域名无法在我国进行备案。

从而,也就出现了现在很多时候我们在购买域名时候需要考虑的一些问题 —— 域名能否完成备案?

目前所有完成了相应注册机构的审批都可以在工业和信息化部域名行业管理信息公示网站找到。如果你需要购买域名且有打算在国内进行备案,则一定记得确认你所购买的域名是否可以在国内完成备案的流程。

此外,如果你感兴趣的话,还可以在这里找到一些你可能从来都没听说过、没见过的后缀,比如.baidu

对于已经进行的域名注册服务机构,因为工信部有了相应的沟通方式,则可以在出现问题后,下发公函,要求对应的服务机构协助调查和配合。而对于没有注册的管理机构,无法完成相应的配合,干脆不予后缀备案。

这也解释了为什么现在你购买的 .io 域名不能备案,因为对应的注册管理机构没有在我国注册,不符合备案的要求。至于你看到的那些有备案号的 .io 域名,则是在相应的通知发布之前完成的备案,故而可以正常使用。

域名注册商和域名

当你选择了一个可以进行备案的域名后缀(比如 .com)之后,就可以进行域名的注册了。域名的注册需要到对应的域名注册商来完成。这个时候,也会涉及到不同的域名注册商可能会影响你的备案流程。

按照新的管理办法,你的域名需要在购买的时候完成实名认证。因此,你如果域名想要备案,则要求你的域名注册商支持进行实名认证。

比如,目前你可以在阿里云(万网)、腾讯云(新网)、西部数据等域名注册服务提供商这里购买域名并进行实名认证,在实名认证完成后,再进行后续的域名备案操作。

相应的,对于域名注册服务机构,也采用了审批和注册的限制,不同的服务商能够支持的域名实名认证也是不同的,企业需要根据「互联网域名注册服务机构审批」来进行提交,等待审批通过后,才能提供相应的域名注册和实名认证服务。

目前通过审批的域名注册服务机构也可以在工业和信息化部域名行业管理信息公示网站找到。

这也解释了为什么你在 Godaddy 、Namesilo、Namecheap 之类的域名注册机构注册的域名无法在国内进行备案,因为他们并没有在国内注册,接入相应的实名认证流程,自然无法为你提供后续的备案服务。

域名和所有人

当你选择好了域名后缀和域名注册服务商,进入了详细的域名注册流程当中时,会涉及到域名的实名认证的环节。

在这个时候你需要注意,备案要求域名实名认证和备案的主体是保持一致的,因此,如果你后续打算以哪个主体(个人或者企业)进行备案,在这里进行实名认证时,就要选择对应的信息来进行实名认证。

你提交信息后,域名注册服务机构(域名注册服务商)就会将你的域名和对应的实名信息提交到工信部。一般 1 ~ 2 个工作日后,你的信息就可以在工信部的内部系统可查,这个时候才能进行下一步的备案。

接入服务提供商和域名

域名购买好了,接下来就是选择接入服务提供商。由于备案实际上是个人与网站、网站与接入服务商进行的「双向绑定」,因此,能够提供备案服务的服务商都是在工信部进行了相应的注册的服务商(需要持有互联网数据中心业务经营许可证)。

在进行备案时,会要求你的域名已经完成了实名认证,然后再提交信息进行相应的备案,这里会要求域名的实名认证和接入服务提供商的实名认证信息保持一致,进行审核。

这也解释了为什么你购买的 DigitalOcean 的服务器无法进行备案,因为 DigitalOcean 并不持有互联网数据中心业务经营许可证。当然, DigitalOcean 的服务器也不需要进行备案。

所有人和通信管理局

当你进行备案时,会让你选择一个备案的所在地,备案的所在地决定了你的网站归属于哪个省份的通信管理局来进行管理。

一般来说,大家会选择身份证所在地。当然,如果按照惯例办法中的说明了,其实你还可以选择你的当前所在地(因为管局在乎的是能否联系到你)。选择了对应的省份,需要你提交相应的信息(需要能够精确到门牌号),基于对应的信息来进行备案。不过需要注意的是,不同的地区可能有所不同,比如基于当前所在地的备案可能会要求你提供居住证来进行备案。

理论上,你可以拥有多个不同的备案号,一个身份证所在地的备案号,和多个居住地所在的备案号

接入服务提供商和通信管理局

当你准备好所有信息,接入服务商帮你进行了基本的审核后,就会将你的信息提交至你备案的对应的通管局。而 ICP 备案本身是备案制度,因此,审批其实大部分情况下都是能够通过的,只是说需要一点时间,不同的省份在备案的审批上所需的时间也不同,根据《非经营性互联网信息服务备案管理办法》的要求,会在 20 个工作日内完成审核。不过某些特定的省份是比较快的(比如上海、浙江,据说是可以 1个工作日完成审批)。

当你完成审批后,就会获得一个备案号,将对应的备案号放置在你的网站底部,并加上前往通管局的链接即可。

拿到备案号之后的注意事项

新增备案网站

当你完成了第一个网站备案和建设后,你可能会需要进行第二个网站的备案和建设,这个时候,你需要注意:

  1. 你的第一个网站的用途应该符合备案时申报的类目(不然可能无法进行第二轮)
  2. 你应当按照规定放置了各项备案号等信息。
  3. 进行第二轮备案时,你的第一个网站应该是可以打开的。后续每新增一个网站,就会要求你之前的网站是可以正常打开的。

这就要求你如果某个域名不再使用,尽快将其关闭,并注销域名和相应的备案。

备案号、域名和接入服务商

当你拿到域名备案号之后,你就可以在你办理备案的接入服务商进行网站的建设和开发工作了。但需要注意的是,你仅能使用当前办理了接入服务商的服务,如果想要使用其他家的服务,则需要再次办理接入,新增一个接入,以使用对应服务商的产品。毕竟,备案的核心诉求是「双向绑定」,绑定用户和网站、网站和接入商。你虽然完成了备案,解决了用户和网站的绑定,但如果你没有完成网站和接入商的绑定(做接入备案),接入商同样会拒绝为你提供服务。

此外,需要注意的是,你的名下应当始终至少有一个网站,对于一个网站都没有的(比如你注销掉了所有的网站)人,在备案系统中被称为「空壳主体」,通管局会定期清理空壳主体,所以为了保住你的主体和备案号,尽量保证你的名下有网站。如果需要迁移服务商,也在完成了新的服务商接入之后,再注销之前服务商的接入。

独特的 CDN

在备案体系中,有一个很独特的产品 —— CDN 。和云主机不同,云主机会要求进行接入后才能使用,而 CDN 则没有相应的要求,你只要完成了备案,无需再进行接入即可使用 CDN 。

CDN 作为一个分布式的产品,因为没办法统一进行接入,故而只做了备案的限制,而不再要求你的域名必须在对应的服务商进行接入。

如果网站出现了问题,可能会怎么处理?

其实前面说了那么多,都是一些知识性的内容,接下来,我们来面对一个真实世界的问题 —— 如果某个网站出现了问题。可能会怎么处理

前面说过,备案本质上是为了能够在出现问题后快速找到你,解决网站中的问题。但真正在执行时,可能会有哪些操作?

  1. 如果有备案,直接联系备案时提供的联系电话(这也是为什么你备案的时候会有一个联系电话和一个备用联系电话),取得联系后,由网站负责人进行整改。
  2. 如果备案电话打不通,则可以联系服务接入商,通过接入商来暂停网站的接入服务,从而让网站无法访问。
  3. 如果服务商接入暂停后,依然可以访问(即你虽然备案了,但你的网站其实在其他服务器),那就通知你的 DNS 解析服务提供商停止解析。
  4. 如果你的 DNS 也是自己解析的,那就可以联系你的域名注册服务提供商,直接停止域名的服务状态。
  5. 如果你甚至域名注册服务商都是自己搞的,那可以联系域名管理机构,停掉你这个域名的使用。
  6. 当上述的所有办法都无法解决问题后,那就直接给你拉入黑名单,成为我们过去常说的被「墙」了的网站。

后记

这篇文章写完了,让我心头一松。我从 2012 年开始建立个人网站,2013 年、2014 年开始备案第一个域名,后续在 2016 年,在网易实习时以接入服务商视角看待了备案,再到在线,备案的政策不断的变化,我自己从某种意义上也经历了备案从松到严的一段历程(虽然没有经过最松的那段时间)。

备案机制从很多从业者的角度来看,觉得是繁文缛节,但换个角度来看,也是为我们的互联网提供了一定的基本保障制度。互联网上的信息良莠不齐,备案虽不能以黑名单的机制保证我们所看的信息“绝对干净“,但却也以白名单的方式给了一些建议。

不过,这篇文章也有遗憾,因为篇幅限制,我未能介绍关于公安备案相关的信息,这部分就留作后续再独立成文来介绍吧。