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

  • 132
    Like
  • 0
    Comment
More than 1 year has 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

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