over 3 years ago

系統:

Mac OS X Yosemite 10.10.1
Ruby 2.2.0
Rails 4.2.0

VPS 系統

Ubuntu 14.04 LTS
Nginx 1.4.6
Postgresql 9.3.5

相關連結

Amazon Web Services ( https://aws.amazon.com/ )

設定步驟如下

1. 伺服器設定

a. 新增 Key Pairs

先將常用的 Public key 複製到使用者目錄

$ cp ~/.ssh/id_rsa.pub .

接下來前往 EC2 服務首頁,選擇左邊功能表 NETWORK & SECURITY - Key Pairs,之後點選 Import Key Pair,選擇剛剛複製的 ~/id_rsa.pub 檔案後 Import

b. 在 AWS EC2 新增一個 VPS ( 筆者使用 Ubuntu Server 14.04 LTS (HVM), SSD Volume Type )

Step 5: Tag Instance 可以設定 Key: OwnerValue: Admin,剩下都保留預設就好。
完成之後可以在左邊功能表選擇 INSTANCES - Instance 查看 VPS 的資訊,最重要的就是主機的 Public IP

c. 新增使用者 deploy 與擁有 no password 的權限

使用 ssh 登入 VPS,新增使用者 deploy ( 密碼先任意 ),指令如下

$ ssh ubuntu@<vps_public_ip>
$ sudo adduser deploy

設定群組 admin 擁有 no password 權限,指令如下

$ sudo sed -i 's/%admin ALL=(ALL) ALL/%admin ALL=(ALL) NOPASSWD:ALL/g' /etc/sudoers

將使用者 deploy 加入 admin 群組

$ sudo adduser deploy admin

接下來,先重啟 VPS ( EC2 服務頁面點選左邊功能表 INSTANCES - Instance 選擇 Actions - Instance State - Reboot )

d. 新增使用者 deploy ssh key

另開一個終端機複製本機的 pubic key

$ cat ~/.ssh/id_rsa.pub

回到 VPS 的終端機,執行以下指令,

$ su deploy
$ cd
$ mkdir -p .ssh

執行以下指令,並把剛剛複製的本機 public key 貼上存檔

$ vim ~/.ssh/authorized_keys

最後,就把使用者的 deploy 的密碼鎖住,這樣就只能使用 ssh 登入伺服器

$ sudo passwd -l deploy
e. ruby gems 預設不下載說明文件

另開一個終端機執行以下指令

$ ssh deploy@<vps_public_ip> "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"

2. 使用 Chef 配置 VPS 基本系統環境

之前已經介紹過自製 Chef 的 cookbook ( 請參見 使用 Vagrant 和 Chef 開發 Rails - Part 3 - Site Cookbook ),這邊就不再贅述。

下載筆者自製的 chef-ubuntu_14.04 chef 專案
$ git clone https://github.com/ChouAndy/chef-ubuntu_14.04.git
$ bundle install
VPS 安裝 Chef

執行下面指令可以在 VPS 自動安裝最新版 Chef,並且在 chef 專案資料夾 nodes 底下生成一個相對應的 json 檔案。

$ knife solo prepare deploy@<vps_public_ip>
VPS 配置基本系統環境

打開 nodes/<vps_public_ip>.json 檔案設定以下內容

{
  "run_list": [
    "recipe[cook_rails::setup]"
  ],
  "automatic": {
    "ipaddress": "<vps_public_ip>"
  }
}

之後再執行以下指令,就會開始跑筆者已經設定好針對 ubuntu 14.04 LTS with Rails 的 cookbooks,內容可參見 site-cookbooks/cook_rails/recipes/setup.rb

$ knife solo cook deploy@<vps_public_ip>

跑完之後,基本系統環境就搞定啦!!

← 使用 paperclip 實作任意格式檔案上傳至 AWS S3 Cucumber for Rails - part 1 - 安裝 →
 
comments powered by Disqus