將文章搬到 Logdown 繼續寫囉,因為在 google blogger 上面寫 code 真是太痛苦了。
新網址:http://cateyes.logdown.com/
腦容量延伸計畫
Google 表示:父母生大腦給你是給你算東西,不是給你記東西的。
2015年4月7日 星期二
Install ElasticSearch 1.5.0 on Ubuntu 14.04 LTS
安裝 script:https://gist.github.com/ricardo-rossi/8265589463915837429d
有人已經寫好 script 可以直接裝。
如果要用 Oracle JDK 可以改裡面的設定,預設使用 Ubuntu 提供的 OpenJDK。
執行完後如果沒正確結果。
可以再執行一次 curl http://localhost:9200 看看。
正確結果是最後要出現類似以下:
{
"status" : 200,
"name" : "Fearmaster",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.5.0",
"build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
"build_timestamp" : "2015-03-23T14:30:58Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
測試了一下重開機不會自動啟動,補下一個指令就好了
sudo update-rc.d elasticsearch defaults 95 10
參考:http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-service.html
有人已經寫好 script 可以直接裝。
如果要用 Oracle JDK 可以改裡面的設定,預設使用 Ubuntu 提供的 OpenJDK。
執行完後如果沒正確結果。
可以再執行一次 curl http://localhost:9200 看看。
正確結果是最後要出現類似以下:
{
"status" : 200,
"name" : "Fearmaster",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.5.0",
"build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
"build_timestamp" : "2015-03-23T14:30:58Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
測試了一下重開機不會自動啟動,補下一個指令就好了
sudo update-rc.d elasticsearch defaults 95 10
參考:http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-service.html
2015年3月31日 星期二
Rails Hangs When Generating Migration
有時候 Rails 在執行 rails g migration some_migration 會停在那邊。
只要執行下面指令就可以了:
$ spring stop
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
4. 安裝一些 Rails 常用到的程式
sudo apt-get install nodejs
sudo apt-get install mysql-server mysql-common mysql-client libmysqlclient-dev
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安裝 Passengersudo 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-flow7. 開始建立第一個 Rails App 或是 deploy 你的 Projectcd 回到自己 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年9月25日 星期四
Fix bash Vulnerability CVE-2014-6271
測試方式:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
如果出現以下,代表你是安全的
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
如果出現以下,代表會被這漏洞攻擊
vulnerable
hello
修正方式:
sudo apt-get update && sudo apt-get install bash
參考:http://askubuntu.com/questions/528101/what-is-the-cve-2014-6271-bash-vulnerability-and-how-do-i-fix-it
但是很不幸的 Ubuntu 沒修正完全。
後續還有 CVE-2014-7169 要修XD
Update:
https://twitter.com/ErrataRob/status/514831122400686080/photo/1
csh、tcsh、ksh、sh、zsh 全部中囉~可喜可賀!
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
如果出現以下,代表你是安全的
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
如果出現以下,代表會被這漏洞攻擊
vulnerable
hello
修正方式:
sudo apt-get update && sudo apt-get install bash
參考:http://askubuntu.com/questions/528101/what-is-the-cve-2014-6271-bash-vulnerability-and-how-do-i-fix-it
但是很不幸的 Ubuntu 沒修正完全。
後續還有 CVE-2014-7169 要修XD
Update:
https://twitter.com/ErrataRob/status/514831122400686080/photo/1
csh、tcsh、ksh、sh、zsh 全部中囉~可喜可賀!
SOP For Create User in Ubuntu
以下範例使用者名稱皆用 testuser
建立使用者和設定密碼
sudo useradd -d /home/testuser -m testuser
sudo passwd testuser
指定使用者 shell 用 bash(如果是的話)
sudo chsh -s /bin/bash testuser
讓使用者可以 sudo(如果需要)
sudo adduser testuser sudo
讓使用者可以透過 public key 登入
sudo mkdir /home/testuser/.ssh
sudo chown testuser:testuser /home/testuser/.ssh
sudo chmod 700 /home/testuser/.ssh
sudo mv testuser-id_rsa.pub /home/testuser/.ssh/authorized_keys
sudo chown testuser:testuser /home/testuser/.ssh/authorized_keys
sudo chmod 600 /home/testuser/.ssh/authorized_keys
建立使用者和設定密碼
sudo useradd -d /home/testuser -m testuser
sudo passwd testuser
指定使用者 shell 用 bash(如果是的話)
sudo chsh -s /bin/bash testuser
讓使用者可以 sudo(如果需要)
sudo adduser testuser sudo
讓使用者可以透過 public key 登入
sudo mkdir /home/testuser/.ssh
sudo chown testuser:testuser /home/testuser/.ssh
sudo chmod 700 /home/testuser/.ssh
sudo mv testuser-id_rsa.pub /home/testuser/.ssh/authorized_keys
sudo chown testuser:testuser /home/testuser/.ssh/authorized_keys
sudo chmod 600 /home/testuser/.ssh/authorized_keys
2014年9月4日 星期四
Import Data To MySQL Efficiently
使用以下指令產生一百萬筆 user 的假資料
for i in `seq 1 1000000`; do echo "test$i,pass$i,,2014-09-05 03:43:27" >> users.csv; done
使用 mysqlimport 匯入資料
MySQL Host:mysql-demo
Database 名稱:my_database
Table 名稱:users
csv 檔名務必和 Table 名稱一樣。
mysqlimport --fields-terminated-by=, --columns='username,password,pass_details,created_at' --local -h mysql-demo.cxu7skntlvtx.us-east-1.rds.amazonaws.com -u admin -p my_database users.csv
使用這種方式匯入資料比使用一個 Transaction 包一堆 Insert SQL 快上百倍。
但需注意此方式如果匯入錯誤,後果自行承擔!
參考:http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/
for i in `seq 1 1000000`; do echo "test$i,pass$i,,2014-09-05 03:43:27" >> users.csv; done
使用 mysqlimport 匯入資料
MySQL Host:mysql-demo
Database 名稱:my_database
Table 名稱:users
csv 檔名務必和 Table 名稱一樣。
mysqlimport --fields-terminated-by=, --columns='username,password,pass_details,created_at' --local -h mysql-demo.cxu7skntlvtx.us-east-1.rds.amazonaws.com -u admin -p my_database users.csv
使用這種方式匯入資料比使用一個 Transaction 包一堆 Insert SQL 快上百倍。
但需注意此方式如果匯入錯誤,後果自行承擔!
參考:http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/
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
由以上數據可以很明顯看出
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
由以上數據可以很明顯看出
- 有用高階函式庫很明顯
- 有 AES-NI 的 CPU 在做 AES 加密時速度快 2 倍。
2014年8月8日 星期五
Database GUI Tools
Sequel Pro:http://www.sequelpro.com/
免費,但只能連 MySQL
Navicat:
http://www.navicat.com/
要錢,但不錯用
MySQL Workbench
http://www.mysql.com/products/workbench/
免費,但只能連 MySQL
Navicat:
http://www.navicat.com/
要錢,但不錯用
MySQL Workbench
http://www.mysql.com/products/workbench/
2014年5月23日 星期五
Install Tsung From Source Code On AWS Ubuntu 14.04 LTS (PV) Instance
官方參考:http://tsung.erlang-projects.org/user_manual/installation.html#dependencies
前置準備,安裝需要用到的程式。執行以下命令
下載 Tsung
進入剛剛下載的 tsung1.5.1 內,準備開始安裝前的設定,執行
完成
前置準備,安裝需要用到的程式。執行以下命令
- apt-get update
- apt-get install make
- apt-get install erlang-base
- apt-get install erlang-ssl
- apt-get install erlang-dev
- apt-get install erlang-snmp
- apt-get install erlang-eunit
- apt-get install erlang-xmerl
- apt-get install erlang-inets
- apt-get install erlang-os-mon
- apt-get install gnuplot
- apt-get install python-matplotlib
- apt-get install libtemplate-perl
下載 Tsung
- wget http://tsung.erlang-projects.org/dist/tsung-1.5.1.tar.gz
- tar -zxvf tsung-1.5.1.tar.gz
進入剛剛下載的 tsung1.5.1 內,準備開始安裝前的設定,執行
- ./configure
- make
- make install
完成
訂閱:
文章 (Atom)