? Editing: Post:21.body Save Upload file Delete Cancel
Content changed Sign & Publish new content

TypeBlog

The dark side of TypeBlog.Net

Follow in NewsfeedFollowing

Latest comments:

Add new post

Title

21 hours ago · 2 min read ·
3 comments
Body
Read more

手工建立 ZeroNet 站点的那些坑

on Apr 23, 2016 · 1 min read

Well, 实际上,这完全是我给自己挖的大坑。

本来建立一个 ZeroNet 上的网站是很简单的,只要 clone 一个其他网站然后写点自己的内容就完事了。本来……然而出于爱折腾的本性,我决定自己从 GitHub 上拉取 ZeroBlog 的源代码自行从头部署。本来以为也就是 copy-paste 的事情,可是,为什么,为什么会变成这样呢……

初始内容

使用 siteCreate 命令建立好网站以后,在站点目录有一坨默认内容,当然是必须删掉的。然而,最初我以为,只要删掉这些默认内容,然后把 ZeroBlog 的文件拷贝过来,就算完事了。于是我就这么做了。当我签名好以后,尝试本地访问该站点,发现站点上什么也没有。重要的不是什么也没有,而是什么功能也不工作,新增文章、编辑标题等按钮无论怎么戳都没有反应。第一个坑就这么撞上了。

后来我折腾了一晚上,也没什么进展,导致我星期五晚上12点才睡觉,星期六一天都没精神。早上我才忽然想到,每个站点都应该有个 data 目录用于保存数据,而我这个新建的站点只有 data-default -- ZeroNet 并没有自动使用这默认数据。而当克隆一个站点时,这个目录内的数据将被用于生成默认数据库。没有数据的站点,自然没法正常工作了。

于是解决方法也非常明了了:复制一份 data-default 并命名为 data, 并且将 data/users/content-default.json 重命名为 content.json, 然后对站点重新签名再访问,一切都正常了。

评论登录

使用评论系统的前提,是在站点的 content.json 内加入

"includes": {
  "data/users/content.json": {
   "signers": [],
   "signers_required": 1
  }
 }

如果没有这一段,那么评论系统根本没有可能正常工作,会直接报错,也就连撞这个坑的机会都没有了。

ZeroBlog 默认的评论系统是依赖 ZeroID 的用户系统的。然而,当我终于让站点正常工作时,我却发现,一旦在评论处登录 ZeroID,站点会立马抛出异常而停止正常工作。当时报的是一个 Python 异常,大意是 UiWebsocket.py 中某处发生了类型错误。我以为是零网的 bug ,在源码中跟踪了半天,发现这个类型错误实际上是因为读取 data/users/content.json 的函数因失败而返回了 False。这个问题,我折腾了近五个小时,后来发现错误的根源是读取 data/users/content.json 时,程序无法找到 inner_path 这个 key,从而无法读取文件信息。我实际上并没有完全理解为何要有这个配置项的存在,因为只需要这样写

"inner_path": "data/users/content.json`

即指向这个配置文件自身,就好了。

评论发布

总算把登录折腾正常了,评论发布又出了问题。每次发布评论,小按钮就会转半天,然后提示发布失败。去命令行里查看错误提示,它说,文件非法 ( File invalid )。这就让我十分为难了:文件为何会非法?

Erkan 那里,我得到了答案: data/users/content.json 也是需要站主签名的。只需要对这个文件也执行签名

python2 zeronet.py siteSign sitehash --inner_path data/users/content.json --publish

再重新对整站签名即可。

用户存储

ZeroBlog 默认给每个用户分配的评论空间只有 10K,这简直不能忍。所以我们需要扩容:在 data/users/content.json 中把 max_size 改成更大的数值,然后对其重新签名即可。

BTW: 修改这些文件如果死活不生效,莫慌,重新开一下 ZeroNet 试试

其他

由于站点空间有限,你可以在 content.json 内设置 ignore(data/.*db|data/users/.*/.*),忽略不必要的文件。

以上。

13 Comments:

user_name1 day ago
Reply
Body
akion Sep 18, 2016
Reply

赞! 不容易啊...

nolotuson May 15, 2016
Reply
xuelingon May 09, 2016
Reply

若是你有功夫能不能开一个建站贴,每一步都写的稍微详细点,面向对象可以是懂html+css+javascript的,其实我是略懂,也接触过node.js ,但是都不精通,只是略懂,自学的,现在好想走一个项目,我觉得这个zeronet不错,如果大神有时间,我希望向你学习,有的大神说他时间很宝贵,不能浪费在这些可以自学会的地方,我其实蛮同意这个看法的,可是我还是自己搞不出网站来从第一个代码开始。

gjwzyeon May 04, 2016
Reply

士大夫

91on May 01, 2016
Reply

这个是我的用户名?

petercxyon Apr 29, 2016
Reply

p2p: 其实这篇博文折腾的东西在官方教程明确有写(manual method部分)http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:3:How+to+have+a+blog+like+this

😂

p2pon Apr 29, 2016
Reply

其实这篇博文折腾的东西在官方教程明确有写(manual method部分)
http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:3:How+to+have+a+blog+like+this

imawhoon Apr 29, 2016
Reply

明明第一次有了好用的 ZeroNet,又是第一次有了 ZeroBlog 的源代码,两件快乐的事情在一起
为什么,为什么会这样呢……

codegeasson Apr 28, 2016
Reply

看完以后感觉又学到了。

petercxyon Apr 26, 2016
Reply

arnold: 看来这套系统还处于成长期,远远还没达到正常使用的地步,可能还需要一两年的成长改善时间。

其实给普通用户用的是 Clone 功能,而从源码搭建网站显然是针对开发人员的 = = 如果直接 Clone 的话这些复杂的工作都会被自动搞定 = =

arnoldon Apr 26, 2016
Reply

看来这套系统还处于成长期,远远还没达到正常使用的地步,可能还需要一两年的成长改善时间。

imawhoon Apr 25, 2016
Reply

妈的白学

p2pon Apr 25, 2016
Reply

果然折腾
你早来中文论坛来问就好了
坑和经验我已经总结为置顶帖了
不过折腾以后有深入了解
看上去你是程序员,欢迎贡献代码:)

This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More