Windows XP上のVMwareに導入したFedora Core 6で、Ruby on Railsを動かすまで。

| | コメント(0) | トラックバック(0)

これまでの経緯は下記となります。Windowsに、VMware入れて、Fedora入れた状態です。

http://www.amatiny.com/blog/2008/01/windows-xpvmwarefedoracoreperl.html
http://www.amatiny.com/blog/2008/01/windows-xpvmwarefedora-core-6p.html

■主な流れは下記を参考にしました。
http://coolsummer.typepad.com/kotori/2007/09/post-35.html
http://masuidrive.jp/rails/

■MySQLをGUIで管理できるMySQL GUI Toolsを導入
参考URL
http://itpro.nikkeibp.co.jp/article/COLUMN/20060830/246850/
http://honana.com/mysql/admin/mysqlguitools.html

ここからダウンロードできます。
http://dev.mysql.com/downloads/gui-tools/5.0.html

以下の4つの管理ツールがインストールされます。
Fodora上に入れてlocalhostに対して接続する形でも良かったですが、今回はホストOSのWindowsに入れてリモートからゲストOSのFedora上のMySQLに接続する形にしました。

MySQL Administrator MySQLサーバの管理
MySQL Query Browser データの参照および加工
MySQL Migration Toolkit 他のDBからのマイグレーションツール
MySQL Workbench DB設計ツール

MySQL Administratorをさっそく起動。

ゲストOSのIPアドレスを入れて接続を試みます。
「Can't connect to MySQL server on '***.***.***.***' (10065)」というエラーが出て、失敗しました。

コマンドプロンプトから、telnet [ゲストOSのIP] 3306でもNGなので、ポート自体に到達できていない模様。pingは飛んでいます。

原因はFedoraのファイアウォールでした。3306以外にも管理系ポートを使うかもしれないので、取り急ぎファイアウォールをOFFにすることで先に進みました。クローズドなネットワーク上のマシンで動くゲストOSなので、セキュリティはひとまず優先度下げてます。

今回は、ホストOSのWindowsからゲストOSのFedoraのMySQLを管理するため、「リモートからMySQLにアクセスするための権限」を設定する必要があります。

MySQLのコマンドプロンプトに入ります。

# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.27

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
ERROR 1046 (3D000): No database selected

どのデータベースに接続するかを指定していないためのエラーなので、下記のように指定します。

mysql> Use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

userテーブルに、接続に関する権限が保存されているため、下記のコマンドで、確認します。

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
+-----------------------+------+-------------+-------------+-------------+-------------+
| Host                  | User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------------------+------+-------------+-------------+-------------+-------------+
| localhost             | root | Y           | Y           | Y           | Y           |
| localhost.localdomain | root | Y           | Y           | Y           | Y           |
| localhost.localdomain |      | N           | N           | N           | N           |
| localhost             |      | N           | N           | N           | N           |
+-----------------------+------+-------------+-------------+-------------+-------------+
4 rows in set (0.02 sec)


下記のコマンドで権限を与え、ホストOSからrootでログインできるようにします。
[ホストOSのIP]と[パスワード]は適宜設定します。

mysql> GRANT ALL PRIVILEGES ON *.* to root@[ホストOSのIP] identified by '[パスワード]';
Query OK, 0 rows affected (0.02 sec)


もう一度先ほどのuserテーブルを確認すると、下記の1行増え、これでホストOSからゲストOSのMySQLに接続できるようになりました。
mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
+-----------------------+------+-------------+-------------+-------------+-------------+
| Host                  | User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------------------+------+-------------+-------------+-------------+-------------+
| localhost             | root | Y           | Y           | Y           | Y           |
| localhost.localdomain | root | Y           | Y           | Y           | Y           |
| localhost.localdomain |      | N           | N           | N           | N           |
| localhost             |      | N           | N           | N           | N           |
| [ホストOSのIP]        | root | Y           | Y           | Y           | Y           |
+-----------------------+------+-------------+-------------+-------------+-------------+
5 rows in set (0.00 sec)

MySQLのコマンドプロンプトを終了し、OSに戻ります。

mysql> \q
Bye
#

■My SQL上にテーブルの作成
下記を参照し、特に問題なし。データベースは、myfirstappという名前にしました。
その中のテーブル名は、参照先に倣い、articleにしました。
http://coolsummer.typepad.com/kotori/2007/09/post-35.html

■Railsプロジェクト作成
http://masuidrive.jp/rails/を参照し、特に問題なし。動画超分かりやすい。

# rails myfirstapp
      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/performance/request
      create  script/process/reaper
      create  script/process/spawner
      create  script/process/inspector
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
#

■modelとcontrollerを作成。
http://masuidrive.jp/rails/を参照し、特に問題なし。
テーブル名を単数形にした名前でmodelとcontrollerを作るようです。

# cd myfirstapp/
# ruby script/generate model article
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/article.rb
      create  test/unit/article_test.rb
      create  test/fixtures/articles.yml
      create  db/migrate
      create  db/migrate/001_create_articles.rb
# ruby script/generate controller article
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/article
      exists  test/functional/
      create  app/controllers/article_controller.rb
      create  test/functional/article_controller_test.rb
      create  app/helpers/article_helper.rb
#


■database.yml編集

# cd config/
# vi database.yml

デフォルトだと、sqlite3になっている。
development:
  adapter: sqlite3
  database: db/test.sqlite3
  timeout: 5000

下記のように書き換えます。
development:
  adapter: mysql
  database: myfirstapp
  username: user1
  password: ********

■WEBrick起動に失敗
一度、下記のメッセージが出てWEBrick起動に失敗しました。
database.ymlの変更部分を一度削除して、もう一度書いたらうまく起動できたので、database.ymlの書き換えがうまくできていなかった模様。変な改行コードが入ったりしたのかも。

# ruby script/server
=> Booting WEBrick...
/usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:217:in `establish_connection': development database is not configured (ActiveRecord::AdapterNotSpecified)
 from /usr/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:208:in `establish_connection'
 from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:234:in `initialize_database'
 from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:94:in `process'
 from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:49:in `send'
 from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:49:in `run'
 from /ruby/firstapp/config/environment.rb:13
 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
  ... 9 levels...
 from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39
 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
 from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
 from script/server:3
#

WEBrickの起動に成功すると、下記のようになります。なかなかプロンプトが返ってこないので待ってしまいましたが、この状態で正しかった。

# ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[YYYY-MM-DD hh:mm:ss] INFO  WEBrick 1.3.1
[YYYY-MM-DD hh:mm:ss] INFO  ruby 1.8.5 (2007-09-24) [i386-linux]
[YYYY-MM-DD hh:mm:ss] INFO  WEBrick::HTTPServer#start: pid=27083 port=3000


■Rubyからはuser1というユーザーで接続する事にしたので、MySQLにuser1の権限を追加します

# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24 to server version: 5.0.27

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> Use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> GRANT ALL PRIVILEGES ON *.* to user1@localhost identified by '*********';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
+-----------------------+------+-------------+-------------+-------------+-------------+
| Host                  | User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------------------+------+-------------+-------------+-------------+-------------+
| localhost             | root | Y           | Y           | Y           | Y           |
| localhost.localdomain | root | Y           | Y           | Y           | Y           |
| localhost.localdomain |      | N           | N           | N           | N           |
| localhost             |      | N           | N           | N           | N           |
| [ホストOSのIP]        | root | Y           | Y           | Y           | Y           |
| %                     | user1| N           | N           | N           | N           |
| localhost             | user1| Y           | Y           | Y           | Y           |
+-----------------------+------+-------------+-------------+-------------+-------------+
7 rows in set (0.00 sec)

mysql>


以下、ホストOSのブラウザからアクセスします。
http://[ゲストOSのIP]:3000/article

■No such file or directory - /tmp/mysql.sock というエラー

接続に使うmysql.sockというファイルが、/tmp/mysql.sockに無いと言っているようです。

参考URL
http://cyclon.s11.xrea.com/mt/archives/2005/11/ruby_on_rails_m.html

# mysqladmin variables | grep socket
| socket                          | /var/lib/mysql/mysql.sock                                  |
#

mysql.sockの場所が分かったので、database.ymlに下記のように追記して、WEBrickを再起動します。

development:
  adapter: mysql
  database: myfirstapp
  username: user1
  password: ********
  socket: /var/lib/mysql/mysql.sock


■以下のエラー。プラグインが足りていないようです。
undefined method `scaffold'
undefined method `paginate'

以下を参照し、プラグインを追加しました。

http://d.hatena.ne.jp/f_shimoji/20080106/1199626564
http://yoshitan.blog6.fc2.com/blog-entry-194.html


以上で、ひとまずブラウザ画面にMySQLから取得してきたデータを表示できるようになりました。

引き続き、進めたいと思います。

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: Windows XP上のVMwareに導入したFedora Core 6で、Ruby on Railsを動かすまで。

このブログ記事に対するトラックバックURL: http://www.amatiny.com/mt/mt-tb.cgi/40

コメントする


画像の中に見える文字を入力してください。

ADs by Google

このブログ記事について

このページは、tamaが2008年1月25日 13:16に書いたブログ記事です。

ひとつ前のブログ記事は「Windows XPのVMware上に導入したFedora Core 6でPHPを動かすまで。」です。

次のブログ記事は「Windows XP上のVMwareに導入したFedora Core 6で、Ruby on Railsを動かすまで。その2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01