rbenv で Ruby の切り替え

global と local のオプションを理解する。

  • バージョン一覧

$ rbenv versions
system
1.8.7-p374
*1.9.3-p448 (set by /usr/local/rbenv/version)

  • システム全体で使用するバージョンを切り替える(global)

$ rbenv global 1.8.7-p374
$ rbenv versions
system
*1.8.7-p374 (set by /usr/local/rbenv/version)
1.9.3-p448

  • 特定ディレクトリ以下で使用するバージョンを指定する(local)

$ cd ~
$ mkdir local_dir
$ mkdir global_dir
$ cd local_dir/
$ rbenv local 1.9.3-p448
$ rbenv versions
system
1.8.7-p374
*1.9.3-p448 (set by /home/user/local_dir/.ruby-version)
$ cd ../global_dir/
$ rbenv versions
system
*1.8.7-p374 (set by /usr/local/rbenv/version)
1.9.3-p448

  • local指定を解除する

$ cd ~
$ cd local_dir/
$ rbenv versions
system
1.8.7-p374
*1.9.3-p448 (set by /home/user/local_dir/.ruby-version)
$ rbenv local --unset
$ rbenv versions
system
*1.8.7-p374 (set by /usr/local/rbenv/version)
1.9.3-p448

rbenv インストール

インストール先は システムワイドとして /usr/local とする。
また、Ruby利用者が staff グループに属していることを前提に、全ユーザへ環境変数を適用する。

  • rbenvインストール

$ cd /usr/local
$ sudo git clone https://github.com/sstephenson/rbenv.git rbenv
$ /usr/local/rbenv/bin/rbenv
rbenv 0.4.0-67-g3300587
(snip)
$ sudo chgrp -R staff rbenv
$ sudo chmod -R g+rwxXs rbenv

$ sudo vi /etc/profile.d/rbenv.sh
$ cat /etc/profile.d/rbenv.sh
# rbenv
export RBENV_ROOT="/usr/local/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

  • 再ログイン
  • ruby-build インストール

$ mkdir /usr/local/rbenv/plugins
$ cd /usr/local/rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
$ chgrp -R staff ruby-build
$ chmod -R g+rwxs ruby-build

  • rbenv install 確認

$ rbenv install
Usage: rbenv install [-f|--force] [-k|--keep] [-v|--verbose]
rbenv install [-f|--force] [-k|--keep] [-v|--verbose]
rbenv install -l|--list
(snip)

  • インストール可能な一覧

$ rbenv install -l
Available versions:
1.8.6-p383
(snip)

  • rubyインストール

$ rbenv versions
* system (set by /usr/local/rbenv/version)
$ rbenv install 1.8.7-p374
$ rbenv install 1.9.3-p448

  • 反映

$ rbenv rehash

  • インストールしたものを確認

$ rbenv versions
* system (set by /usr/local/rbenv/version)
1.8.7-p374
1.9.3-p448

  • 利用するバージョンを指定

$ rbenv global 1.9.3-p448
$ rbenv versions
system
1.8.7-p374
*1.9.3-p448 (set by /usr/local/rbenv/version)
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [i686-linux]


参考

自作コンポーネントでセッションコンポーネントがnon-obj

CakePHP2.2.5 で自作コンポーネント上でセッションコンポーネントを使おうとしてエラーが起きました。

PHP message: PHP Fatal error:  Call to a member function check() on a non-object in


原因は自作コンポーネントのコンストラクタ内で親クラスのコンストラクタを呼び出していないためでした。。

    public function __construct ($request, $response) {
         parent::__construct($request, $response);# これ大事
    }

はじめての node.js

CentOS上で node.js を触った記録です。


■ node.js(以下、node) とは
サーバサイドJavaScript
ノンブロッキングI/Oとイベントループが特徴


■ 環境
CentOS 6.0 on VMWare


■ node インストール

$ cd /usr/local/src
$ wget http://nodejs.org/dist/v0.8.6/node-v0.8.6.tar.gz
$ tar xvfz node-v0.8.6.tar.gz
$ cd node-v0.8.6
$ ./configure
$ make
$ sudo make install
$ make clean
<||


