Edited at

さくらVPS契約後、最速でrails(MySQL+Apache)環境を構築する(CentOS6.2 - 2012年8月版)

More than 5 years have passed since last update.


出来上がる開発環境リスト


  • WEBサーバー(Apache)

  • Database(MySQL,sqlite)

  • Ruby(rbenvによるversion管理可)

  • Ruby on rails(passengerによるApache連携あり)

  • Node.js


時間

早ければ1時間程度で可能(?)


用語解説


  • sh@さくらVPSリモートコンソール = さくらVPSのコントロール接続しているリモートコンソール画面での入力

  • sh@リモート = sshで接続しているVPS側コンソール画面での入力

  • sh@ローカル = ローカルマシンのコンソール画面での入力

  • username = 任意のユーザーネーム

  • IP = さくらVPSのIPアドレス(000.000.000.000)

  • -> = 上記を下記に変更

想定:さくらVPSの契約直後、またはOS再インストール直後から、最速でrailsの実行環境を作る

注意:セキュリティ的にマズイ設定をしてたら突っ込んでください。VPSで初めてサーバー触って、歴1ヶ月。ググりまくって見よう見まねでやっているので、全然わからないのです。


VPSの基本初期設定


sh@さくらVPSリモートコンソール.console

passwd

#パスワードを二回入力(rootのパス設定)

useradd username
passwd username
#パスワードを二回入力(usernameのパス設定)

usermod -G wheel username
visudo



visudo.

#105行目あたり

# %wheel ALL=(ALL) ALL
-> %wheel ALL=(ALL) ALL


sh@さくらVPSリモートコンソール.console

chmod 755 /home/w7tree #作ったuserに読み取り権限

su w7tree
cd
mkdir .ssh


ssh設定

sshの鍵が作られている前提で進みます。

作り方は下記など参照

Mac&ubuntu:パスワード無しでsshログインする


sh@ローカル.console

scp ~/.ssh/id_rsa.pub username@IP:~/.ssh/authorized_keys

#sshでVPSにログイン
ssh username@IP



sh@リモート.console

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys
sudo vim /etc/ssh/sshd_config


/etc/ssh/sshd_config.

#42行目あたり

#PermitRootLogin yes
-> PermitRootLogin no

#48行目あたり(コメントの#を消す)
#PubkeyAuthentication yes
-> PubkeyAuthentication yes

#66行目あたり
PasswordAuthentication yes
-> PasswordAuthentication no



sh@リモート.console

sudo service sshd restart



必要なものを一括インストール


sh@リモート.console

sudo yum install -y zlib-devel perl-ExtUtils-MakeMaker httpd httpd-devel openssl-devel libyaml-devel libxml2-devel libxslt-devel libffi-devel readline-devel pcre-devel iconv-devel sqlite-devel mysql mysql-server mysql-devel curl-devel nkf

#ruby-devel rdoc ruby


sqlite3のインストール


sh@リモート.console

cd

wget http://www.sqlite.org/sqlite-autoconf-3071300.tar.gz
tar zxvf sqlite-autoconf-3071300.tar.gz
cd sqlite-autoconf-3071300
./configure
make
sudo make install
make clean


node.jsのインストール(javascript runtime用)


sh@リモート.console

cd

wget http://nodejs.org/dist/v0.8.5/node-v0.8.5.tar.gz
tar zxvf node-v0.8.5.tar.gz
cd node-v0.8.5
./configure
make
sudo make install
make clean


rbenvによるRubyのインストール


sh@リモート.console

#rbenvインスコ

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin/:$HOME/.rbenv:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL
mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

#rubyのインスコ
rbenv install 1.9.3-p125 #好きなバージョンでok
rbenv global 1.9.3-p125 #好きなバージョンでok
rbenv rehash



rails & 必要gemインストール


sh@リモート.console

gem install rails

gem install rake
gem install passenger
source ~/.bash_profile


passengerの設定


sh@リモート.console

passenger-install-apache2-module

<Enter>
<Enter>
sudo vim /etc/httpd/conf.d/passenger.conf


/etc/httpd/conf.d/passenger.conf

#先ほど画面に出てきた、下記のような三行の文字列をコピーして貼り付ける

#以下は例。人によって違うので、注意
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby


Apache


sh@リモート.console

sudo service httpd start #またはrestart

sudo /sbin/chkconfig httpd on


mysql


sh@リモート.console

sudo service mysqld start #初回の初期化処理

sudo mysqladmin -u root password pass(=passは任意のpassword※あとで使う)
sudo /sbin/chkconfig mysqld on


railsの起動テスト(sqlite版)


sh@リモート.console

cd

rails new app
cd app
rails g scaffold sample name:string
rake db:migrate
rails s

#ブラウザにて
#IP:3000へアクセス(表示されたら成功)
#IP:3000/samples(表示されたら成功)
#rails serverの終了コマンドは <Ctrl> + C

#Forbiddenが出るなら
sudo chmod 755 /home/username

#このappはいらないので削除しておく
cd
rm -rf app



railsの起動テスト(mysql版)


sh@リモート.console

#db作成

mysql -u root -p
#password入力(先のmysqlで作った任意のpassword)
mysql> CREATE DATABASE app_development;
mysql exit;

#app作成
cd
rails new app -d mysql
cd app
vi config/database.yml



config/database.yml

#passwordを先のmysqlで設定したpasswordに

development
adapter: mysql2
encoding: utf8
reconnect: false
database: app_development
pool: 5
username: root
password: #ここにpassword記入
socket: /var/lib/mysql/mysql.sock


sh@リモート.console

rails g scaffold sample name:string

rake db:migrate
rails s
#ブラウザにて
#IP:3000へアクセス(表示されたら成功)
#IP:3000/samples(表示されたら成功)

#Forbiddenが出るなら
sudo chmod 755 /home/w7tree

#その他、読み取り権限があるかをチェック
#ll -a を実行して、rがついているかどうか



railsのApache連携

サンプルとして先ほどMySQLの連携テスト(railsの起動テスト(mysql版))で作成したappを利用する


sh@リモート.console

sudo vim /etc/httpd/conf/httpd.conf



/etc/httpd/conf/httpd.conf

#最終行付近(コメント#を外す)

#NameVirtualHost *:80
->NameVirtualHost *:80

#以下末尾に追記
<VirtualHost *:80>
ServerName IP
#例:ServerName 00.000.000.000
DocumentRoot /home/username/app/public/
<Directory "/home/username/app/public">
Options -MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>



sh@リモート.console

sudo service httpd restart

#エラーが出たら先ほどの打ち間違い

ブラウザで

http://IP

(http://00.0000.000.000)

へとアクセスして、表示されたら成功。


rails s コマンド無しで表示されているということで、WEBrickではなくApacheが動いているということ



ひととおりインストールしたので、セキュリティ設定など


めんどくさいので省略中



Apache設定

省略。


iptablesの設定

省略。railsの3000portを開くことを忘れない


ログの監視


sh@リモート.console

sudo yum install -y logwatch


省略。


mailの設定


sh@リモート.console

sudo sed -i '/^root:/d' /etc/aliases

sudo vim /etc/aliases


/etc/aliases.

#最終行に以下を追加

root: sample@sample.com #メールアドレスを追加


sh@リモート.console

sudo newaliases

echo test | mail root

設定したメールアドレスにメールが届くと成功