ruby環境整備からrailsセットアップまで
rubyとrailsを入れるまでのメモを。centosとmacのため。
rails installation
過去記事「ruby on rails 環境構築〜blogアプリケーション作成 (centos 5.7 x86_64)」は古そうだったので、 http://www.rubylife.jp/railsinstall/ を見てやった。
0. rbenv-updateを使ってrbenv, rubyのバージョンアップ
(centos) まずは github から rbenv, ruby-build を clone する: (macはhomebrewから)
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
.bashrc
などの rc ファイルに以下を追加### rbenv if [ -d ${HOME}/.rbenv ]; then export PATH=$HOME/.rbenv/bin:$PATH eval "$(rbenv init -)" . $HOME/.rbenv/completions/rbenv.zsh fi
rbenv
コマンドが動くことを確認source ~/.bashrc rbenv --version
rbenv-update
をインストール (mac, centos)[ -z "$RBENV_ROOT" ] && export RBENV_ROOT="$HOME/.rbenv" mkdir -p "$RBENV_ROOT/plugins" git clone https://github.com/rkh/rbenv-update.git "$RBENV_ROOT/plugins/rbenv-update"
rbenv-update をインストールしたので rbenv update で rbenv をアップデートします。
$ rbenv update updating rbenv | From https://github.com/sstephenson/rbenv | 13a474c..1a7f49d master -> origin/master 略
rbenvのバージョンを確認します。
$ rbenv --version rbenv 0.4.0
rbenvがアップデートされてバージョンがあがりました。
1. 最新のrbenvで最新のrubyをインストール
- (centos) ruby入れようとしたら怒られたので先に入れるパッケージがありました。
# yum install -y readline-devel
インストール可能な ruby のバージョンの確認は以下のコマンドか webでどぞ
$ rbenv install -l
20151205時点ではruby 2.3.1がlatest stable versionでした。
$ rbenv install -v 2.3.1
インストールされているRubyのバージョンを確認します。
$ rbenv versions system * 2.1.2 (set by /usr/local/rbenv/version) 2.2.3 2.3.1
ちゃんと2.3.1が入っています。
rehashする
$ rbenv rehash
普段使うデフォルトのrubyに指定する。
$ rbenv global 2.3.1
version確認
$ ruby -v
2. rubygems
- update gem
$ gem update --system $ gem -v 2.6.6
3. rails
- install
$ gem install rails
- version
$ rails -v Rails 5.0.0.1
rails test (rails + apache + passenger + mysql)
apache
# yum install httpd httpd-devel curl-devel (以下、必要ならhttpd稼働のための設定を)
bundler
$ gem install bundler
passenger
$ gem install passenger $ passenger-install-apache2-module
mysql インストールと設定
# yum install -y mysql-devel mysql-server mysql $ gem install mysql2
mysqlの準備
- MySQL初期化処理
$ sudo service mysqld start #初回の初期化処理 $ sudo mysqladmin -u root password pass(=passははっきんぐなPW. あとで使う) $ sudo /sbin/chkconfig mysqld on
MySQLにデータベース作成する。環境ごとに3つ作る。(db_dev, db_test, db_prod, 適宜読み替えて作ってね)
$ mysql -u root -p
mysql>
CREATE DATABASE db_dev DEFAULT CHARACTER SET utf8;
CREATE DATABASE db_test DEFAULT CHARACTER SET utf8;
CREATE DATABASE db_prod DEFAULT CHARACTER SET utf8;
※文字コード指定しないとデフォルトだとlatin1でできるので注意。MySQLサーバ側の設定でデフォルト文字コード指定してもよいけど、この場ではとりあえず明示的にCREATE DATABASEで指定してます。
次にMySQLにユーザを作成する。これも環境ごとに3つ作る。
mysql>
GRANT ALL PRIVILEGES ON db_dev.* TO user_dev@localhost IDENTIFIED BY 'pass_dev' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON db_test.* TO user_test@localhost IDENTIFIED BY 'pass_test' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON db_prod.* TO user_prod@localhost IDENTIFIED BY 'pass_prod' WITH GRANT OPTION;
試しにユーザログイン確認しておく。
$ mysql -u user_dev -p db_dev
Enter password:
$ mysql -u user_test -p db_test
Enter password:
$ mysql -u user_prod -p db_prod
Enter password:
Rails側の設定
- ここからRails側の設定。databaseはmysqlを指定して新たにrails applicationを作る
$ rails new -d=mysql myapp $ cd myapp
config/database.yml を以下のように変更する。 共通設定はdefaultでまとめて、環境ごとの差分だけ分ける。
default: &default
adapter: mysql2
encoding: utf8
reconnect: false
pool: 5
socket: /var/lib/mysql/mysql.sock
development:
<<: *default
database: db_dev
username: user_dev
password: pass_dev
test:
<<: *default
database: db_test
username: user_test
password: pass_test
production:
<<: *default
database: db_prod
username: user_prod
password: pass_prod
Gemfileを変更
gem 'execjs'
gem 'therubyracer'
#gem 'sqlite3'
gem 'mysql2', '~> 0.4.2'
Gemfile更新したらbundle install
$ bundle install
- bookアプリを作ってみる
$ bundle exec rails generate scaffold book title:string author:string outline:text
最後にDBのマイグレーションする。
$ bundle exec rake db:migrate
passenger, apacheの設定
symlink
$ sudo ln -sv ~george/myapp/public /var/www/html/myapp
/etc/httpd/conf.d/rails.confの設定
LoadModule passenger_module /usr/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21 PassengerDefaultRuby /usr/local/rbenv/versions/2.2.3/bin/ruby </IfModule> <VirtualHost *:80> ServerName www.example.com. DocumentRoot /var/www/html RackBaseURI /myapp RailsEnv development <Directory /myapp> Options ExecCGI FollowSymLinks Options -MultiViews AllowOverride All Order Allow,Deny Allow From All </Directory> </VirtualHost>
これでhttpd startすれば、 /myapp にアクセスするとwelcome aboard!が表示される