CentOS7にRailsプロジェクトを作成するまで
たまに簡単なAWSサービスの動作確認とかで、簡単なRailsアプリケーションの開発環境を作るまでの手順がブログにまとまってると(個人的に)便利だなと思うことがあるので、今回はそんな環境を構築する手順を書きます。
パッケージは執筆時点でのバージョンなので、適宜アップデートして下さい。
使用したAMI
CentOS 7 x86_64 (2014_09_29) EBS HVM-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-d2a117ba.2 (ami-89634988)
※起動時にIAMロールもセットしています。
基本設定
まず最初に自分自身のユーザーを作成や時間の設定をします。EC2インスタンス起動直後に接続するユーザーはcentosです。
$ sudo -i # useradd okochang # passwd okochang # visudo -f /etc/sudoers.d/okochang # sudo cat /etc/sudoers.d/okochang # User rules for okochang okochang ALL=(ALL) NOPASSWD:ALL # timedatectl set-timezone Asia/Tokyo # sed -i -e "s/^ - update_hostname/# - update_hostname/g" /etc/cloud/cloud.cfg # echo 'rails.okochang.com' > /etc/hostname
作成したユーザーに手元の環境から接続するためのSSH公開鍵をセットしたり、今後使うためにSSHキーペアを作成します。
$ su - okochang $ mkdir -m 700 .ssh $ echo 'ssh-rsa your-ssh-key-tesxt-data' .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys $ ssh-keygen -C rails.okochang.com $ sudo reboot
SELinuxごめんなさい
$ sudo sed -i -e "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config $ sudo reboot
必要なパッケージのインストール
Railsの環境を構築するために必要なパッケージのインストールと、AWSのコマンドラインツールをインストールしておきます。
$ sudo yum update -y $ sudo yum install -y git emacs gcc make zlib-devel libxml2-devel libxslt-devel readline-devel openssl-devel gcc-c++ curl-devel ruby-devel vim wget epel-release bzip2 bind-utils nodejs $ sudo reboot
$ sudo easy_install pip $ sudo pip install awscli $ sudo pip install awsebcli
Git
ソースコードの管理にGitを使うので、このへんも設定しておきます。
$ git config --global user.email "okochang@example.com" $ git config --global user.name "okochang"
Ruby
rbenvを使って、現時点最新の安定版であるRuby 2.2.2をインストールします。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ cd .rbenv/plugins/ruby-build/ $ sudo ./install.sh $ cd $ echo 'export PATH=$HOME/.rbenv/bin:$PATH' >> .bashrc $ echo 'eval "$(rbenv init -)"' >> .bashrc $ exec $SHELL -l $ rbenv install --list $ rbenv install 2.2.2 $ rbenv global 2.2.2
gems
サンプルプロジェクトではBundlerを使ってgemパッケージを管理しますので、インストールします。
$ gem install rbenv-rehash $ rbenv rehash $ gem install bundler
PostgresQL
サンプルプロジェクトでデータベースは使う予定はありませんが、PostgreSQLを使えるようにしてます。プロジェクト名をmimawarigumiにする予定なので、ユーザー名に指定しています。
$ sudo yum install -y postgresql postgresql-server postgresql-libs postgresql-contrib postgresql-devel $ sudo su - postgres $ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8 $ exit $ sudo systemctl start postgresql $ sudo systemctl enable postgresql $ sudo su - postgres $ createuser -a -d -P mimawarigumi $ exit
サンプル用のRailsプロジェクト作成
プロジェクト用のディレクトリを作成して、railsコマンドでプロジェクトを初期化します。
初期化したら、現時点の内容をコミットします。以降の作業は適宜コミットしていくものとします。
$ mkdir -p repos/mimawarigumi $ cd repos/mimawarigumi $ bundle init $ sed -i -e 's/# gem "rails"/gem "rails"/g' Gemfile $ bundle config build.nokogiri --use-system-libraries $ bundle install --path vendor/bundle $ bundle exec rails new . -d postgresql --skip-test-unit $ bundle exec rake db:migrate cat << EOF >> .gitignore # Ignore ruby version configuration. /.ruby-version # Ingonre bundled contents. /vendor/bundle # Ignore sass cache .sass-cache # Ignore dotenv /.env EOF $ git add . $ git commit -m "initial commit"
静的ページの作成
静的ページの作成をしていきます。最初にGemfileにrspecとcapybaraを追加してインストールしておきました。具体的な変更内容はこちらを見て下さい。
$ vim Gemfile $ bundle install --path vendor/bundle $ bundle exec rails generate controller StaticPages home --no-test-framework $ bundle exec rails generate rspec:install $ bundle exec rails generate integration_test static_pages $ vim app/views/static_pages/home.html.erb $ vim spec/rails_helper.rb $ vim app/views/static_pages/home.html.erb $ vim config/routes.rb $ vim config/database.yml