##出来上がる開発環境リスト
- 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の基本初期設定
passwd
#パスワードを二回入力(rootのパス設定)
useradd username
passwd username
#パスワードを二回入力(usernameのパス設定)
usermod -G wheel username
visudo
#105行目あたり
# %wheel ALL=(ALL) ALL
-> %wheel ALL=(ALL) ALL
chmod 755 /home/w7tree #作ったuserに読み取り権限
su w7tree
cd
mkdir .ssh
##ssh設定
sshの鍵が作られている前提で進みます。
作り方は下記など参照
Mac&ubuntu:パスワード無しでsshログインする
scp ~/.ssh/id_rsa.pub username@IP:~/.ssh/authorized_keys
#sshでVPSにログイン
ssh username@IP
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
sudo vim /etc/ssh/sshd_config
#42行目あたり
#PermitRootLogin yes
-> PermitRootLogin no
#48行目あたり(コメントの#を消す)
#PubkeyAuthentication yes
-> PubkeyAuthentication yes
#66行目あたり
PasswordAuthentication yes
-> PasswordAuthentication no
sudo service sshd restart
##必要なものを一括インストール
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のインストール
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用)
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のインストール
#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インストール
gem install rails
gem install rake
gem install passenger
source ~/.bash_profile
##passengerの設定
passenger-install-apache2-module
<Enter>
<Enter>
sudo vim /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
sudo service httpd start #またはrestart
sudo /sbin/chkconfig httpd on
##mysql
sudo service mysqld start #初回の初期化処理
sudo mysqladmin -u root password pass(=passは任意のpassword※あとで使う)
sudo /sbin/chkconfig mysqld on
##railsの起動テスト(sqlite版)
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版)
#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
#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
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を利用する
sudo vim /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>
sudo service httpd restart
#エラーが出たら先ほどの打ち間違い
ブラウザで
http://IP
(http://00.0000.000.000)
へとアクセスして、表示されたら成功。
rails s コマンド無しで表示されているということで、WEBrickではなくApacheが動いているということ
##ひととおりインストールしたので、セキュリティ設定など
めんどくさいので省略中
###Apache設定
省略。
###iptablesの設定
省略。railsの3000portを開くことを忘れない
###ログの監視
sudo yum install -y logwatch
省略。
###mailの設定
sudo sed -i '/^root:/d' /etc/aliases
sudo vim /etc/aliases
#最終行に以下を追加
root: sample@sample.com #メールアドレスを追加
sudo newaliases
echo test | mail root
設定したメールアドレスにメールが届くと成功