备案的林林总总

服务器

准备一台sever,有人会说配置好一点的贵,还不如申请一些免费或者便宜的国外VSP的什么之类啊blah,blah。。还省钱,然后买个域名就好了,什么个人博客其实也够用了。当然一分价钱一分货,你把服务国外自然访问起来各种慢啦,难得我团之前发福利,领了个云主机的1000块的券,终于能省下一笔钱了,买了个1核2G的美团云服务器,哈哈哈…
总之我团的服务器性价比其实还可以哈,客服各方面处理的还是挺快的,也不是因为自己公司员工的关系来做广告,总之提工单处理速度还是客服咨询还是解答回复的很快,各种端口异常,服务故障,端口恢复还是能比较及时的短信告知你本人的,就算我这里给打个广告了…

域名

域名这里比较坑爹,反正国外最大的域名贩卖商就是那个 🐶 Daddy(goDaddy),国内阿里的万网等等,当然阿里云和万网都一整套的,什么域名服务器你也可以一气都在那上面解决了,阿里云还有什么node服务监控等等,你网上随便搜搜也能搜到一大堆,当时好多人都会吹🐶Daddy多么多么好,多么多么靠谱,当然你要是用国外的VPS或者服务器,也不影响啥,各种炫酷域名后缀,什么.name .me .us .biz.info,随便你挑,总之指到你服务上去就行。
但是!在国内,你不能那么任性!你不能那么任性!你不能那么任性!重要事情说三遍,一定要先看下这个链接全国备案基本要求,因为偶自己在 🐶 Daddy买了个.info的炫酷域名,结果根本就满足不了北京的备案要求。
如果你想在国内备案的话,当然国内备案虽然麻烦也有国内的优势,你想让你的网站访问很流畅并且就是面向国内的用户的话,还是老实的去备案吧,不过值得注意的一点,其实备案主要是针对放到公网服务器的备案,这点你必须得清楚,只不过域名是有一些要求,具体的还是看上面“全国备案基本要求”那个链接,总体来说还是越发达的省市要求的条件越苛刻,比如北京,那些个性域名直接就不可能通过,所以那些个性域名卖的比正常的便宜很多,一分价钱一分货!还是那个道理。即便你是.com域名,如果是🐶 Daddy上买的,不行!你必须要把域名转入到国内的服务商下面,你还得做转入转出,总之还是像最开始说了,直接万网上直接一下都搞得最好了。

备案

备案流程其实有点麻烦,不过还好国内的阿里云,美团云,青云之类的都能免费提供备案服务,但是虽然是给提供服务还是要麻烦你搞一些东西,网站上提申请,要填一下个人信息,你网站的内容主题等等,当然主题里面最好不要有“博客”这样比较敏感的关键词,之后审核通过了,会给你邮寄幕布,然后让别人拿着幕布给你拍张照片,在给服务商邮寄回去,提交你的照片,身份证复印件等等,然后代办的服务商在帮你提交申请,大约需要等个半个月,如果没啥问题的话,基本就能批下来了,到时候给你个备案号还有初始密码,可以在网上查到是认证过的,之后还会时不时给你发短信让你确认一下你的域名是否真的在你所提供信息的人的下面。
既然我团云能给帮忙代办,我就省了好多事情,信息网上填了,提交通过后,公司同事让我去照相,我颠不颠过去拉个幕布照完之后,等就行了,省去了不老少麻烦的邮寄材料环节。

结语

最后,还是建议在国内备案吧,随便搞一下在国外那种的挺没啥劲的,各种不稳定,顺便结尾在吐槽一下🐶Daddy网站的用户体验有多么烂,其实这些年国内的互联网公司真的发展的挺快的,至少有些的各方面都远超美利坚,就比如我的美国Teacher看到国内年轻人能拿手机app点餐就会觉得灰常灰常的Amazing的,对于这样我也是只能内心呵呵一笑,其实有时候国人更应该多一些自信的…

完…

