RailsアプリをCentOSのApache上でサブディレクトリ(hogehoge.com/piyo)で動作させる方法についてまとめてみました。
[環境]CentOS7、Ruby2.1.4、Rails4.1.7、rbenv0.4.0-129-g7e0e85b、Passenger4.0.531
##必要なソフトウェアのインストール
$ sudo yum -y update && sudo yum -y install git sqlite sqlite-devel httpd-devel curl-devel apr-devel apr-util-devel libffi-devel openssh
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
~~略~~
完了しました!
##rbenv、ruby-build、Rubyのインストール
$ cd /usr/local
$ sudo git clone git://github.com/sstephenson/rbenv.git
Cloning into 'rbenv'...
remote: Counting objects: 2002, done.
remote: Total 2002 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2002/2002), 318.88 KiB | 186.00 KiB/s, done.
Resolving deltas: 100% (1249/1249), done.
$ sudo mkdir rbenv/plugins && cd rbenv/plugins
$ sudo git clone git://github.com/sstephenson/ruby-build.git
Cloning into 'ruby-build'...
remote: Counting objects: 4031, done.
remote: Total 4031 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4031/4031), 701.51 KiB | 267.00 KiB/s, done.
Resolving deltas: 100% (2043/2043), done.
$ sudo visudo -f /etc/sudoers.d/rbenv
#↓追加
Defaults !secure_path
Defaults env_keep += "PATH RBENV_ROOT"
$ sudo vim /etc/profile.d/rbenv.sh
#↓追加
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
#ここまでできたら一度ログアウトし再度ログインしてください。
$ sudo chmod -R 777 /usr/local/rbenv
$ rbenv install 2.1.4 #他のバージョンでも可
Downloading ruby-2.1.4.tar.gz...
-> http://
Installing ruby-2.1.4...
$ rbenv global 2.1.4 #他のバージョンをインストールした場合はそのバージョンを指定する
$ rbenv rehash
##必要なgemのインストール
$ gem install rails passenger therubyracer sqlite3 bundler
Fetching: thread_safe-0.3.4.gem (100%)
Successfully installed thread_safe-0.3.4
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
~~略~~
33 gems installed
##passengerモジュールをApacheにインストール
$ sudo passenger-install-apache2-module
/usr/local/rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/passenger-4.0.53/bin/passenger-install-apache2-module:42: warning: Insecure world writable dir /usr/local/rbenv/versions/2.1.4/bin in PATH, mode 040777
Welcome to the Phusion Passenger Apache 2 module installer, v4.0.53.
This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.
Here's what you can expect from the installation process:
1. The Apache 2 module will be installed for you.
2. You'll learn how to configure Apache.
3. You'll learn how to deploy a Ruby on Rails application.
Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.
Press Enter to continue, or Ctrl-C to abort.
#enterを押す
--------------------------------------------
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
#enterを押す
--------------------------------------------
Checking for required software...
* Checking for C compiler...
Found: yes
Location: /usr/bin/cc
* Checking for C++ compiler...
Found: yes
Location: /usr/bin/c++
* Checking for Curl development headers with SSL support...
~~略~~
--------------------------------------------
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/local/rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/passenger-4.0.53
PassengerDefaultRuby /usr/local/rbenv/versions/2.1.4/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!
Press ENTER to continue.
#enterを押す
--------------------------------------------
Deploying a web application: an example
Suppose you have a web application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:
<VirtualHost *:80>
ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
#Require all granted
</Directory>
</VirtualHost>
And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:
/usr/local/rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/passenger-4.0.53/doc/Users guide Apache.html
https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html
Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com
Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
##Apacheへの設定追加
$ passenger-install-apache2-module --snippet > ~/passenger.conf
$ sudo mv ~/passenger.conf /etc/httpd/conf.d/
$ sudo vim /etc/httpd/conf.d/rails.conf
NameVirtualHost *:80
<VirtualHost *:80>
PassengerEnabled On
RailsEnv development
RailsBaseURI /hellorails
</VirtualHost>
#↑追加
$ sudo systemctl restart httpd
##テスト用のRailsアプリの作成
$ sudo mkdir /var/www/app && sudo chmod 777 /var/www/app && cd /var/www/app
$ rails new hellorails
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
~~略~~
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
run bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted
$ cd hellorails
$ vim Gemfile
# gem 'therubyracer', platforms: :ruby
#↓javascriptランタイムを有効にする
gem 'therubyracer', platforms: :ruby
$ cd /var/www/html
$ ln -s /var/www/app/hellorails/public hellorails
##SELinuxの無効化
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
$ sudo vim /etc/selinux/config
#↑/etc/sysconfig/selinux ではなく
SELINUX=enforcing
#↓デフォルトの起動モードを変更
SELINUX=permissive
$ setenforce 0
http://[ドメイン名]/hellorails
でテストアプリへアクセスできるはずです。
##参考リンク
rbenvをシステムワイドにインストールする » つくば日記(仮)
rbenv+ruby-buildをインストールする手順 (CentOS/RedHat) | WEB ARCH LABO
CentOSにPassenger/Ruby2.0/Rails4.0をインストールしてみる(rbenv版) - yk5656 diary
Linux(CentOS)のApache+PassengerでRuby on Railsを動かす
Apache 2.2 に Phusion Passenger をプラグインする手順 (CentOS/RedHat) | WEB ARCH LABO
Redmine 2.5をCentOS 6.5にインストールする手順 | Redmine.JP Blog
5.4. SELINUX の有効化および無効化