FC2ブログ

RHEL rails起動スクリプト作成

本番環境の mongrel の起動は

ruby script/server mongrel -e production -p 80 -d
最後に -d をつけてデーモンモードにすることで
バックグラウンドで起動しています

アプリ起動のときに & を使ったときのようなものです

ただし、一般ユーザである rails ユーザでは実行できません

1024番より小さいポートの場合root 権限が必須です
これらは別名特権ポートともいわれます

なので、root で実行するスクリプトを作成します

まず
su -
でroot ユーザへ変更

mkdir bin でディレクトリ作成
次に
vim /root/bin/start_sample.sh
でファイルを作成

#!/bin/sh

export PATH=$PATH:/home/rails/gems/bin
export RUBYLIB=$RUBYLIB:/home/rails/gems/lib
export $GEM_HOME=/home/rails/gems

cd /home/rails/rails/sample
ruby script/server mongrel -e production -p 80 -d

として保存し
chmod +x start_sample.sh
で実効権限をつけたあと

start_sample.sh を実効

これでブラウザを起動し
http://サーバーIP/todos
にアクセスすればOK

次は、監視スクリプトを作成します
スポンサーサイト



テーマ : Linux
ジャンル : コンピュータ

RHELでrailsサンプルアプリの作成

RHELのインスタンスを使い、練習

参考資料は
Linux 2012-04



まず開発用DB sample_development
本番用 sample_production
を作成

使用しているのは postgresql

ただし、今回までインスタンスを停止しているので
最初にAWSアカウントにログインして RHELのインスタンスを稼働し
ssh 公開鍵認証でroot でログイン

続いて
su - rails
でrails ユーザへ変更

まず
createdb -U rails sample_development
でパスワード入力し作成

続いて
createdb -U rails sample_production
で作成

パスワードは書籍のとおりに pas4rails でOK

次にDB接続情報ファイルを設定
vim rails/sample/config/database.yml
でファイルを開き
/username
で検索


development:
adapter: postgresql
encoding: unicode
database: sample_development
pool: 5
username: rails
password: pas4rails

というように変更します

他にも2ヶ所ありますので
/username で検索し、変更しておきます

次にサンプルアプリを生成

しかし

ruby script/generate scaffold Todo title:string description:text due:datetime done:boolean
ruby: No such file or directory -- script/generate (LoadError)

となってしまいます

原因は

Rails再びつまずく、scriptの中身ないじゃん

にあるように
実行は予めアプリケーションのフォルダに移動してから実行します
とのこと

たしかに書籍をみても
. はカレントディレクトリ(~/rails/sample を表す)
と書いてあったので、
一度
cd rails/sample/
へ移動し

ruby script/generate scaffold Todo title:string description:text due:datetime done:boolean
を実効

exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/todos
exists app/views/layouts/
exists test/functional/
exists test/unit/
create test/unit/helpers/
exists public/stylesheets/
create app/views/todos/index.html.erb
create app/views/todos/show.html.erb
create app/views/todos/new.html.erb
create app/views/todos/edit.html.erb
create app/views/layouts/todos.html.erb
create public/stylesheets/scaffold.css
create app/controllers/todos_controller.rb
create test/functional/todos_controller_test.rb
create app/helpers/todos_helper.rb
create test/unit/helpers/todos_helper_test.rb
route map.resources :todos
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/todo.rb
create test/unit/todo_test.rb
create test/fixtures/todos.yml
create db/migrate
create db/migrate/20120310004408_create_todos.rb

となり、成功です
このコマンドで、サンプルアプリを生成
続いて
RAILS_ENV=development rake db:migrate
で開発用DBの初期化

RAILS_ENV=production rake db:migrate
で本番用DBの初期化

次に、サンプルアプリの動作確認を確認
ruby script/server mongrel -e development
を実行し

確認のため、ブラウザを起動して動作確認
今回の確認には google chrome を使用
http://サーバーIP:3000/todo
でアクセスして画面に表示されたらOKです

new todo をクリックすると Todo リストがつくれます
とりあえず、確認できたら
端末に戻って Ctrl + c で mongel を停止します

次はアプリの起動、停止監視のスクリプトになります
それにしても、やはり書籍の場合ある程度知っていることが前提で
かかれているので多少はネットなどで調べることが必要になります

