我正在阿里云上创建一个简单的个人博客网站,刚好正在尝试NodeJs,决定找一款基于NodeJs的CMS来完成这个工作,最后找到了KeyStoneJS。

KeyStoneJS是基于Express和MongoDB的CMS架构,详细介绍参见官网http://keystonejs.com/zh/。本文记录一下keystonejs的安装过程,后续将记录基于keystonejs的二次开发过程。

keystonejs的安装过程并不复杂,但由于涉及到node.js,MongoDB,yo等安装,如果某一步陷到坑里,就会花费不少时间。另外由于我租用的是windows操作系统,需要在IIS中运行网站,因此还需要针对windows的一些设置。大致的安装步骤如下:

1、安装node.js
2、安装MongoDB
3、安装yo
4、安装keystone
5、用yo 创建新的网站
6、测试网站
7、安装iisnode
8、在IIS中运行网站

1、安装node.js。keystonejs基于node.js,因此,首先要安装node.js。这一步比较简单,从nodejs的官网直接下载相应的安装包就可以了(https://nodejs.org)。

2、安装MongoDB。keystonejs使用MongoDB作为数据库,首先要从官网下载安装包https://www.mongodb.com/download-center,安装过程比较简单,安装完成后需要做一些配置,可以参加官网的安装指南

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/。需要注意的是,安装完成后,需要设置数据库文件的位置,为数据库文件创建一个目录,运行mongod.exe配置这个目录:

"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath d:\test\mongodb\data

我希望MongoDB作为windows的一个服务运行,因此需要为mongodb配置服务。

首先为数据库创建数据目录和日志目录:

mkdir c:\data\db
mkdir c:\data\log

然后在MongoDB的安装目录中创建配置文件mongod.cfg,比如C:\Program Files\MongoDB\Server\3.2\mongod.cfg,指明这两个目录:

systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db

最后,应管理员身份运行命令行,执行创建服务的命令:

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

这样,就可以启动MongoDB了:

net start MongoDB

3、安装yo。yo是Yeoman制作的生成器需要,官网是http://yeoman.io/。keystonejs使用yo来生成网站,如果没有安装yo的话,需要使用npm进行安装。

npm install -g yo

4、安装keystonejs的生成器

npm install -g generator-keystone

到这里keystonejs的安装就完成了,下面是使用keystonejs创建一个简单的网站。

5、为网站创建一个目录,并创建文件

比如我们创建了mywebsite的目录,在控制台中,进入这个目录,并运行:

yo keystone

生成器开始运行,在生成过程中会问你一些问题,并进行配置。还会从npm中安装依赖项。

6、测试生成的网站

安装完成后,可以测试一下生成的网站,运行:

node keystone

在浏览器中打开http://localhost:3000,应该能看到运行的网站。

7、安装iisnode。由于我希望自己的网站在IIS中运行,因此需要安装iisnode.

首先要下载iisnode并进行安装:

https://github.com/tjanczuk/iisnode

还需要安装iis的URL Rewrite模块。

然后再网站的根目录下增加web.config文件,将重定向定位到keystone.js:

<configuration>
  <system.webServer>
    <handlers>
      <add name="iisnode" path="keystone.js" verb="*" modules="iisnode" />
    </handlers>
    <rewrite>
      <rules>
        <rule name="Catch All">
          <match url="/*" />         
          <action type="Rewrite" url="keystone.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

8、最后,在IIS中创建新的网站,并将路径指向网站的目录。还要说明的是,需要进行网站目录的权限设置,给IUser完全控制的权限。

好了,可以运行了,比如我创建的这个网站http://www.jiagoush.cn

下一步需要在keystonejs基础上进行定制开发,首先要修改jade模板,使界面符合自己的要求,然后要增加一些新的功能,比如博客的评论等等。后续会将这些开发过程记录下来。

初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs)的更多相关文章

  1. 初试Nodejs——使用keystonejs创建博客网站2(修改模板)

    上一篇(初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs))讲了keystonejs的安装.安装完成后,已经具备了基本的功能,我们需要对页面进行初步修改,比如,增加 ...

  2. Linux_基于Docker快速搭建个人博客网站

    时间:2017年04月28日星期五 说明:基于docker技术,使用jpress开源框架搭建个人博客网站.特别感谢jpress开源项目.系统版本:CentOS 7.2-64bit. 步骤一:准备Doc ...

  3. Github Pages和Hexo创建静态博客网站

    Github Pages和Hexo创建静态博客网站 安装Node.js 本人是window环境,所以下载window版. 下载地址:https://nodejs.org/en/download/ 下载 ...

  4. 在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 根据您编写的应用程序,Windows Azure 网站上的基本Python 堆 ...

  5. 博客网站-Hexo+GitHub+Netlify

    Hexo+GitHub+Netlify一站式搭建属于自己的博客网站 https://www.cnblogs.com/kerbside/p/10130606.html https://hhongwen. ...

  6. Hexo+GitHub+Netlify一站式搭建属于自己的博客网站

    喜欢的话请关注我的个人博客我在马路边https://hhongwen.cn/,此文为博主原创,转载请标明出处. 更好的阅读体验请点击查看:Hexo+GitHub+Netlify一站式搭建属于自己的博客 ...

  7. Hexo+Github/Coding免费搭建个人博客网站

    体验更优排版请移步原文:http://blog.kwin.wang/other/hexo-github-build-blog.html 很早之前就想搭建一个属于自己的博客网站,一方面是给自己做笔记,把 ...

  8. Hexo系列(一) 搭建博客网站

    写在前面的话:本系列文章主要参考 Hexo官方说明文档,同时结合自己在使用过程中的一些心得体会,撷取下来,和大家分享分享.好,下面闲话不多说,马上开始我们的 Hexo 之旅吧 温馨提醒:博主使用的操作 ...

  9. Hexo+Github: 博客网站搭建完全教程(看这篇就够了)

    本篇教程首次发布在个人博客:sunhwee.com,想要获得最佳阅读体验,欢迎前往,建议用电脑查看教程文档. # 阅读须知 注意,这篇文章篇幅较长,主要针对新手,每一步很详细,所以可能会显得比较啰嗦, ...

随机推荐

  1. 如何利用Cron让django应用定期执行

    最近用Django写了一个项目,但是有一个地方需要应用在后台自动定期执行检查,并存入数据库,如果单纯的写Python程序的话不能很好的跟django的结合在一起,写起来也和麻烦,查找资料的时候发现了d ...

  2. template.js遍历对象的写法

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  3. * {margin:0px; padding:0px;}什么意思?

    * {margin:0px; padding:0px;} *  表示所有的元素的对齐方式以及和父类之间的间距都为0 body{margin:0px;padding:0px;} body里面的则表示的是 ...

  4. 扩展jquery的选择器

    I’m sure you all know that it’s possible to create plugins and extend various aspects of the jQuery ...

  5. html5 01

    (1)Html 5的概念 能做什么? 为什么学习? HTML5并不仅仅只是做为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,成为第一个将Web做为应用开发平台的HTML ...

  6. hive中rcfile格式(收藏文)

    首先声明,此文是属于纯粹收藏文,感觉讲的很不错. 本文介绍了Facebook公司数据分析系统中的RCFile存储结构,该结构集行存储和列存储的优点于一身,在MapReduce环境下的大规模数据分析中扮 ...

  7. [整理]FPGA学习资料汇总

    01.特权同学倾情奉献海量FPGA学习资料 http://pan.baidu.com/s/1pJIb32F

  8. 深入理解URL

    URI(Universal Resource Identifier)通常由三部分组成: ①访问资源的命名机制: ②存放资源的主机名: ③资源自身的名称,由路径表示. 如下面的URI:http://ww ...

  9. unity3d 孤岛求生基础案例

    第二个案例,此案例主要实现了第一人称控制器,把移动从世界坐标系转化到人物平面坐标系,通过碰撞器,触发器,光线透射触发器实现交互.实现UI texture记录收集信息,ui texture是更新内容对应 ...

  10. <textarea>没有内容时,按回车键,设置光标不换行

    $("textarea").val($("textarea").val().replace(/\n/g,""));