nodejs+好雨云平台git免费搭建个人博客

来源:互联网 发布:淘宝招聘中老年女模特 编辑:程序博客网 时间:2024/05/20 17:26

我们将使用Node.js做一个简单的web服务器并利用好雨应用管理平台将我们本地的服务放到互联网上面。


Node.js是一个开源的跨平台运行环境,允许我们构建一个服务器端和网络应用的运行环境。使用JavaScript语言开发可以通过Node.js运行时环境跑在任何平台。当然,开始使用前我们需要先进行安装,通过这个下载地址找到适合我们系统的安装包进行安装。

简单的开始

首先我们需要写一个JavaScript文件,我们叫它server.js,这个就是我们运行web服务器的程序。

var http = require("http");http.createServer(function(request, response) {  response.writeHead(200, {"Content-Type": "text/plain"});  response.write("It's work!");  response.end();}).listen(5000);

相信我,这是你看到的最简单的服务器程序了,是不是很简单,接着我们在命令行下运行这个文件。

node server.js

这样我们的web服务器就已经运行了,打开浏览器让我们确认一下它正常工作了。



Node.js可以用很少的资源,应付大流量访问,因为node采用了event loop机制来解决单线程的问题,这种运行方式称为”异步模式”(asynchronous I/O)或”非堵塞模式”(non-blocking mode)。


让我们通过这幅图解释的更详细一些:



这幅图很好的展示了在Node.js服务内部是如何工作的。一个用来处理外部事件并且把它们转换成对回调的调用的实体。


这些工作都是在服务内服实现的,我们在写代码的过程中不会接触到这些问题。所以我们只需要了解Node运行如此快的原因正是基于这种”异步I/O模式”就可以了。

部署到网上

我的服务器已经正常运行了,可是它只是跑在我的本地,如果想要让更多的人访问我的网站,我需要将它放到互联网上我们需要选择一个云平台来部署我们的网站。对于云平台我们有很多选择,比如亚马逊Heroku等等,但因为众所周知的原因,国外的云服务我们使用起来并不方便,甚至无法访问。

所以我选择了好雨云来部署网站,好雨云是一个云端的应用管理平台,也就是我们通常所说的PaaS(platform as a service),它允许你自动部署web应用,支持几种构建方式,比如我使用就是源码构建,这节省了我很多时间,可以让我专心写代码,不用为服务器、网络以及代码运行环境的配置操心。

写个博客

好,在部署之前,我们需要进行一些开发的工作,让我们写个简单网站,新建项目目录名为myblog,并创建server.js(上面说过的,还记得吗?)首先声明一些变量:

var http = require("http");var fs = require("fs");var path = require("path");var mime = require("mime");

这里包含了一个第三方的依赖mime,他不是node的一部分,我们需要先安装这些第三方依赖才能让程序工作。为了解决依赖问题我们需要写一个package.json文件将我们项目需要的依赖放进去。


就像这样:

{  "name" : "myblog",  "version" : "0.0.1",  "description" : "a simple blog",  "dependencies" : {    "mime" : "~1.2.7"  },  "scripts": {    "start": "node server.js"  },  "engines": {    "node": "4.7.2"  }}

语法很简单,但要注意一些语法细节,不然经常会发生因为少了逗号或者引号造成构建失败这种低级的错误。这里我们声明依赖的mime的版本、启动命令以及node的版本。


如果我们代码的根目录下存在package.json文件那么好雨云就会判断这是Node.js程序并安装相应的依赖以及调用我们声明的命令来启动程序。
接着我们需要为web服务器增加一些功能来处理不同的请求,send404是当请求到不存在的文件时,我们要如何处理:

function send404(response) {  response.writeHead(404, {"Content-type" : "text/plain"});  response.write("Error 404: resource not found");  response.end();}

sendFile文件数据服务:

function sendFile(response, filePath, fileContents) {  response.writeHead(200, {"Content-type" : mime.lookup(path.basename(filePath))});  response.end(fileContents);}

定义服务器如何执行请求:

function serverWorking(response, absPath) {  fs.exists(absPath, function(exists) {    if (exists) {      fs.readFile(absPath, function(err, data) {        if (err) {          send404(response)        } else {          sendFile(response, absPath, data);        }      });    } else {      send404(response);    }  });}

创建http服务器:

var server = http.createServer(function(request, response) {  var filePath = false;  if (request.url == '/') {    filePath = "public/index.html";  } else {    filePath = "public" + request.url;  }  var absPath = "./" + filePath;  serverWorking(response, absPath);});

配置服务的监控端口:

var port_number = server.listen(process.env.PORT || 5000);

为啥是5000呢?因为好雨云默认分配5000的监控端口。所以我们将这里配置好,就可以直接被访问到。


然后我们开始写内容,在项目目录(myblog)下新建几个目录:publicstylesheetsimages。我们将index.html放到public下,将我们样式文件style.css放到stylesheets下,静态资源图片放到images下。


博客的首页index.html代码如下:

