2012-02-20 15 views
0

現在、SQLite3をデータベースとして使用していて、PassengerとNginx経由のRailsアプリをLinode Ubuntu 10.04 Lucidボックスに送信する前に、MySQLに切り替える必要があります。 。SQLite3からMySQLに切り替える必要があり、MySQLでデプロイしたい

linode ubuntu 10.04ボックスにmsqlサーバを設定し、rootユーザのパスワードを設定します。 database.ymlの設定方法を教えてください。このMySQLデータベースを設定する手順は何ですか? mysql2 gemがインストールされており、Gemfileにあります。

MySQLをデプロイするには、database.ymlのように見える必要がありますか。

データベースにdatabase nameのような特定の名前が必要ですか?

私たちのマシンでrake db:createを実行するか、Ubuntuボックスで実行しますか?本番サーバーでdatabase.yml

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
development: 
adapter: sqlite3 
database: db/development.sqlite3 
pool: 5 
timeout: 2000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
adapter: sqlite3 
database: db/test.sqlite3 
pool: 5 
timeout: 2000 

production: 
adapter: mysql2 
encoding: utf8 
database: production 
pool: 5 
username: root 
password: "mysql password" 

答えて

1

簡単な接続テストを試してみましたか?そうでない場合は、dbへの接続をテストするスクリプトがあります。

#! /usr/bin/ruby 

# getting required gems 
require 'rubygems' 
require 'mysql' 

## ----- test the connection ----- 
# http://rubydoc.info/gems/mysql/2.8.1/frames 
# real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil) 
mysql = Mysql.connect('localhost', 'root', 'password', 'db_name', 3006, '', '') 

## ----- if connected, will list databases ----- 
puts mysql.list_dbs().to_s 

「mysql」が正しくインストールされなかった場合、インストールプロパティをカスタム設定する必要があります。別のルビーバージョンのMySQLの宝石を再インストールしなければならなかった、と削除 - 私のMac(あなたのLinuxマシン、異なる)で、私はUPDATE

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with mysqlconfig=/usr/local/mysql/bin/mysql_config



、このような何かを得るためにthis blog postを参照しましたアーキテクチャの表記法は私に宝石のインストールを許可しました。

sudo gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

+0

ええ、これらの接続テストは大変ありがとうございます。 –

1

現在

、あなたのアプリケーションのルートディレクトリに移動し、nano config/database.ymlを入力して、このコードを貼り付けます。名前を変更します。

production: 
    adapter: mysql 
    database: something_production 
    username: somethingotherthanroot 
    password: passwordnostring 
    host: 127.0.0.1 

、いずれかのサーバー上で、ご自身でデータベースを作成するか、またはあなたは私が試したことがありませんが、私はあなたがあまりにもrake db:create:productionを行うことができると確信していrake RAILS_ENV=production db:create:all地獄を実行することができます。一度行わ

、ちょうどrake RAILS_ENV=production db:migrate

+0

この回答はとても感謝しています。何らかの理由でこれらのコマンドを実行すると、ssh root @ ipv6はホスト名を認識できなくなります。私たちはこのホスト名の問題を設定することに焦燥し、5分前にはherokuを使って展開しようとしています。私たちはこのことを取り除く必要があり、linode、乗客、およびnginxの大規模な学習曲線を塞ぐ時間はありません。特に、2つの別々の場所、ubuntu 10.04のlucidボックス、および私たち自身のローカルappディレクトリのデータベース設定に関してです。 –

+1

http://articles.slicehost.com/ubuntu-10私はこれを数回使ったことがあります。 rootとしてログインすることは悪い考え方です。 ubuntuは悪いですが、私はそれが嫌いなので偏っています。私はちょうどペンギンの名前を付けられた別のディストリビューションを好む。 – pjammer

+0

私たちはlinode、ubuntu、乗客とnginxを投棄しました。 herokuに飛び乗った。シームレスで、速く、ごみが無くなります –

1

あなたのdatabase.ymlのは、あなたがこのような名前本番名データベースを持つべきであるという事実を除いて、罰金であるように見える:projectname_production

が一度にデータベースを作成する方法についてのあなたの質問に答えますサーバー、sshをアプリケーションサーバーにインストールし、rake dbを実行します。RAILS_ENV = productionを作成します。

これにより、サーバーに本番データベースが作成されます。あなたの移行にも同じことがあります。 rake db:migrate RAILS_ENV = productionである必要があります。これにより、運用データベースの移行が開始されます。

+1

正直言って私たちは私たちのlinode乗客ngixスタックを投げ捨てて、英雄に飛び乗った。クリーンに展開しようとしていたし、上記の実装で必要な大規模な学習の時間を持っていない。 –

関連する問題