從無到有: 安裝 & 自動部署 Ruby on Rails 網站.
這個月把網站從 Amazon EC2 搬回自己的 server, 目前整個環境是 Linux(Ubuntu) + Apache + Ruby on Rails 在跑, 筆記一下從無到有的配置方法:
安裝之後設定一下配置, 大部份都用預設的就可以, 比較不一樣的地方有, 記憶體 1024 MB, 網路使用橋接界面卡的方式, 這樣可以在虛擬 OS 內連線取得固定 IP, 這對使用自有網址來架設網站是很重要的.
安裝完成後, 記得先把系統更新裝一裝, 之後執行:
註: 第 3 步的 SERVER_HOST_NAME 記得換成自己的網址或 IP.
NVM 是 Node.js 的版本管理套件, 可以輕鬆安裝, 移除, 切換任意版本的 Node:
如果以上步驟都沒發生問題, 網站也成功運行, 別忘了使用 VirtualBox 的快照功能, 儲存一份當前狀態, 這樣之後就算 server 被搞爛了也能迅速恢復到最初狀態 :-)
小撇步:
參考文章:
Install VirtualBox
虛擬主機, 另一個較有名的是 VMWare, 這裡是選用 VirtualBox 4.2.12 作 host.安裝之後設定一下配置, 大部份都用預設的就可以, 比較不一樣的地方有, 記憶體 1024 MB, 網路使用橋接界面卡的方式, 這樣可以在虛擬 OS 內連線取得固定 IP, 這對使用自有網址來架設網站是很重要的.
Install Ubuntu
下載 Ubuntu 最新版本, 這裡使用 13.04, 然後將映像擋掛載在 VirtualBox 後啟動, 照指示一步一步安裝.安裝完成後, 記得先把系統更新裝一裝, 之後執行:
$ sudo apt-get update
$ sudo apt-get upgrade
Install SSH
安裝完 ubuntu 後, 為了之後能遠端操作 server, 所以接著安裝 SSH:$ sudo apt-get install openssh-server
$ ssh-keygen -t rsa
$ scp .ssh/id_rsa.pub SERVER_HOST_NAME:~/.ssh/
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
註: 第 3 步的 SERVER_HOST_NAME 記得換成自己的網址或 IP.
Install vim
接著是安裝 vim, 為了之後能在 terminal 上直接編輯文字檔案 or code:$ sudo apt-get remove vim-tiny
$ sudo apt-get install vim
Install Git
版本控制, 因為之後部署網站都是直接從 GitHub 拉下來, 所以需要安裝 Git:$ sudo apt-get install -y git-core
Install NVM + Node
雖然我的網站還沒使用到 Node.js 的技術, 但接下來要安裝的東西需要跑 javascript, 所以這裡需要先安裝.NVM 是 Node.js 的版本管理套件, 可以輕鬆安裝, 移除, 切換任意版本的 Node:
$ sudo apt-get install build-essential libssl-dev curl
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ echo ". ~/.nvm/nvm.sh" >> .bashrc
$ bash
$ nvm install v0.10.0
$ nvm alias default 0.10.0
Install RVM + Ruby + Rails
同 NVM, RVM 是 Ruby 的版本管理套件:$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bash
$ source ~/.bashrc
$ bash
$ rvm install 1.9.3
$ rvm use --default 1.9.3
$ gem install sqlite3 --no-ri --no-rdoc
$ gem install rails --no-ri --no-rdoc
Install Apache + Passenger
接著安裝 server, 通常有 Apache 或 Nginx 兩種, 這裡是選用 Apache:$ sudo apt-get install -y apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev libcurl4-openssl-dev
$ gem install passenger
$ sudo passenger-install-apache2-module
/etc/apache2/conf.d/mod_rails
, 大致上會類似這樣:LoadModule passenger_module /home/YOUR_RUBY_PATH/gems/passenger-4.0.2/libout/apache2/mod_passenger.so
PassengerRoot /home/YOUR_RUBY_PATH/gems/passenger-4.0.2
PassengerDefaultRuby /home/YOUR_RVM_PATH/wrappers/ruby-1.9.3-p429/ruby
接著在 /etc/apache2/sites-enabled
底下建立一個 YOUR_APP.conf
, 加入以下設定:<VirtualHost *:80>
ServerName YOUR_DOMAIN_NAME
DocumentRoot YOUR_RAILS_PATH/public
<Directory YOUR_RAILS_PATH/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
接著重啟 Apache:$ sudo a2dissite default
$ sudo service apache2 reload
$ sudo service apache2 rstart
$ sudo apache2ctl restart
Install Capistrano
大致上 server 環境都建置好了, 最後要設定自動化部署工具, 使用 Capistrano 這個套件:$ gem install capistrano
$ capify .
config/deploy.rb
, 開啟並設定一些部署參數, 大致上會如下:set :application, "YOUR_RAILS_APP_NAME"
set :repository, "YOUR_GIT_REPOSITORY_PATH"
set :branch, "master"
set :scm, :git
set :user, "YOUR_GIT_USERNAME"
set :port, "22"
set :deploy_to, "YOUR_SERVER_APP_PATH"
set :deploy_via, :remote_cache
set :use_sudo, false
role :web, "YOUR_WEB_SERVER_DOMAIN"
role :app, "YOUR_APP_SERVER_DOMAIN"
role :db, "YOUR_DB_SERVER_DOMAIN"
…
接著可以開始部署了:$ cap deploy:setup
$ cap deploy:cold
current
, release
這些資料夾, current 這個目錄就是最新部署的位置, 前往這個目錄, 安裝從 Git 拉下來的 Rails:$ bundle install
$ cap deploy
如果以上步驟都沒發生問題, 網站也成功運行, 別忘了使用 VirtualBox 的快照功能, 儲存一份當前狀態, 這樣之後就算 server 被搞爛了也能迅速恢復到最初狀態 :-)
小撇步:
- 不習慣 Ubuntu 的視窗桌面, 可以使用
Ctrl-Alt-F1
切換到 Console mode,Ctrl-Alt-F7
切回視窗模式. - 有時會發生 server 網路斷線的情況, 雖然不知道這招是不是對的, 但用到現在網路還蠻穩定的, 開啟
/etc/ppp/options
, 將lcp-echo-failure
值設高一點, 這裡設 15.
參考文章:
留言
張貼留言