<!DOCTYPE html><html>    <head>        <title>我的博客</title>        <link rel="stylesheet" type="text/css" href="http://oe5ahutux.bkt.clouddn.com/style.css">    </head>    <body>        <div id="header">            <span>一个简单的博客</span>        </div>        <div id="content">            <h2><a href="http://www.amazon.cn/gp/product/B007VISQ1Y/ref=as_li_ss_tl?ie=UTF8&camp=536&creative=3132&creativeASIN=B007VISQ1Y&linkCode=as2&tag=jysperm07-23">JavaScript 权威指南</a></h2>            <p>这本书事无巨细地介绍了 JasvaScript 语言核心、标准库以及浏览器提供的 DOM 和 BOM. 本书并没有由浅入深的结构,而是通篇平铺直叙地介绍,因此适合有一定 JavaScript 基础的人从头至尾阅读来掌握一些相对细节的 JavaScript 知识,或遇到具体问题时查阅相关章节。</p>            <h2><a href="something.html">JavaScript 异步编程</a></h2>            <p>这本书介绍了 JavaScript 中事件模型、Promise、async.js 等异步抽象的设计和实现,同时也介绍了 Web Woerk 等在浏览器中优化性能的技巧。这本书适合所有 JavaScript 程序员增加对 Promise 等异步模型的理解,并在实践中挑选合适的异步模型。</p>        </div>    </body></html>

浏览器中访问的样子:



首页代码中,我故意写了一个可以访问的正确链接和一个不可访问的错误链接,这样我可以试一下404返回内容。



部署到好雨云

OK,到这里我们的网站写好了,需要将代码提交到好雨云来部署,点新建应用后,好雨平台会给我们一个git代码仓库的地址,我们只需要将代码提交到这个地址就可以了。



在我们本地的myblog项目目录中执行

# 初始化本地git仓库git init# 添加远程仓库地址git remote add goodrain http://code.goodrain.com/app/simtime_gr8904c4.git# 执行提交git add .git commit -m "first commit"git push -u goodrain master

提交后,平台自动识别了我们的语言



在自动构建和部署之后,我们就可以访问到我们的网站了。


总结

我们写了不到60行代码,将我们的web服务器构建了起来,并写了一个演示用的博客页面,也许你会说这太简单了,没错,确实是这样,但通过这些你可以快速的了解到web服务器是如何工作。你还可以将Node.js与更多技术结合,比如HTML5CSS3以及JavaScript,当然还包括种类丰富的库和框架支持。


PaaS云平台的选择也是一个重点,可以帮助我们快速学习、试验我们的代码,将我们从复杂的配置和运维工作中解脱了出来。



搭建过程中遇到的问题

问题描述:将本地的blog文件内容提交到的云上的时候会出现这段话

fatal remote goodrain already exists  (这段话的意思是远程已经存在)


好吧现在让我们来摸索一下解决方案


当我妈提交上传的时候又提示

on branch  master

nothing to commit working tree clean(大概意思呢是说提交主分支,没有进行清洁工作)



这一步他让你输入好雨云的账号密码 不要傻乎乎不输入就点确定



此时你刷新一下好雨云就会显示识别你的node,js文件了






亲爱的不要傻乎乎的等点击一下一键部署哦


点击访问全是乱码 0.0


至于为啥是乱码 我也不知道,我问问群主

好吧事情是这样的UTF-8的问题  在谷歌浏览器可以正常显示  火狐不行  设置一下编码即可

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- head -->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <title>我的博客</title>
        <link rel="stylesheet" type="text/css" href="http://oe5ahutux.bkt.clouddn.com/style.css">
    </head>


替换到</head>
就行了



二.上传更新的代码

这个时候我已经把index的代码全部替换成我自己的代码了

首先在cmd进入到myblog文件里  命令行输入

git add .                                       (刷新一下)

git commit -m "one gengxin"   (提交更改备注:一次更新)

git pish - u goodrain 上传代码 

新项目提交代码

git config --global user.name "你的姓名"  # 配置git提交用户名git config --global user.email "you@example.com" # 平台登录邮箱地址cd parent_dir  # 进入项目父目录mkdir gitDemo  # 创建项目目录 gitDemocd gitDemo     # 进入项目目录git init       # 初始化空的 git 仓库touch README.md   git add README.md # 这两行添加简单的 README.md 文件git commit -m "first commit" # 提交时附加的信息git remote add goodrain http://code.goodrain.com/app/salogs_php-hello.git  # 添加一个名为 goodrain 的远端( url 为 git 地址)git push -u goodrain master # 将该目录下的文件推送到远端(goodrain)上的 "master" 分支

注意:

上面命令中需要将git的url地址替换为用户自己的地址。用户名为登录 goodrain 时邮箱,密码也是登录时的密码。

上传已有代码或更新的代码

cd existing_git_repo #进入已有项目或更新的项目目录# 若该项目目录未建立 git 仓库,则需用 README.md 初始化 git 仓库,详见“创建新项目上传”# 若有git仓库则直接添加远端仓库上传# 如果目录下有文件没有被追踪(未与远端仓库同步),可以使用“ git add 文件名” 和 “ git commit -m "message" ”,来添加追踪文件git remote add goodrain http://code.goodrain.com/app/salogs_php-hello.gitgit push -u goodrain master # 这两行将该目录下的文件推送到远端(goodrain)上的 "master" 分支

同样,对于后续更新的提交也同样可以按照这种方式,即进入项目目录,配置远端,推送代码。


0 0
原创粉丝点击