Help us understand the problem. What is going on with this article?

さくら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

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

w7tree
インターネットがつなげた世界におけるシェア(共有)の完成形は初音ミクという文脈によってなされたと信じている。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away