centos6.4環境構築からrails4.1.0デプロイまで-その3-centosにapache、passenger 4.0.45を導入し本production環境でrailsを動かす-
centosにapache、passenger 4.0.45を導入し本production環境でrailsを動かす
GitHub にsshで接続する
$ cd ~/.ssh
$ ls
authorized_key id_dsa known_hosts
config id_dsa.pub
↑以上のようにすでにid_dsaとid_dsa.pubが作成されている場合は、Githubへの公開鍵の登録を行う。id_dsaとid_dsa.pubが無い場合は、
$ ssh-keygen
を~/.ssh
にて実行し、鍵を作成してください
railsで扱うデータベースを作成する
railsで使うデータベースを作成する(日本語対応)
CREATE DATABASE databas_name CHARACTER SET utf8;
データベースに権限を渡す.(ここでは名前がuserのユーザーに権限を渡す)
userの作成は http://qiita.com/A_I/items/f0aecd5e92b535f34f4f
GRANT CREATE ON database_name.* TO user@localhost;
設定した権限を確認する
SHOW GRANTS FOR user@localhost;
→GRANT ALL PRIVILEGES ON 作成したデータベース名
となっていいればOK
Mysqlを再起動しておく
sudo service mysqld start
アプリケーションの用意をする
$ cd /var/www/html
ローカルで起動してみる
bundle install
bundle exec rake db:migrate
bundle exec rake db:seed
$ rails s
起動すればOK
apacheのインストールからpassengerの導入railsアプリケーションを起動まで
apacheをインストールする前にファイアウォールを無効にし、SELInaxを無効にする
SELinaxの無効化
$ sudo setenforce 0
このままだとサーバを再起動するとまた有効になってしまうので、 再起動時にも無効になるようにするには/etc/selinux/configを編集しておく。
'$ vim /etc/selinux/config'
→ SELINUX=disabled
と変更する
ファイアウォールを無効にする
$ yum install system-config-firewall-tui
$ system-config-firewall-tui
ファイヤウォールの設定でNOを選べばOK
apacheのインストール
$ yum install httpd
passengerのインストール
$ gem install --no-rdoc --no-ri passenger
(途中でgemが足りないだの、Rubyを選べだの、パーミッションがきついだの言われたら適宜修正やインストールを行う)
インストールの最後に
LoadModule
<IfModule
〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
</IfModule>
が出来るのでコピーしておく
そして/etc/httpd/conf/httpd.conf
のLoadModuleの下に貼付ける
/etc/httpd/conf.d/hogehoge.conf
にバーチャルホストの設定を記載していく
(hogehogeの部分は任意)
僕の場合以下のようにした
$ vim /etc/httpd/conf.d/hogehoge.conf
<VirtualHost *:80>
ServerName localhost.ishii
RailsEnv production
PassengerEnabled on
DocumentRoot /var/www/html/app_name/public
<Directory /var/www/html/app_name/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
railsアプリケーションの設定
$ vim rails_app/database.yml
production:
adapter: mysql2
encoding: utf8
database: databasename
pool: 5
username: root
password: Password⇦mysqlのpassword
socket: /var/lib/mysql/mysql.sock
host: localhost
default: &default
adapter: sqlite3
pool: 5
timeout: 100000
development:
<<: *default
database: db/development.sqlite3
timeout: 100000
設定が完了したらappaach を再起動する
$ service httpd start
この時点でcentoosサーバーのiPを叩いてアプリケーションが表示されればいいのだが自分はここで相当はまった。
まずエラーログの見方だが
$ tail -f /var/log/httpd/error_log
$ tail -f /var/log/apache2/error_log
を使う。
アプリケーションの起動がしないようならtail -f /var/log/httpd/error_log
の方を参照する。
自分の場合は、以下のように本番環境であることを明示することで解決した
$ bundle install --deployment
$ rake db:migrate RAILS_ENV=development
$ rake db:seed RAILS_ENV=development`
本番環境だとassetが自動コンパイルされないので、
$ bundle exec rake assets:precompile RAILS_ENV=production
を実行する。
またconfig/secrets.yml
にあるsecret_key_base:がしっかりと記述されていることを確認する。
記述されていない場合、作成するのだがkeyは
rake secret
によって作成出来る
次はcapistoranoを導入します
Author And Source
この問題について(centos6.4環境構築からrails4.1.0デプロイまで-その3-centosにapache、passenger 4.0.45を導入し本production環境でrailsを動かす-), 我々は、より多くの情報をここで見つけました https://qiita.com/A_I/items/adf344c52f181af19396著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .