AWS Cloud9を使ってデザイナーと協業できるシームレスなRubyOnRails環境体制をつくる
なぜかくのか
- 理由1:システム開発のチームを組んだ時に、チームメンバーの開発環境をお手軽にしたい
- 理由2:古いPCから新しいPCに移行するときに環境構築を簡単にしたい
- 理由3:複数プロジェクトを1台PCで実行してると負荷が高すぎてPCの寿命が縮まりそうだから
このような理由から、Cloud9導入したい人が増えるのではと思ったので書きました。
Cloud9とは
オンラインエディタツールです。Amazonが買収してAWS Cloud9になりました。
料金はどうなの?
AWS Cloud9は最小30分の動作なしでインスタンスをStopしてくれる気配。
つまりmicro planなどで費用を抑えようとしなくても、必要十分な環境を準備して低コスト開発環境の構築ができる
何が良いのか
- デザイナーとの協業がしやすい
デザイナーはHTML, CSS, Javascriptコーディングまではしてくれる人はそれなりにいると思いますが、RubyとかPHPとかJavaとかPythonとか使わない人がほとんどで、ましてRubyOnRailsなどの更に細かいフレームワークなどより知らない人が多いと思っています。
そもそも、WEBサービスの開発でデザイナーの期待するのは使いやすいUIデザイン、UXデザインなので、バックエンドに強い≠デザイナーとして優れていると考えています。 (両方できる人がいて越したことがありませんが)
そのため、開発環境をデザイナーが各自で準備してもらうのは無駄な労力が発生します。 別案で、HTML, CSS, JavaScriptでデータを貰って当て込むというのもありますが、それはそれでデグレが発生することもあり、無駄なコストが発生します。
設定方法
1. githubと連携
git clone
するためには、githubにssh keyを設定する必要があります。
cloud9のterminalで設定
- ssh keyの作成
cd ~/.ssh/ ssh-keygen -t rsa -b 4096 -C "hogehoge@fuga.com"
参考: GitHubにssh接続できるようにする - Qiita
- githubのprojectごとのdeploy keyに公開鍵
***.pub
の中身を登録
Githubの設定ページのSSH KEYでも利用できますが、 今回は外注などで他の人に環境を共有するため、github apiなどで他プロジェクトが見られるのを防ぐためにdeploy keyに設定します。
※Thank you @pandeiro245 in the following ↓↓
- git cloneする
2. rubyの設定
これはrvmが入っているのでそれで設定すれば良いと思います。
- bundle install する
の前に、gem pg
でエラーになるので、postgres-develをインストールする
sudo yum install -y postgresql96-devel
ruby on rails - gem install pgすると失敗する。yum install postgresql-develでも解消しない。 - スタック・オーバーフロー
https://forums.aws.amazon.com/thread.jspa?messageID=817858&tstart=0
3. postgres環境の設定
この工程が面倒な人はとりあえずRDSを使って設計しても大丈夫です。あとでRDS -> Cloud9内のPostgresに変更しても工数が余分に増えることはないので、 直近のモチベーションとタスク優先度で判断してもらえば良いと思います。
rake db:create
できるようにするpostgresqlをインストール
- postgresユーザーにPW設定
本当はRoR専用ユーザーを作るほうが良いですが、今回は開発環境のみでの利用なのでpostgresユーザーを使うようにしています。
sudo -u postgres psql
#postgresユーザーのパスワード設定 /password #exit /q
VagrantのCentOSでPostgreSQLをRailsで使えるようにする - Qiita
- pb_confを修正
sudo vim /var/lib/pgsql/9.6/data/pg_hba.conf
最下部に下記1行を追加
local all all md5
パスワードを設定したので、peerのままだとpsqlログインできなくなるので上記必要。
peer認証の関係でpsqlログインできない時の対処法 - Qiita
RailsでPostgreSQLを使う -- blog.10rane.com
- 初期化
sudo service postgresql96 initdb
起動 sudo /etc/rc.d/init.d/postgresql96 start
chkconfig postgresql-9.6 on
EC2(Amazon Linux AMI)へのPostgreSQLのインストールと設定 - ぴよぴよ.py
4. ImageMagickをインストール
画像を使うので
5. cloud9の起動
rails s -p 8080
実行すると、urlが右上に表示される。
4. IAMユーザーを作成して共有
cloud9権限を追加して共有
最後に
だいたいこれでできるのですが、問題はcommiterの名前を別途設定する必要がある点です。 各開発者のgithub アカウントとは紐づかないので、代わりにcommiter nameを別途設定する必要があるのが少し手間です。
このあたりも含めて、もっと連携強化されて使いやすい環境になるとうれしいですね。 :)