Edited at

awsでruby on railsとapacheとの連携構築方法

More than 1 year has passed since last update.


すべての手順


必要なミドルウェアのインストール

$ sudo yum update

$ sudo yum install curl-devel ncurses-devel gdbm-devel readline-devel sqlite-devel ruby-devel
$ sudo yum install gcc gcc-c++ openssl-devel zlib-devel make patch git gettext perl rpm-build libxml2


rbenvのインストール

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

$ echo 'export PATH="$HOME/.rbenv/bin:${PATH}"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ env | grep RBENV

RBENV_SHELL=bash

$ rbenv --version

rbenv 1.1.0-2-g4f8925a


ruby2.4.0 のインストール

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

$ rbenv install -l

.....

2.3.0-dev
2.3.0-preview1
2.3.0-preview2
2.3.0
2.3.1
2.3.2
2.3.3
2.4.0-dev
2.4.0-preview1
2.4.0-preview2
2.4.0-preview3
2.4.0-rc1
2.4.0
2.5.0-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby-1.6.5.1
...

$ rbenv install -v 2.4.0

$ rbenv rehash
$ rbenv global 2.4.0
$ ruby -v

 ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]


Railsのインストール

$ gem update --system

$ gem install bundler --no-rdoc --no-ri
$ gem install --no-ri --no-rdoc rails
$ rbenv rehash
$ rails -v

Rails 5.0.2

$ gem install bundler


sqlite3のインストール

$ wget https://www.sqlite.org/2017/sqlite-autoconf-3170000.tar.gz

$ tar xvzf sqlite-autoconf-3170000.tar.gz
$ cd ./sqlite-autoconf-3170000
$ ./configure
$ make
$ make install
$ source ~/.bash_profile
$ rm -rf sqlite-autoconf-317000*
$ sqlite3 --version

; 3.17.0 2017-02-13.....


Hello World アプリ作成

$ cd ~

$ rails new hello_world
$ cd hello_world
$ vim Gemfile
$ bundle install

- # gem 'therubyracer', platforms: :ruby

+ gem 'therubyracer', platforms: :ruby

$ bundle exec rails s -e production

=> Booting Puma

=> Rails 5.0.2 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.8.2 (ruby 2.4.0-p0), codename: Sassy Salamander
* Min threads: 5, max threads: 5
* Environment: production
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop


apache2.4のインストール

$ sudo yum install httpd24 httpd24-devel


Passengerのインストール

$ gem install passenger

$ rbenv rehash
$ sudo dd if=/dev/zero of=/swap bs=1M count=1024
$ sudo mkswap /swap
$ sudo swapon /swap
$ passenger-install-apache2-module

.....

linking shared-object passenger_native_support.so

--------------------------------------------
Almost there!

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /home/ec2-user/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/ec2-user/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.2
PassengerDefaultRuby /home/ec2-user/.rbenv/versions/2.4.0/bin/ruby
</IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
....


Apacheの設定

$ sudo chown -R apache. ~/hello_world

$ sudo vim /etc/httpd/conf.d/passenger.conf

+   LoadModule passenger_module /home/ec2-user/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so

+ <IfModule mod_passenger.c>
+ PassengerRoot /home/ec2-user/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.2
+ PassengerDefaultRuby /home/ec2-user/.rbenv/versions/2.4.0/bin/ruby
+ </IfModule>

$ sudo vim /etc/httpd/conf.d/apps.conf

 <VirtualHost *:80>

ServerAlias ip address
ServerName ip address

<Directory "/home/ec2-user/hello_world/public/">
PassengerAppRoot /home/ec2-user/hello_world
RailsEnv production
Options -MultiViews
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>


Apacheの起動

$ sudo service httpd start

$ sudo service httpd status