相关的文章
-
Chefを使ってより効率的にサーバを管理しよう。まずは用語から
-
Berkshelfを使って外部クックブックをノードに適用する。
-
クックブックを作成してノードに適用する。- その1
-
クックブックを作成してノードに適用する。- その2
-
ChefでCentOS 6.7 + rbenv + ruby 2.3.0の環境を構築する。
-
ChefでCentOS 6.7 + Vim 7.4 + luaを設置する。
-
ChefでVimプラグインマネージャーNeoBundleを設置する。
-
ChefでCentOS 6.7 + nginxを設置する。- 外部クックブック
-
ChefでCentOS 6.7 + nginxを設置する。- カスタムクックブック
-
ChefでCentOS 6.7 + nodejs + npmを設置する。
-
ChefでVimプラグインマネージャーvim-plugを設置する。
Chefでnginx + php(php-fpm) + mariadb + wordpressを設置する。
用Ruby执行JavaScript代码
-
railsではassets precompileなどのjavascriptの実行のためにtherubyracerというgemを提供している。
-
しかし、therubyracerはメモリ使用量が大きくてHerokuでは非推奨となっている。
-
therubyracerの代わりにnodejsを設置することを推奨する。
どうせphantomjsを設置するためにはnodejsは必要だ。
制作烹饪书籍
Chef社のSupermarketであるnodejsをみたが、簡単に設置することだけなのに余計に複雑だったので自作する。
% bin/knife cookbook create nodejs -o site-cookbooks
制作食谱
-
nodeはyumで設置しても構わないが、npmはsourceで設置することを推奨する。
-
yumで提供するnpmは余計なpackageがたくさん設置されるし古い。
site-cookbooks/nodejs/recipes/default.rb
package "nodejs" do
action :install
end
execute "install npm" do
command "curl -L https://www.npmjs.com/install.sh | sh"
not_if "which npm"
end
%w(phantomjs).each do |pkg|
execute "npm install #{pkg}" do
command "npm -g install #{pkg}"
not_if "npm -g ls --depth=0 | grep #{pkg}"
end
end
执行结果
% bin/knife node run_list add dev 'recipe[nodejs]' -z
% bin/knife solo cook dev -E development
... snip ...
Recipe: nodejs::default
* yum_package[nodejs] action install
- install version 0.10.42-4.el6 of package nodejs
* execute[install npm] action run
- execute curl -L https://www.npmjs.com/install.sh | sh
* execute[npm install phantomjs] action run
- execute npm -g install phantomjs
在节点上确认
% ssh dev
$ node -v
v0.10.42
$ npm -v
3.7.5
$ npm -g ls --depth=0
/usr/lib
├── npm@3.7.5
└── phantomjs@2.1.3
$ which node
/usr/bin/node
$ which npm
/usr/bin/npm
请参考以上内容。