我正在阿里云上创建一个简单的个人博客网站,刚好正在尝试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. 数据库——JDBC

    数据库--JDBC 数据库优点:降低存储数据的冗余度: 更高的数据一致性: 存储的数据可以共享: 可以建立数据库所遵循的标准: 便于维护数据完整性: 能够实现数据的安全性: 建立数据库: 数据库的存储 ...

  2. arcgis_engine_c++_runtime_r6034_error

    在启动项目中添加app.manifest文件 <?xml version="1.0" encoding="utf-8"?> <asmv1:as ...

  3. centos 6.5 x64创建并挂载使用iscsi共享磁盘

    前景摘要:NFS或iSCSI,哪个更好?文件 vs 块NFS使用文件级别的实施,服务器或存储阵列托管整个文件系统,客户到文件系统上读写文件,可以在阵列端对主存储数据进行重复数据删除.iSCSI和FC则 ...

  4. IT在线笔试总结(二)

    1. 循环队列的长度计算:对于非循环队列,尾指针与头指针的差值便是队列长度,而对于循环队列,差值可能为负数,因此需要将差值加上MAXQSIZE再与MAXQSIZE求余. 2. 算法的时间复杂度取决于: ...

  5. js点击打开一个固定宽高的网页

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. AngularJS 2 Typescript 相关

    1. Angular 2 In 60 Minutes (2016年11月23日) https://www.youtube.com/watch?v=-zW1zHqsdyc 2. AngularJS Cl ...

  7. jquery实现静态html文件的include嵌入效果

    //引入jQuery的js 建立footer.html,内容为要嵌入的内容. 在需要嵌入的页面中加入: $.get("footer.html",function(data){ $( ...

  8. TJI读书笔记17-字符串

    TJI读书笔记17-字符串 不可变的String 重载”+”和StringBuilder toString()方法的一个坑 String上的操作 格式化输出 Formatter类 字符串操作可能是计算 ...

  9. webpack配置备份

    package.json: { "name": "webpackTest", "version": "1.0.0", & ...

  10. Winform 获取当前单击的控件名称 和 向窗体添加控件

    Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_C ...