コンユウメモ @kon_yu

作ったガラクタとか、旅行とかの話

プログラムをWeb公開するワークショップ ワークショップ用資料

はじめに

LokkaというRuby製のCMSをHerokuというPaaS上にアップさせるというもの

Lokkaを動かすための開発環境構築から、LokkaのDL、Herokuのアカウント作成、デプロイまでとする。

※ ワークショップとは行っても仲間内で見せるための資料、使えそうならどっかでワークショップがしたいなぁと思う

目的

  • 対象はノンプログラマのIT関係者(Excel SE含む)
  • Java,C#とか固い言語で開発している人にWeb系でよく使われるRubyの環境構築を学ぶ
  • アプリを作るってのはあるけど、「実際WWW上にアップロードしてアクセスしてみよう」と言うのがなかなか無いので作った
  • Rails Girlsが近いけどhttp://railsgirls.com/tokyo 2日間と長いので、開発環境構築+ ありもののプログラムをDL +デプロイという形にした

前提条件

  • Mac OSX系 Lion以上推奨
  • ターミナルでコマンド操作をします
  • Windowsでも開発環境の構築は多分出来きるRubyとGitが動けば良い
  • 以降 カッコ書きは()作者であるオレの感想

開発環境を用意しよう

Gccをインストールしよう

Xcodeをインストールする

  • App StoreからXcode で検索してインストール
  • Xcodeを起動して、Preferences->command line tools をインストール

gcc -v

Gccのバージョンを取得出来れば完成

Rubyをインストール

RVMインストール

RVMhttps://rvm.io/とはRuby自体のバージョン管理ツール。別のバージョンのRubyを複数端末の保持できるし、インストールが楽

(rbenvを使おうと思ったけど、使ったことがないのでRVMで)

ターミナルを開いて以下のRVMインストールコマンドを実行する

$ \curl -L https://get.rvm.io | bash -s stable --ruby
$ source /Users/***/.rvm/scripts/rvm

RVMを使ってRubyインストール

インストールできるRubyのバージョンを確認する

$  rvm list known

インストール可能なRubyリストを見る

# MRI Rubies
…
…
[ruby-]1.9.3-head

リストを見るとCRubyやらJRubyやらがあるので、 MRI Ruby(cRuby)の最新バージョンをインストール

$ rvm install ruby-1.9.3-head

※インストールには5-10分ぐらいかかる

インストールしたRubyをデフォルト設定で使用する

$ rvm use ruby-1.9.3-head --default

バージョンの確認

$ ruby -v
 ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.2.0]

インストールしたRubyのバージョンが確認出来ればインストール完了

Gitのインストール

HomeBrewのインストール

HomeBrewhttp://mxcl.github.com/homebrew/とは、ソフトウェアのパッケージ管理システム。ここで言うソフトウェアは、主にサーバで使用するソフトウェアを指す MySQLとか、Emacs,Vim,

依存しているソフトとか良い感じでDLしてコンパイルしてパスを通してくれる (MacPortより手軽 usr/local/ の下に作られるので、いちいち管理者のパスワードを聞かれない macport は管理者パスワード聞かれる)

git をインストールするために入れます

HomeBrewのインストールコマンド

$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

インストールできるソフトウェアのリストをアップデート (しょっぱなのインストールの人も必要か?)

$ brew update

git のインストール

git とはソフトウェアのバージョン管理システム。(これしらないソフトウェア開発者はもうモグリでしょ) GitHubなのでも有名。 Herokuにアップする際も、gitを利用します

HomeBrewを使ってgitをインストール

$ brew install git

gitのバージョンを確認する

$ git --version

ローカルでアプリを動かす

LokkaのソースコードをDL

Lokkahttp://lokka.org/の公式サイトから、DownLordボタンを押して GitHubのプロジェクトサイトhttps://github.com/komagata/lokkaにアクセスしましょう

(以下はLokkaチュートリアルとほぼ同じ http://lokka.org/getting-started)

gitからクローンする(難しいことは置いといてDLするってことかな)

$ git clone https://github.com/komagata/lokka

任意の場所でLokkaをDLしたら、Lokkaのディレクトリへ移動する

$ cd lokka

(クローンすると、自分が変更した内容をGitでソースコード管理できるようになる。)

依存ライブラリをインストール

Lokkaで必要な依存ファイル・ライブラリのインストール 依存ファイル・ライブラリのDL BundlerというRubyのプログラムを使います。


補足 RubyRubyGemsがすでにインストールされている人はRubyGems自体をアップデートしたほうがいいかも

$ gem update --system

Bundlerのインストール

$ gem install bundler

カレントディレクトリがLokkaのディレクトリになっているのを確認してから

依存ファイル・ライブラリのインストール

カレントディレクトリにある Gemfile があるとbundlerがそのファイルに従って依存ライブラリをDLしてくれる

$ cd lokka
xxxxx/lokka
$ bundle install --without=production:postgresql:mysql  #MySQLとPostgreSQL用のライブラリは入れない

DBの初期化をする

ローカル環境では、このソフトウェア上のDBMS SQLiteCMSの内容を書き込む。 テーブルや初期データを自動挿入する (ここは難しいかな おまじない と説明がいいかも)

$  bundle exec rake db:setup
Upgrading Database...
Initializing Database...    
SQL: (0.000063) SELECT "id", "title", "description", "theme", "mobile_theme", "per_page", "default_sort", "default_order", "meta_description", "meta_keywords", "created_at", "updated_at" FROM "sites" ORDER BY "id"
SQL: (0.001141) INSERT INTO "sites" ("title", "description", "dashboard",……

ローカルで起動

以下のコマンドを実行するとローカルにサーバが起動する ポートは9292

$ bundle exec rackup

ブラウザをたちあげて http://localhost:9292/へアクセス

終了はターミナルで Ctrl+C でサーバが終了する

PaaSを用意しよう

Heroku のアカウントを取得しましょう

Herokuhttp://www.heroku.com/ とはPaaSで無料でも小規模ならずっと使える

TODO 補足説明が必要

  • Herokuトップページから、SignUpボタンを押して、
  • メールアドレスを入力し、Sign Upボタンを押す。
  • 確認用のメールがHerokuより飛んでくるのでリンクをおしてHerokuのユーザ情報入力ページヘ
  • ユーザ情報入力ページで必要事項を入れて、Saveボタンを押す
  • Herokuのユーザホーム画面を表示する

TODO  heroku toolbelt をインストールしたらGitもCLIツールもインストールできるっぽい

Herokuにアクセスしましょう

CLIツールのインストール

Heroku用にコマンドラインツールをインストールする このツールでHerokuにアップリをアップする

Herokuのtoolbeltをインストールすることで解決する https://toolbelt.herokuapp.com/

($ gem install heroku だと古いらしいHerokuでワーニングが出る.)

Herokuへログイン

$ heroku login
Enter your Heroku credentials.
Email: xxxx@xxxx.com
Password (typing will be hidden): 
Could not find an existing public key. #sshkeyの登録をしてくれる
Would you like to generate one? [Yn] y
Generating new SSH public key.
Uploading SSH public key /Users/xxxxxxx/.ssh/id_rsa.pub... done
Authentication successful.

Herokuのプロジェクトとして登録する

    $ heroku create lokkaXXXX #好きなアプリ名

Herokuへデプロイ

プログラムを修正してアップする場合もこのコマンドを利用する

$ git push heroku master

PostgreSQLのAdd-Onを使えるようにする

$ heroku addons:add heroku-postgresql

(必須)アプリのページに行って使えるようになったか確認する

$ heroku addons | grep POSTGRES
heroku-postgresql:dev  HEROKU_POSTGRESQL_XXXX
$ heroku pg:promote HEROKU_POSTGRESQL_XXXX #これなにをしてるんだろう
$ heroku run rake db:setup #dbのセットアップ

サーバで動かしましょう

$ heroku apps:open