125
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2012-08-06

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

  • 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

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

125
125
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
125
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?