CentOS 6.4 のインストール
仮想マシン上に構築します。ホストOSは、Windows7 です。VMware で、32bit 版です。OS のインストールは、特にこれといって特別なことはありません。ただ、後でいろいろなものを追加インストールするのが面倒なので、インストールタイプは Software Development Workstation にしています。
ひと通りインストールが済んだら、作業ユーザを sudo に追加します。
# visudo
workuser ALL=(ALL) ALL
あとで必要になるパッケージをインストール
$ sudo yum install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel
PostgreSQL のインストール
既に古いバージョンの PostgreSQL がインストールされていますので、削除します。# yum list installed | grep postgres
見つかったものを削除
yum remove postgresql.i686 postgresql-libs.i686
最新版を取ってきます。
# wget -P /tmp http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm
ここでは 32bit 版をインストールしています。
# rpm -ivh /tmp/pgdg-centos93-9.3-1.noarch.rpm
# yum install -y postgresql93-server postgresql93-devel postgresql93-contrib
データベースの初期化
# /etc/rc.d/init.d/postgresql-9.3 initdb
サービスの開始
# /etc/rc.d/init.d/postgresql-9.3 start
自動起動に登録
# chkconfig postgresql-9.3 on
確認します
# su - postgres
$ psql
psql (9.3.2)
"help" でヘルプを表示します.
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
postgres=#
rbenv のインストール
インストール用のスクリプトを作ります。※この方法、ググって調べて真似しています。どこのサイトだったか失念してしまいました。元作者の方、ごめんなさい、そしてありがとうございます。
$ vi rbenv-install.sh
内容は
MY_GROUP="workuser"
if [ "$MY_GROUP" = "" ] ; then
echo '!!! undefined variable MY_GROUP.'
echo '!!!'
echo '!!! ex.) MY_GROUP=staff'
echo '!!!'
exit 1
fi
cd /usr/local
git clone git://github.com/sstephenson/rbenv.git rbenv
mkdir rbenv/shims rbenv/versions
chgrp -R $MY_GROUP rbenv
chmod -R g+rwxX rbenv
git clone git://github.com/sstephenson/ruby-build.git ruby-build
cd ruby-build
./install.sh
echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile.d/rbenv.sh
echo 'export PATH="/usr/local/rbenv/bin:$PATH"' >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
ファイルのパーミッションの変更
$ chmod 755 rbenv-install.sh
実行
$ sudo ./rbenv-install.sh
これ一発でインストールは完了します。
$ rbenv -v
rbenv 0.4.0-75-gbe5e1a4
インストール可能な ruby を一覧表示
$ rbenv install -l
$ sudo yum install openssl.i686 openssl-devel.i686 openssl-static.i686
rbenv 経由で ruby をインストール
$ rbenv install 2.0.0-p353
このマシンで使用できるように設定
$ rbenv global 2.0.0-p353
$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]
$ gem update --system
$ gem install bundler
$ gem update
httpd のインストール
$ sudo yum install httpd httpd-devel curl-devel
$ chkconfig /etc/init.d/httpd
$ sudo chkconfig httpd on
$ chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$ sudo /etc/rc.d/init.d/httpd start
iptables で 80 番を許可する
$ sudo vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables restart
ブラウザでアクセスすると Apache の初期画面が表示される。
Passenger のインストール
# gem install passenger# passenger-install-apache2-module
設定ファイルを作成
# vi /etc/httpd/conf.d/passenger.conf
内容はいかの3行
LoadModule passenger_module /usr/local/...
PassengerRoot /usr/local/rbenv/...
PassengerDefaultRuby /usr/local/rbenv/...
同様に
# vi /etc/httpd/conf.d/rails.conf
以下の文字列
<VirtualHost *:80>
ServerName www.example.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
</Directory>
</VirtualHost>
作業ユーザに戻って
$ mkdir www
$ cd www
ここに Rails の環境を構築します。
$ bundle init
$ vi Gemfile
rails のコメントを外す。
rails の環境をインストール
$ bundle install --path vendor/bundle --without production
$ bundle exec rails new . --skip-bundle --database=postgresql
$ vi Gemfile
gem 'therubyracer' のコメントを外す。
$ bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config
$ bundle install --path vendor/bundle
一旦、SELinux を解除します。最後に設定します。
$ sudo setenforce 0
$ sudo /etc/rc.d/init.d/httpd restart
$ chmod 755 /home/workuser/
データベースの設定をします。
$ vi config/database.yml
データベースの生成権を与えます。
$ su - postgres
$ createuser -d workuser
本来のユーザに戻って
$ createdb
SELinux の設定変更
必要なパッケージをインストールします。# yum install policycoreutils-python
# grep httpd /var/log/audit/audit.log | audit2allow -M passenger
# semodule -i passenger.pp
SELinux を有効にします。
# setenforce 1
# /etc/init.d/httpd restart
長い・・・
書き足します。実行モードが production になっているので development に変更
$ sudo vi /etc/httpd/conf.d/rails.conf
<VirtualHost *:80>
ServerName www.example.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
</Directory>
RailsEnv development
</VirtualHost>
ページをひとつ、作ってみる
$ bundle exec rails g controller welcome index
$ touch tmp/restart.txt
ブラウザでアクセスしてみる
http://192.168.xxx.xxx/welcome/index
走らなかったら、SELinux を一旦切ってみる。で、走れば SELinux の再設定。
# setenforce 0
ブラウザでアクセスして走ることを確認
再設定
# grep httpd /var/log/audit/audit.log | audit2allow -M passenger
# semodule -i passenger.pp
# /etc/init.d/httpd restart
# setenforce 1
これで終了。