MySQL
MySQLは導入済み。接続用のUNIXソケットは /ver/lib/mysql/mysql.sock。
Railsアプリ
専用のユーザーを作る。
[takatoh@www2465uo www]$ sudo useradd lathercraft
[sudo] password for takatoh:
[takatoh@www2465uo www]$ sudo passwd lathercraft
ユーザー lathercraft のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
GitHub からクローン。
[takatoh@www2465uo www]$ sudo git clone https://github.com/takatoh/Lathercraft.git
[sudo] password for takatoh:
Initialized empty Git repository in /var/www/Lathercraft/.git/
remote: Counting objects: 1736, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 1736 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (1736/1736), 178.63 KiB | 157 KiB/s, done.
Resolving deltas: 100% (1132/1132), done.
[takatoh@www2465uo www]$ sudo chown -R lathercraft:lathercraft Lathercraft
[takatoh@www2465uo www]$ cd Lathercraft
[takatoh@www2465uo Lathercraft]$ bundle install
Gemfile.lock に書き込もうとした時に権限がなかった、ていうエラーがでた。気持ちが悪いので、パーミッションをつけてもう一度やり直し。
[takatoh@www2465uo Lathercraft]$ sudo chmod 766 Gemfile.lock
[sudo] password for takatoh:
[takatoh@www2465uo Lathercraft]$ bundle install
OK。
config/database.yml はこうなってる。
(前略)
production:
adapter: mysql2
encoding: utf8
pool: 5
database: lathercraft_production
username: lathercraft
password: <%= ENV['LATHERCRAFT_DATABASE_PASSWORD'] %>
host: localhost
データベースを作る。
[takatoh@www2465uo Lathercraft]$ rake db:create -E production
rake aborted!
NameError: undefined local variable or method `production' for #
(See full trace by running task with --trace)
[takatoh@www2465uo Lathercraft]$ rake db:create RAILS_ENV=production
Access denied for user 'lathercraft'@'localhost' (using password: NO)Please provide the root password for your mysql installation
>
あれ、ユーザーは先に作っとかなきゃいけないのか?
[takatoh@www2465uo Lathercraft]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE USER lathercraft@localhost IDENTIFIED BY 'xxxxxxxx';
ERROR 1396 (HY000): Operation CREATE USER failed for 'lathercraft'@'localhost'
mysql> exit;
Bye
[takatoh@www2465uo Lathercraft]$ rake db:create RAILS_ENV=production
OK。
設定ファイルを編集。
[takatoh@www2465uo Lathercraft]$ sudo -s
[sudo] password for takatoh:
[rooth@www2465uo Lathercraft]$ cp config/site_config.yml.example config/site_config.yml
[root@www2465uo Lathercraft]# vim config/site_config.yml
[root@www2465uo Lathercraft]# cp config/secrets.yml.example config/secretes.yml
[root@www2465uo Lathercraft]# vim config/secretes.yml
データベースのマイグレーション。
[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
Could not find tzinfo-1.2.1 in any of the sources
Run `bundle install` to install missing gems.
tzinfo がないとな?
[root@www2465uo Lathercraft]# gem list
*** LOCAL GEMS ***
actionmailer (4.1.4)
actionpack (4.1.4)
actionview (4.1.4)
activemodel (4.1.4)
activerecord (4.1.4)
activesupport (4.1.4)
arel (5.0.1.20140414130214)
bigdecimal (1.2.0)
builder (3.2.2)
bundler (1.6.2)
bundler-unload (1.0.2)
coffee-rails (4.0.1)
coffee-script (2.3.0)
coffee-script-source (1.7.1)
erubis (2.7.0)
execjs (2.2.1)
executable-hooks (1.3.2)
gem-wrappers (1.2.4)
hike (1.2.3)
i18n (0.6.11)
io-console (0.4.2)
jbuilder (2.1.3)
jquery-rails (3.1.1)
json (1.8.1, 1.7.7)
mail (2.5.4)
mime-types (1.25.1)
minitest (5.4.0, 4.3.2)
multi_json (1.10.1)
mysql2 (0.3.16)
polyglot (0.3.5)
psych (2.0.0)
rack (1.5.2)
rack-test (0.6.2)
rails (4.1.4)
railties (4.1.4)
rake (10.3.2, 0.9.6)
rdoc (4.1.1, 4.0.0)
rubygems-bundler (1.4.4)
rvm (1.11.3.9)
sass (3.2.19)
sass-rails (4.0.3)
sdoc (0.4.1)
spring (1.1.3)
sprockets (2.12.1, 2.11.0)
sprockets-rails (2.1.3)
sqlite3 (1.3.9)
test-unit (2.0.0.0)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
treetop (1.4.15)
turbolinks (2.2.2)
tzinfo (1.2.2)
uglifier (2.5.3)
入ってるじゃん。あ、1.2.1 じゃないとダメなのか?
[root@www2465uo Lathercraft]# gem install tzinfo -v '1.2.1'
Fetching: tzinfo-1.2.1.gem (100%)
Successfully installed tzinfo-1.2.1
Parsing documentation for tzinfo-1.2.1
Installing ri documentation for tzinfo-1.2.1
Done installing documentation for tzinfo after 4 seconds
1 gem installed
その後も mini_portile-0.6.0 とか nokogiri-1.6.3.1 とかが見つからないっていうエラーが出たけど、bundle install
したら大丈夫のようだ。
じゃ、あらためて。
[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = 'd3fd9f7eeef0d53467781729d97e738b88f3f1e3c854d3b8151ef5b32f388dca8620943c83303e76d098d553f058e222ee09df5040b86400c48b48c28da54183'
Please ensure you restarted your application after installing Devise or setting the key.
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/devise-3.2.4/lib/devise/rails/routes.rb:481:in `raise_no_secret_key'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/devise-3.2.4/lib/devise/rails/routes.rb:206:in `devise_for'
/var/www/Lathercraft/config/routes.rb:20:in `block in '
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:337:in `instance_exec'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:337:in `eval_block'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:315:in `draw'
/var/www/Lathercraft/config/routes.rb:1:in `'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `block in load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:16:in `reload!'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/file_update_checker.rb:75:in `call'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/file_update_checker.rb:75:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:27:in `updater'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/finisher.rb:71:in `block in '
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `instance_exec'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `run'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:55:in `block in run_initializers'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:54:in `run_initializers'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:300:in `initialize!'
/var/www/Lathercraft/config/environment.rb:5:in `'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `block in require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:276:in `require_environment!'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:379:in `block in run_tasks_blocks'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
うおう!今度はシークレットキーか。出力されてる文字列を、config/initializers/devise.rb の該当箇所に貼り付ける。
[root@www2465uo Lathercraft]# vim config/initializers/devise.rb
今度こそどうだ。
[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
== 20140708134805 CreateBrands: migrating =====================================
-- create_table(:brands)
-> 0.1367s
-- add_index(:brands, :name, {:unique=>true})
-> 0.1430s
-- add_index(:brands, :slug, {:unique=>true})
-> 0.2081s
== 20140708134805 CreateBrands: migrated (0.4885s) ============================
== 20140708135345 CreateProducts: migrating ===================================
-- create_table(:products)
-> 0.0521s
-- add_index(:products, [:brand_id, :slug], {:unique=>true})
-> 0.0269s
== 20140708135345 CreateProducts: migrated (0.0794s) ==========================
== 20140708140110 CreateItems: migrating ======================================
-- create_table(:items)
-> 0.0132s
-- add_index(:items, :md5, {:unique=>true})
-> 0.0350s
== 20140708140110 CreateItems: migrated (0.0485s) =============================
== 20140708215016 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0087s
-- add_index(:users, :email, {:unique=>true})
-> 0.0153s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0266s
-- add_index(:users, :confirmation_token, {:unique=>true})
-> 0.0146s
== 20140708215016 DeviseCreateUsers: migrated (0.0658s) =======================
== 20140719083223 CreateCategories: migrating =================================
-- create_table(:categories)
-> 0.0059s
== 20140719083223 CreateCategories: migrated (0.0060s) ========================
== 20140719085230 AddCategoryIdToItem: migrating ==============================
-- add_column(:items, :category_id, :integer)
-> 0.0115s
== 20140719085230 AddCategoryIdToItem: migrated (0.0116s) =====================
== 20140720065147 AddAdminToUsers: migrating ==================================
-- add_column(:users, :admin, :boolean, {:null=>false, :default=>false})
-> 0.0157s
== 20140720065147 AddAdminToUsers: migrated (0.0158s) =========================
== 20140720134222 CreateStorages: migrating ===================================
-- create_table(:storages)
-> 0.0070s
== 20140720134222 CreateStorages: migrated (0.0071s) ==========================
== 20140721073254 CreateDownloads: migrating ==================================
-- create_table(:downloads)
-> 0.0060s
== 20140721073254 CreateDownloads: migrated (0.0060s) =========================
== 20140721080127 CreateStoredItems: migrating ================================
-- create_table(:stored_items)
-> 0.0075s
== 20140721080127 CreateStoredItems: migrated (0.0076s) =======================
== 20140801123109 CreateRemovedItems: migrating ===============================
-- create_table(:removed_items)
-> 0.0074s
== 20140801123109 CreateRemovedItems: migrated (0.0075s) ======================
== 20140801132346 AddBrandToRemovedItems: migrating ===========================
-- add_column(:removed_items, :brand, :string)
-> 0.0109s
== 20140801132346 AddBrandToRemovedItems: migrated (0.0110s) ==================
== 20140802001131 AddNameToUsers: migrating ===================================
-- add_column(:users, :name, :string)
-> 0.0770s
-- add_index(:users, :name, {:unique=>true})
-> 0.0185s
== 20140802001131 AddNameToUsers: migrated (0.0958s) ==========================
== 20140802070045 CreateContacts: migrating ===================================
-- create_table(:contacts)
-> 0.0095s
== 20140802070045 CreateContacts: migrated (0.0096s) ==========================
== 20140808134556 AddOnHoldToItems: migrating =================================
-- add_column(:items, :on_hold, :boolean)
-> 0.0145s
== 20140808134556 AddOnHoldToItems: migrated (0.0147s) ========================
やった!
ついでに、production 環境用の secret_key_base を環境変数に設定して、アプリを起動してみる。
[root@www2465uo Lathercraft]# export SECRET_KEY_BASE=`rake secret`
[root@www2465uo Lathercraft]# rails server -e production
=> Booting WEBrick
=> Rails 4.1.4 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-08-14 15:18:04] INFO WEBrick 1.3.1
[2014-08-14 15:18:04] INFO ruby 2.0.0 (2014-05-08) [x86_64-linux]
[2014-08-14 15:18:04] INFO WEBrick::HTTPServer#start: pid=27822 port=3000
ブラウザからアクセスすると、ちゃんとページが表示された。
というところで、今回はここまで。