Hexo快速搭建及forever进程守护

Hexo简介

Hexo是一个采用nodejs的静态博客,市面上的类似的博客也有很多,比较有名的Jekyll,Octopress等,到最早的wordPress,我无聊最后选Hexo纯是因为它用的是nodejs而已。其实Jekyll也很好用啊,用Jekyll+Pages一起就能随便搞一个博客,而且还不用自己买服务器,托管到github上还无需备案,无非就是国内访问github有时候有些慢你懂得,闲的无聊也弄了个tobyreynold,搞起来其实上手比hexo还快,你还可以自己的github账号下面直接建个XXX.github.io的git仓库然后直接一关联就可以了,你也可以买个域名直接指过去,不用他白给你的XXX.github.io也行,随意..Hexo

Hexo搭建

进入 Hexo官网,按照教程npm install 各种之后,生成Hexo工程,Hexo sever就启动起来了,
同样你在服务器端也可以直接这样搞,或者本地搞定了直接rsync到服务器上去也行,又或者直接github上建一个git仓库,本地搞定了推到github,服务器端pull github上的代码就可以了。

Hexo进程守护

Node进程守护有很多工具,ForeverPM2PM2.5 blah blah.
解决的问题也是很容易讲清楚,比如:ssh登陆服务器,启动node服务,然后ssh断开连接,服务中断,网站无法访问。
这里讲一下用forever 解决 Hexo 进程守护的问题:

安装forever:

1
2
3
$ [sudo] npm install forever -g
$ cd /path/to/your/project
$ [sudo] npm install forever-monitor

Hexo下新建一个app.js,写入下面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var spawn = require('child_process').spawn;
free = spawn('hexo', ['server', '-p 4000']);/* 其实就是等于执行hexo server -p 4000*/

free.stdout.on('data', function (data) {
console.log('standard output:\n' + data);
});

free.stderr.on('data', function (data) {
console.log('standard error output:\n' + data);
});

free.on('exit', function (code, signal) {
console.log('child process eixt ,exit:' + code);
});

其实思路也很简单,大致意思就是node启动一个子进程,用forever 守护 hexo sever -p 4000这条命令(4000代表端口),关于node的child_process的相关知识,请自行baidu、google,或者去查nodejs的文档。

执行forever命令:

1
$ forever --minUptime 10000 --spinSleepTime 26000 start app.js

至于后面这几个minUptime、spinSleepTime可填可不填,不填默认也会有,参数的意思可以直接去forever上查询。

停止服务

这里值得注意的是你拿forever启动的服务,通过forever stopall是根本停不掉的,因为其实你执行的是hexo sever,可以通过下面的办法:

1
2
3
$ lsof -i:[port]
$ ps aux|grep hexo
$ kill pid(进程的id)

完…

快速搭建Node服务器

准备工作

一台sever,配置自己定
nodejs安装包,下载地址:http://nodejs.org/dist/v4.4.2/node-v4.4.2.tar.gz (暂时稳定版本)

安装步骤

1
2
3
4
5
6
7
8
9
10
$ cat /etc/system-release 
CentOS release 6.1 (Final)
$ locale
LANG=en_US.UTF-8 ...
$ wget http://nodejs.org/dist/v4.4.2/node-v4.4.2.tar.gz
$ tar zxvf node-v4.4.2.tar.gz
$ cd node-v4.4.2.tar.gz
$ ./configure --prefix=/usr
$ make
$ make install

安装express

1
2
3
4
5
6
7
$ npm -g install express forever supervisor
$ sudo npm install -g express-generator
$ express app
install dependencies:
$ cd app && npm install
run the app:
$ DEBUG=app:* npm start OR npm start

sever端搭建git仓库

在sever端安装好git之后,客户端往服务端push代码会报错,类似如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

执行下面的命令解决该问题:

1
$ git config receive.denyCurrentBranch ignore

以后客户端push代码之后,服务端同步更新只要在sever端执行 git pull 就可以更新成最新代码。