顯示具有 AWS 標籤的文章。 顯示所有文章
顯示具有 AWS 標籤的文章。 顯示所有文章

2015年3月2日 星期一

Install Ruby 2.2 + Rails 4.2 + Passenger + Nginx On Ubuntu 14.04 LTS In AWS EC2

使用 AWS EC2 環境
AMI:Ubuntu Server 14.04 LTS (HVM), SSD Volume Type - ami-9a562df2

開始建置環境

建立一台新的 Instance 後,連進去開始。
1. 更新一下 package 資訊。
sudo apt-get update



2. 安裝 RVM + Ruby + Rails,參考:RVM 官網
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

\curl -sSL https://get.rvm.io | bash -s stable --rails



3. 讓你可以直接下指令使用 rvm、ruby、rails,執行下面兩行指令
source ~/.rvm/scripts/rvm
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc

4. 安裝一些 Rails 常用到的程式
sudo apt-get install nodejs
sudo apt-get install mysql-server mysql-common mysql-client libmysqlclient-dev

5.  安裝 Passenger 作為 App Server,參考:Passenger 官網
準備安裝 Passenger 的前置動作

加上官方的 APT Repos
加入 PGP key 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

加上 apt 對 https 支援
sudo apt-get install apt-transport-https ca-certificates

建立一個檔案在 /etc/apt/sources.list.d/passenger.list
因為我們使用 Ubuntu 14.04 LTS 版本,所以只要在這檔案裡面加上
# Ubuntu 14.04
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

保護好這個檔案
sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list

完成後更新一下
sudo apt-get update

安裝 Passenger
sudo apt-get install nginx-extras passenger

安裝完後,這個動作會讓我們的 ruby 回去使用到舊版的。執行:
/usr/bin/ruby -v
會看到變成 1.9.3,因此我們要修正回我們要的新版。
sudo rm /usr/bin/ruby
sudo ln -s /home/ubuntu/.rvm/rubies/default/bin/ruby ruby

編輯 Nginx 的設定,啟用 Passenger 相關設定。
位置:/etc/nginx/nginx.conf
將 passenger_root 和 passenger_ruby 拿掉前面 # 號取消註解。
重新啟動 Nginx 去讓剛剛修改的設定生效
sudo service nginx restart
安裝完後,用瀏覽器連上自己機器看看。
如果連不上,請記得檢查一下 EC2 的 Security 有沒有開啟 port 80 和 443。
6. 安裝 Git 和 GitFlow(非必要)
sudo apt-get install git git-flow
7. 開始建立第一個 Rails App 或是 deploy 你的 Project
cd 回到自己 home 目錄,建立一個新專案,執行
rails new my-first-project
cd 到 my-first-project 內的 public 資料夾執行 pwd 看一下路徑後面要用
修改 /etc/nginx/site-available/default
將 listen 80 default_server; 這行加上 # 註解起來
在 /etc/nginx/site-available 下新增一個檔案取為 my-first-project 內容如下:
自行將 YOUR_HOST 和 PATH_TO_YOUR_PROJECT_PUBLIC_DIR  改為你的網址和剛剛 public 資料夾的路徑
server {
  listen 80 default_server;
  server_name YOUR_HOST;
  passenger_enabled on;
  passenger_app_env development;
  root PATH_TO_YOUR_PROJECT_PUBLIC_DIR;
}

2014年8月27日 星期三

AWS EC2 AES-NI Testing

參考:https://forums.aws.amazon.com/thread.jspa?threadID=122148

AES-NI 是用來加速加解密過程的 CPU 功能,在目前的全部 ec2 instance type 都有支援。

不使用高階函式 -evp(同時也不會使用到 AES-NI)
$ openssl speed -elapsed aes-128-cbc

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     112765.34k   122879.02k   125167.36k   126346.92k   126593.71k


強制不使用 AES-NI
$ OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-cbc

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     277520.21k   305234.35k   311621.46k   314812.76k   315200.85k



使用 AES-NI
$ openssl speed -elapsed -evp aes-128-cbc

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     561544.04k   598301.61k   607955.80k   610393.43k   611164.16k



由以上數據可以很明顯看出

  1. 有用高階函式庫很明顯
  2. 有 AES-NI 的 CPU 在做 AES 加密時速度快 2 倍。