怎么注册博客网站?新手建站教程( 三 )


自动化部署
通过设置的可以实现自动化构建和部署 。过程是,提交博文或者配置到仓库,仓库会触发你设置的,会向你设置的地址发送一个post请求,比如我设置的请求是在服务器的跑的一个程序,监听gitub 的请求,接受到请求后,会执行shell命令 。
首先设置仓库的,在仓库的项目界面,比我的我的项目界面,点击->->Add ,在添加的配置信息,我的配置信息如下:
这样就设置成功了,现在在博客所在的服务端去监听 发送的请求,我采用的开源组件去监听--,项目地址为:,首先安装:
npm install -g github-webhook-handle
安装成功后,在/root/node-v8.12.0-linux-x64/lib//--下新建.js文件:
var http = require('http')var createHandler = require('github-webhook-handler')var handler = createHandler({ path: '/incoming', secret: 'a123456' }) function run_cmd(cmd, args, callback) { var spawn = require('child_process').spawn; var child = spawn(cmd, args); var resp = ""; child.stdout.on('data', function(buffer) { resp += buffer.toString(); }); child.stdout.on('end', function() { callback (resp) });}http.createServer(function (req, res) { handler(req, res, function (err) { res.statusCode = 404 res.end('no such location') })}).listen(3001)handler.on('error', function (err) { console.error('Error:', err.message)})handler.on('push', function (event) { console.log('Received a push event for %s to %s', event.payload.repository.name, event.payload.ref); run_cmd('sh', ['./start_blog.sh'], function(text){ console.log(text) });})
上述代码中,指定了服务的践踏端口为3001,监听了path/,为,这和之前 设置的要保持一致 。代码('sh', ['./.sh'],指定了接受到请求后执行./.sh,.sh文件的代码如下,首先进入到博客的代码文件,拉代码,编译 。
echo `date`cd /root/forezp.github.ioecho start pull from github git pullecho start build..jekyll build --destination=/usr/share/nginx/html
然后需要使用来启动.js的服务,执行命令如下:
sudo npm install forever -g #安装$ forever start deploy.js #启动$ forever stop deploy.js #关闭$ forever start -l forever.log -o out.log -e err.log deploy.js #输出日志和错误/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -l forever.log -o out.log -e err.log deploy.js如果报错:/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -a -l forever.log -o out.log -e err.log deploy.js
最后一步,需要在nginx服务器的配置文件,需要将监听的/请求转发到服务上,配置代码如下:
location = /incoming { proxy_pass http://127.0.0.1:3001/incoming;}
这样,当你提交了文章或者修改的配置到gitub上,通过向你所在的服务器发送请求,服务器接收到请求后执行 sh命令,sh命令包括了重新pull代码和编译代码的过程,这样自动化部署就完成了,你只需提交代码,服务器就触发pull代码和重新编译的动作 。
补充
博客可以设置百度统计、谷歌分析、不蒜子统计、留言板等功能,这些功能需要自己申请账号,实现起来比较简单,具体自己百度 。
另外,如果博客需要上https协议,需要在阿里云申请免费的SSL证书,申请完之后,可以在阿里云上查看Nginx安装SSL证书的教程,并做配置,按照它的提示来,比较简单 。最后涉及到了涉一个重定向的问题,比如我的网站,我需要将 、 、 全部重定向到,这时需要修改nginx的配置文件.conf,现在我贴出我的完整的配置如下:
server { listen 80; server_name fangzhipeng.com www.fangzhipeng.com; return 301 http://www.fangzhipeng.com$request_uri; }server { listen 443; server_name fangzhipeng.com; return 301 http://www.fangzhipeng.com$request_uri; }server { listen 443 default_server ssl; server_name www.fangzhipeng.com; #if ( $host != 'www.fangzhipeng.com' ) { # rewrite "^/(.*)$" http://www.fangzhipeng.com/$1 permanent; # } ssl on; root html; index index.html index.htm; ssl_certificate cert/215042476190582.pem; ssl_certificate_key cert/215042476190582.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }}