i2000s / cn

The Chinese branch of the i2000s.github.io website.
1 stars 0 forks source link

国内可访问性问题 #6

Open i2000s opened 7 years ago

i2000s commented 7 years ago

好像Github屏蔽了百度等搜索引擎的爬虫(见知乎上的讨论),而且Cloudflare在国内不可访问。加上一些其他的社交网站被屏蔽。所以需要重新考虑外部架构的问题。

  1. 需要替换twitter等连接为微博连接。可以根据子站点的域名自动选择显示社交网站的图标和链接,或者对子库选择性提供社交网站图标和链接(推荐)。需要考虑将自动刷取Twitter源信息的文字框换成微博信息框。站外,各个社交网站间采用自动转发模式,保持内容同步。目前新浪微博同步的内容可能有重复贴子的问题,噬待解决(WIFFF)。

    ~2~. 解决网站域名可访问性问题:或许最简单的方法就是让现在正在使用的Cloudflare服务支持国内访问。参考这里。我已提交了相关的问题请求给Cloudflare,并正在咨询有关ICP申请步骤的有关问题。目前也已向.tk提交了下载域名证书的请求以用于ICP备案申请。ICP备案申请可以使用各大国内云服务商。Cloudflare或许也可以提供他们在国内的节点服务器优化下载速度。经过这一步,如果百度爬虫还是无法抓取在Github源服务器上的sitemap等信息,可以考虑将Github上的库自动同步到GitLab或者Coding.net的pages库上,然后将Cloudflare引向镜像服务器解析。原来在Github上的CNAME应该不影响对镜像服务器上的CNAME的解析。 16-12-12更新: Cloudflare打电话过来,说他们只提供商业级服务,费用大概是$500-5000每月。所以放弃Cloudflare的付费服务。

  2. 如果Cloudflare不能提供ICP帮助或者无法提供稳定的国内访问的CDN服务,解决网站域名可访问性问题可以参考以下几个方案: a. 考虑建立镜像库到国内的服务器。比较便捷的是自动同步到Coding.net。参考这篇blog。使用其他云主机,参考这里的新浪云针对Docker的阿里云自搭服务器VPN加DNSPOD智能转接。在可控服务器及Docker上安装SSL认证的方案可以参考这里。好像cloudxns也提供DNS路线解析服务。刚测了一下,CNAME和A配置可以多路解析,但是301及302转接等服务就需要ICP备案了。貌似备案过程比较麻烦,而且目前来看必须要花钱购买国内的空间才有可能备案,而且以后接入IP不能变。这样的话,对于一个国内访问量不大的站点或许不值得。 b. 考虑使用国内的CDN,这样就需要考虑CDN是否提供https链接。网上可以查到的服务器有七牛--不过自定义域名的https访问需要交费。百度云加速好像也类似,正式通告见这里。又拍网(upcloud)等亦提供类似的服务,只是以上都需要有国内电话做验证用。阿里云国际版亦提供CDN和SSL服务,不过要申请ICP,需要使用付费的云计算空间(已申请试用30天免费体验,结果无法获得ICP申请码)。使用腾讯云,采用按流量或带宽收费的方式,目前已上传了个人身份认证信息(278167140)以加快整体进程,以防需要使用他们的服务及ICP申请协助。腾讯云好像可以提供免费的SSL认证。其他CDN信息可以参考v2ex站点检索。 c. 将Github的源文件同步发布到GitLab(可以考虑使用webhook或Travis-CI,实际上GitLab自带mirror功能,只使用Git的操作见这里),然后在GitLab上安装TLS及Let's Encrypt。GitLab搭建Pages的方法可以参考这个帖子。原来考虑过将网站同步到学校或者研究组的服务器上,结果学校那边只提供50MB空间,研究组的恐怕以后不是长远之计。联合使用GitHub和GitLab的经验可以参考这个blog post16-12-11更新:GitLab的项目网页结构跟GitHub不同,自定义域名下不能直接将项目网站作为域名的子目录对待。所以简单的迁移并不奏效(已提交feature request)。需要中外网站分别用不同的域名了。已在百度注册gitlab的站点检索。

思路先写这些。具体的实施需要边走边瞧。

i2000s commented 7 years ago

在GitLab上做Github的镜像比我想象的要简单。刚刚按照这里的说明完成了对主站和中英文子站库在GitLab上的镜像操作。后面再测试用GitLab-CI编译静态网站的操作。

i2000s commented 7 years ago

设置文件.gitlab-ci.yml只放在了对应静态html页面branch下。在GitLab,要触发runner,需要点击pipeline里面建立新pipeline的按钮。同时发现设置自动更新一个多小时后未发生自动更新现象。已报至Gitlab issue tracker

i2000s commented 7 years ago

今天的测试:已按照GitLab安装Let's Encrypt的说明将TLS证书安装文件放到了网站相关目录下。与GitLab说明页上的步骤不同有如下两点:

  1. 貌似加密域名一次只能有一个,所以我选择了加密www.qixiaodong.tk这一个域名,毕竟根(bare)域名(没有www)最终会指向全域名。
  2. 产生含有随机字符串文件的时候,我使用了http://www.qixiaodong.tk/.well-known/acme-challenge/YVGhcDZME5SaALrv3kv1BP-ZYHDbDyFkheYn90-T3ww/index.html作为文件的永久地址(注意我用了index.html,而说明文件直接建立的×××.html),源文件路径为dev branch下 /assets/files/letsencrypt-setup.html。结果这样不成功,然后又换回了说明里的方案,还是不成功。

最关键的是,将Cloudflare的DNS导向Gitlab站点后,结果发现子目录不能自动解析到申请域名的子目录下。这个是GitLab跟GitHub的本质不同之处。最终选择放弃了将Cloudflare 转向Gitlab mirror的计划。

随后将百度认证的html认证文件导入了GitLab站点下面。希望将GitLab独立或者跟自定义域名合并作为百度检索的来源。同样的操作也在ICIQ站点上实施了。

i2000s commented 7 years ago

新浪微博的rss订阅可以使用http://rss.weibodangan.com/weibo/rss/1056836591/

来源:http://sinacn.weibodangan.com/