05月05, 2015

使用nodejs+github建立站点

使用的工具

  • nginx做为webserver入口,并对指定的路径做代理转发
  • github&&git做为源代码存放
  • nodejs我这里还用的node做为server后端语言,当然你完全可以使用php

创建步骤

github里建立仓库

这里不用太多解释了吧,比如我建立的 demo

在服务端安装git

在你的服务器上安装git客户端,并生成你的ssh-key,把生成后的公钥配置到你的github账号设置里,这时候你的服务器就具备你仓库的操作权限了,把你建立的仓库clone到你服务器上,大概的目录结构是这样的:

./wwwroot/ //站点根目录
 ./demo/ //克隆的仓库目录
 ./demo-server/ //为了更新钩子,一会你就知道是做啥的了

友情提示: git

配置nginx

nginx主要功能就是支持静态资源,对非静态资源进行代理转发给后端,我这里用的是nodejs跑的后端服务,配置如下:

server {
 listen 80;
 server_name github.xuexb.com;
 root "/home/wwwroot/demo";
 autoindex on;
 # 如果目录有md则重写到md
 if ( -f $request_filename/README.md ){
 rewrite (.*) 1ドル/README.md break;
 }
 # 做github更新的勾子
 location = /update {
 proxy_pass http://127.0.0.1:81;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 # 代理所有的md到nodejs上
 location ~ \.md$ {
 proxy_pass http://127.0.0.1:81;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
}

nodejs启用端口81,把.md的文件发到81上,把更新钩子发到81上,站点的根目录是demo

具体对外的什么域,什么端口看你了

配置github钩子

打开 你github仓库地址/settings/hooks,在这里添加一个Webhooks,地址是你更新的路径,我这里是 xxoo.com/update,我使用的事件是push的时候更新

配置后端

其实这里后端只要的功能就是跟github钩子配合更新文件,用啥语言没限制,看你的心情了

把后端建立在demo-server目录,并对外监听81端口(因为nginx转发到81了),遇到更新的路径,则执行cd ../demo && git pull命令更新文件,因为github钩子带的参数非常全,你还可以检测commit message里是否有发布相关的字,就可以达到按需更新了

我这里用的是nodejs,只是处理下.md文档,当然你可以使用nginx+php来搭建php环境

我的nodejs更新钩子文件点这里看

测试钩子

现在你在本地也clone一个你的仓库,并修改文件后pushgithub,然后你浏览下你的站点,是不是也更新了?

到这里你基于github的站点搞定

在线demo 仓库地址

注意:因为公用仓库你要小心你的隐私,当然土豪的你可以买私有仓库

本文链接:https://xuexb.com/post/255.html

-- EOF --

发表于 2015年05月05日 08:16:00 ,添加在分类 后端技术 前端技术 下 ,并被添加「 nginx node github 」标签 ,最后修改于 2017年03月29日 21:22:20

提醒: 本文最后更新于 3208 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。

AltStyle によって変換されたページ (->オリジナル) /