途中 g++ が必要だったのでインストールしている
>||
$ sudo yum install gcc-c++.i686


■パッケージ管理ツール npm
node をインストールすると、一緒に標準でインストールされた。


・インストール@グローバル

$ sudo npm install -g パッケージ名

npm のインストール場所にパッケージをインストールする


インストール先

/usr/local/lib/node_modules/パッケージ名


・インストール@ローカル

$ sudo npm install パッケージ名

カレントディレクトリにパッケージをインストールする


・インストール済み一覧の確認

$ npm list [-g]


・パッケージのアップデート

$ npm update [-g]


■Webアプリケーションフレームワーク(express)のインストール

$ sudo npm install -g express


■アプリケーション作成
アプリケーション作成先のディレクトリ用意

$ cd /usr/local/
$ sudo mkdir node-apps
$ sudo chown ringio:ringio node-apps
$ cd node-apps


アプリケーション作成

$ express firstapp
   create : firstapp
   create : firstapp/package.json
   create : firstapp/app.js
   create : firstapp/public
   create : firstapp/public/javascripts
   create : firstapp/public/images
   create : firstapp/public/stylesheets
   create : firstapp/public/stylesheets/style.css
   create : firstapp/routes
   create : firstapp/routes/index.js
   create : firstapp/views
   create : firstapp/views/layout.jade
   create : firstapp/views/index.jade

   install dependencies:
     $ cd firstapp && npm install

   run the app:
     $ node app

$ cd firstapp 
$ sudo npm link express jade


node起動

$ node app


ブラウザからアクセス確認
http://localhost:3000/


node停止

node app.js のコンソールを Ctl + c


■参考
http://gihyo.jp/dev/serial/01/nodejs
http://d.hatena.ne.jp/ruedap/20110620/node_js_express_app_generate

nginx を yum でインストールする

yum に nginx 用の Repository を追加する

$ sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

インストール

$ sudo yum install -y nginx

起動

$ sudo nginx
$ ps -ef | grep nginx | grep -v grep
root      2360     1  0 06:58 ?        00:00:00 nginx: master process nginx
nginx     2361  2360  0 06:58 ?        00:00:00 nginx: worker process

停止

$ sudo nginx -s stop
$ ps -ef | grep nginx | grep -v grep

参考

nginx + php-fpm で PHP を動かす

nginx のインストールはコチラ

次に、php-fpmをインストールする
まずは remi Repository を追加する

$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi 
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
$ sudo rpm -ivh remi-release-6.rpm epel-release-6-7.noarch.rpm

php 関連をインストールする

$ sudo yum --enablerepo=remi install php php-fpm php-devel php-cli php-xml php-mysql php-mbstring php-gd 
$ php-fpm -v
PHP 5.3.15 (fpm-fcgi) (built: Jul 20 2012 12:53:18)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologi

php-fpm を起動する

$ sudo /etc/init.d/php-fpm start

nginx の設定ファイルを編集する

$ cd /etc/nginx/conf.d
$ sudo cp default.conf default.conf.org
$ sudo vi default.conf
  • default.conf
server {
    listen       80 default_server;
    server_name  localhost;

    #charset koi8-r;
    charset utf-8;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root   /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

nginx を再起動する

$ sudo /etc/init.d/nginx restart

nginxをSSL付きでインストールする。

インストール

$ wget http://nginx.org/download/nginx-1.3.3.tar.gz
$ tar xvfz nginx-1.3.3.tar.gz
$ cd nginx-1.3.3
$ sudo yum install pcre pcre-devel openssl openssl-devel
$ ./configure \
--prefix=/usr/local/nginx-1.3.3 \
--with-http_ssl_module \
--with-pcre
(snip)
Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library
(snip)
$ make
$ sudo make install
$ make clean

起動

$ sudo /usr/local/nginx/sbin/nginx 

停止

$ sudo /usr/local/nginx/sbin/nginx -s stop