出来上がる開発環境リスト
- 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
設定したメールアドレスにメールが届くと成功