◆ Ruby on Railsのインストール
# yum install ruby ruby-devel
# gem install rails
◆ Apacheのインストール
# yum install httpd httpd-devel
◆ SQLのインストール
● SQLliteを使う場合(今回は利用しない。インストールだけ)
# yum install sqlite sqlite-devel
● MySQLを使う場合
# yum install mysql mysql-server mysql-devel
◆ バージョン確認
# ruby -v
# rails -v
# httpd -v
# sqlite3 -version
# mysql --version
◆ Apacheの設定
Apacheに組み込むRailsアプリケーション実行モジュール(Passenger)をインストールしておく。
● Passengerのインストール
# gem install passenger
● Apacheモジュールとしてインクルード
# passenger-install-apache2-module
インクルードが成功するとApacheの設定ファイルに記載するコードが表示される。
LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.7/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-5.0.7
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
<VirtualHost *:80>
ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
#Require all granted
</Directory>
</VirtualHost>
● Apacheの設定
# vi /etc/httpd/conf.d/passenger.conf
# LoadModule、PassengerRoot、PassengerRubyは上記をそのままコピーする。
LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.7/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-5.0.7
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
# 任意だがPassengerが追加するHTTPヘッダを削除するための設定をいててもよい。
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# こちらも任意だが必要に応じてPassengerのチューニングのための設定を追加しておく。
# ※詳しくは Phusion Passenger users guide
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
PassengerMaxPreloaderIdleTime 0
DocumentRootの指定先フォルダは後程作成する(そのためまだhttpdは起動しない)。
RailsEnvはdevelopment(開発)、test(試験)、production(本番)を指定できる。Railsの環境は3つを使い分けられるが、さしあたりdevelopmentでいいだろう。
RailsEnv development
ServerName bookapp.example.com
DocumentRoot "/var/www/rails/bookapp/public"
<Directory /var/www/rails/bookapp/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
◆ アプリケーションの作成
書籍を管理するアプリケーションを作成していくとは述べたとおりである。
/var/www/rails/配下に、bookappというアプリケーションを新規に作成する。
mysqldをここで立ち上げておく。
# systemctl restart mysqld.service
# mysqladmin -u root password "***"
DocumentRootで指定したディレクトリを作成する。
# mkdir -p /var/www/rails/
Passengerはroot権限でRailsアプリケーションを動かせない仕様になっているので、オーナーを変更しておく。
# chown -R apache.apache /var/www/rails/
# cd /var/www/rails/
ディフォルトで利用するSQLはsqliteなのだが、今回はmysqlを利用することにしよう。そのため'-d'オプションでmysqlを付与している。
# rails new bookapp -d mysql
# cd bookapp
dbアクセス用のパスワードを記載するぐらいで、ディフォルトで使える。
# vi ./config/database.yml
〜snip〜
username: root
password: ***
〜snip〜
database.ymlファイルに基づいてデータベースを作成する。development、test、production用の3つができるはずである。どのデータベースを使うかは先に書いた通り、passenger.confのRailsEnvで指定する。
# rails db:create
個別に指定もできる。
# rails db:create RAILS_ENV=production
createをdropにするとデータベースを削除できる。
dbをのぞいて見る。
# rails dbconsole
これは下と同じである。
# mysql -u root
> show databases;
+---------------------+
| Database |
+---------------------+
| bookapp_development |
| bookapp_test |
| bookapp_production |+---------------------+
確かにできている。
(補足1)
今回作成するのアプリケーションで必要となるgemは同フォルダのGemfileで定義されている。bundlerと呼ばれるアプリケーションごとのパッケージ管理システムにより、アプリケーションごとにgemを管理できる。
パッケージ管理の一般的な利用例をまず見てみる。
$ vi test.rb
require 'hogepiyo'
$ vi Gemfile
source 'https://rubygems.org'
gem 'hogepiyo'
$ bundle install --path=vendor/bundle
$ ls vendor/bundle/ruby/gems/hogepiyo-x.x.x/
Gemfileを修正した場合は、bundleコマンドで読み直しさせること。
$ bundle update
実行する。
$ bundle exec ruby test.rb
イメージがついただろう。
アプリケーションを実行するrailsのバージョンを指定することもできる。
$ vi Gemfile
gem 'rails', '3,2,13'
◆ 確認
httpdを起動させる。
# systemctl restart httpd.service
ブラウザからアクセスして確認する。
http://x.x.x.x/
DocumentRootで指定した、/var/www/rails/bookapp/public 配下のindex.htmlが読み込まれる。
"Welcome aboard" と出ていれば成功である。"About your application's environment" をクリックしアプリケーション環境に問題ないかも確認しておこう。
ここからコントローラ、ビュー、モデルと作成していくのだが、それはまた次回の
Railsを使ったアプリケーション開発 (その2 基礎編)で。