テーマ : Linux
ジャンル : コンピュータ

RHELへDBと開発環境導入 その4

RHELへDBと開発環境導入 その3

ひととり設定できたので、動作確認します

mkdir ~/rails
cd ~/rails
rails sample -d postgresql
cd sample

ruby script/server mongrel

rails用 webサーバー Mongel を起動します

次に iptables を設定します

別の端末を開いて
vim /etc/sysconfig/iptables

開きます

Generated by iptables-save v1.4.7 on Sun Jan 8 18:54:31 2012
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:148]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m limit --limit 3/hour -j LOG --log-prefix "[INPUT Dropped] "
COMMIT
# Completed on Sun Jan 8 18:54:31 2012


となっているので


# Generated by iptables-save v1.4.7 on Sun Jan 8 18:54:31 2012
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:148]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

-A INPUT -m limit --limit 3/hour -j LOG --log-prefix "[INPUT Dropped] "
COMMIT
# Completed on Sun Jan 8 18:54:31 2012

というように追記します

追記後
service iptables restart
で iptable を再起動します

AWSを使っているので、さらにセキュリティグループの設定で
80
3000
のポートも開放します

これで、ブラウザからサーバーのIPアドレスへアクセスすればページが表示されます
ちなみに
http://サーバーIPアドレス:3000
というように、最後に3000ポートを指定する必要があります

似たようなもので
tomcat のときにも 8080 版ポートを指定することもあります

テーマ : Linux
ジャンル : コンピュータ

RHELへDBと開発環境導入 その3

RHELへDBと開発環境導入 その2

postgresql 設定ができたので
次に ruby on rails を導入します

最初に
useradd rails
passwd rails

rails ユーザを作成し

vim /etc/ssh/sshd_config
でファイルを開き

DenyUsers rails
を最下行に追記します

service sshd restart
で設定を反映するのを忘れずに

では、ruby on rails の導入になります


yum install ruby ruby-lib postgresql-devel ruby-devel
を実行し
RPMパッケージを導入します

次に
RubyGems ruby on rails を導入するのですが
ここから先は rails ユーザで行いますので
su - rails で
パスワードを入力し
rails ユーザで行います

環境変数を設定するため
vim .bashrc
で設定ファイルを開き

export PATH=$PATH:~/gems/bin
export RUBYLIB=$RUBYLIB:~/gems/lib
export GEM_HOME=~/gems

を最下行へ追記

source .bashrc
で設定反映します

mkdir ~/gems
mkdir ~/work
で必要なディレクトリ作成し


wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
でファイル取得

tar zxvf rubygems-1.3.7.tgz -C ~/work/
で work ディレクトリに解凍

ruby work/rubygems-1.3.7/setup.rb --prefix=~/gems
で rubygemsを導入します

続いて
ruby on rails と 関連パッケージを導入します

gem install rdoc postgres mongrel
gem install rake -v0.8.7
gem install rails -v2.3.14

続いてサンプルアプリで動作確認します

テーマ : Linux
ジャンル : コンピュータ

RHELへDBと開発環境導入 その2

RHELへDBと開発環境導入
の続きを行います

今回はログ出力とローテーション設定です

vim /var/lib/pgsql/data/postgresql.conf
で設定ファイルを開き
最終行へ

log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'
log_line_prefix = '%u %d '
log_connections = on
log_disconnections = on
log_statement = 'all'

を追記し保存します

続いて rsyslog のファイル出力設定です
vim /etc/rsyslog.conf
でファイルを開き
/info;mail
で検索し

*.info;mail.none;authpriv.none;cron.none /var/log/messages



*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages

というように追記します
そして 次の行へ

local0.* -/var/log/postgresql

を追記します

-/var/log/postgresql
というように - がファイルパスの前についているのは
ログをファイルに書き出す際に
ディスクキャッシュのフラッシュを抑制するため

ここまで追記したら保存し

service rsyslog reload
service postgresql restart
で設定を反映するためのサービス再起動をします

続いて、ログローテーションの設定をします
これをやらないと、ログファイルがどんどん肥大化していきます


vim /etc/logrotate.d/syslog
でファイルを開き

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}



/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/postgresql {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}


というように
追記して保存します

次は Ruby on Rails を導入します

テーマ : Linux
ジャンル : コンピュータ

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック