PC開発アプリのLinuxサーバへの手動デプロイ

一般設定

  • simpletodo というアプリをLinuxサーバにコピーする
    • /home/XXX/public_html/rails/simpletodo にPCから丸ごとコピー
  • /etc/httpd/conf/httpd.conf のVirtualHostの修正
  • /etc/httpd/conf/httpd.conf まずは development でやる★
  • Apache 停止
  • キャッシュクリアでエラー.gem Ver が違うらしい.PCは1.2.1だけど,Linuxには1.2.2を入れたからだ.
    • /config/environment.rb を修正して再度キャッシュクリアする
rake tmp:clear
rake log:clear
  • chmod する
chmod 755 /public/dispatch.*
chmod 777 /tmp/sesseions

DB設定/作成

  • /config/database.yml 修正(DBとは大文字小文字もちゃんと合わせること)
    • とりあえず root, localhost のまま★
development:
  adapter: mysql
  database: simpletodo
  username: root
  password:
  host: localhost
  socket: /var/lib/mysql/mysql.sock
  encoding: utf8
  • MySQLでデータベース(スキーマ)をつくり,ユーザ設定する.(MySQL備忘録 参照)
  • rake でテーブル作成

rake migrate

  • エラー発生
# rake migrate

(in /home/XXX/public_html/rails/SimpleTodo)
/home/XXX/public_html/rails/SimpleTodo/config/boot.rb:29:Warning: require_gem
is obsolete.  Use gem instead.
rake aborted!
No such file or directory - /tmp/mysql.sock

(See full trace by running task with --trace)
  • /var/lib/mysql/mysql.sock が正解らしい.これは,/etc/my.cnf に書いてある.
  • 修正は,上記 /config/database.yml でsocket定義する.
  • 文字コード(utf8)設定: /config/database.yml と /etc/my.cnf で設定しとく
# mysqladmin -p version

Server version          4.1.16
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 58 min 21 sec
[/etc/my.cnf]

default-character-set=utf8
  • rake migrate が通って,DBにテーブルが作成された.
# rake migrate
(in /home/XXX/public_html/rails/SimpleTodo)
/home/XXX/public_html/rails/SimpleTodo/config/boot.rb:29:Warning: require_gem
is obsolete.  Use gem instead.
== CreateLists: migrating =====================================================
-- create_table(:lists)
   -> 0.1964s
== CreateLists: migrated (0.1967s) ============================================

== CreateItems: migrating =====================================================
-- create_table(:items)
   -> 0.1103s
== CreateItems: migrated (0.1106s) ============================================

The rake task migrate has been deprecated, please use the replacement version db
:migrate
[Wed Feb 21 23:16:15 2007] [error] [client ] (2)No such file or dire
ctory: exec of '/home/XXX/public_html/rails/SimpleTodo/public/dispatch.cgi' fa
iled
[Wed Feb 21 23:16:15 2007] [error] [client ] Premature end of script
 headers: dispatch.cgi
  • ruby のパス設定ミス
  • public/dispatch.cgi の先頭行を修正
which ruby

/usr/bin/ruby
#!/usr/bin/ruby
  • PCとLinuxでのruby Ver違いは結局関係なかった
  • ということで無事,PCで開発したRailsアプリをLinuxサーバ上で稼動できた.MySQLとも接続できた.