sandbox-memo

開発してて出たエラーをメモる場所

Keystone JSをCloud9で試すメモ

Wordpress以外のいいかんじのCMSないかなーとおもっていたらKeystone JSというのがよさげだったので試してみたメモ。 環境はCloud9でござる。

参照したページ

セットアップは超簡単。 KeystoneJSとYEOMANとmongoDBの各公式ページをみて、書いてあることを実行するだけでOK。

keystonejs.com

Getting started with Yeoman | Yeoman

Install MongoDB Community Edition on Amazon Linux — MongoDB Manual

セットアップ手順

もっかいやるときのために残しとく。

Cloud9で新しい環境を追加

※貧乏性にかられてt2.nanoで立てたみたら、かなり厳しかった。 KeystoneJSのSign inとか管理画面の表示でタイムアウトしちゃうレベル。 t2.smallにしたら一応触れるレベルにはなったので少なくともt2.small以上にしたほうがよい。

KeystoneJSいれていく

KeystoneJSのGet Startedにしたがって上からやっていく

npm install -g generator-keystone
mkdir my-test-project
cd my-test-project
yo keystone

ここで200%くらいの確率で yo command not found と言われるので

npm install -g yo
yo keystone

でyoをいれてから実行してあげる。 yeomanっていうビルドツールなんだそうな。

実行すると、「サイト名何にする?」「スタイルガイドはなにつかう?PUG?」とか聞かれるので適当にエンターまたはYを押していく。

適当にこたえるとmy-siteというディレクトリができるので

cd my-site

で移動し、

node keystone

とやると、 Error: Cannot find module 'keystone' とか言われる。

理不尽すぎて悲しくて面倒なので、

npm install -g npm-install-missing
npm-install-missing

とやって、足りないモジュールを一括で適当にインストール。 cloud9で試すだけだから細かいことは気にせず男気で押し切っていく。

んで、もっかい

node keystone

をしたら、今度はこんなエラーに。

Mongoose connection "error" event fired with:
{ MongoError: failed to connect to server [localhost:27017] on first connect
    at Pool.<anonymous> (/home/ec2-user/environment/my-test-project/my-site/node_modules/mongodb-core/lib/topologies/server.js:326:35)
    at emitOne (events.js:96:13)
    at Pool.emit (events.js:188:7)
    at Connection.<anonymous> (/home/ec2-user/environment/my-test-project/my-site/node_modules/mongodb-core/lib/connection/pool.js:272:12)
    at Connection.g (events.js:292:16)
    at emitTwo (events.js:106:13)
    at Connection.emit (events.js:191:7)
    at Socket.<anonymous> (/home/ec2-user/environment/my-test-project/my-site/node_modules/mongodb-core/lib/connection/connection.js:175:49)
    at Socket.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at emitErrorNT (net.js:1290:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  name: 'MongoError',
  message: 'failed to connect to server [localhost:27017] on first connect' }
Error: KeystoneJS (My Site) failed to start - Check that you are running `mongod` in a separate process.
    at NativeConnection.<anonymous> (/home/ec2-user/environment/my-test-project/my-site/node_modules/keystone/lib/core/openDatabaseConnection.js:59:10)
    at emitOne (events.js:96:13)
    at NativeConnection.emit (events.js:188:7)
    at Immediate.<anonymous> (/home/ec2-user/environment/my-test-project/my-site/node_modules/mongoose/lib/connection.js:296:19)
    at runCallback (timers.js:672:20)
[mongodb-org-4.0]
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

mongoがいなくてンゴってなってるので Install MongoDB Community Edition on Amazon Linux を 参考にmongoDBをインストール。

sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo

.repoの中には以下をコピペ。

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

以下でインスコ&mongoDB起動。

sudo yum install -y mongodb-org
sudo service mongod start

無事にmongoDBを起動できたので、

node keystone

をもっかいやると、

KeystoneJS Started:
My Site is ready on http://127.0.0.1:8080

という感じで、KeystoneJSが動いた。

Cloud9→PreviewPreview Running Applicationってやって、アプリケーションにブラウザからアクセスしてみると

f:id:aktkro:20180702011522j:plain

というかんじ。

どうみてもTOPページです。本当にありがとうございました。