跳到主要內容

發表文章

目前顯示的是 十二月, 2012的文章

Nginx reverse proxy setting...

利用Nginx作為Reverse proxy是常見的用途如果要在proxy_pass的地方指定一台以上的server作為後端reverse proxy重導的server 可以利用upstream參數來處理
http {   upstream your.server.domain {     server 11.22.33.1:80;     server 11.22.33.2:80;     server 11.22.33.3:80; # .... 依此類推   }
  server {     listen 80;     location / {       proxy_pass http://your.server.domain; # 這邊與upstream的設定的名稱需相同       proxy_redirect default;     }   } }

SmartOS安裝Self-Gen SSL憑證

下面的設定是在MiCloud SmartOS上的設定,版本為SmartOSPlus64:3.2.0
如果需要在其他版本實作,則需要考慮apache server的設定檔案位置
原則上pkgin install安裝的時候可以看到設定說明...

STEP1: 產生Self-Gen SSL金鑰[root@SmartOS /opt/local/share]# cd /opt/local/etc/httpd/
[root@SmartOS /opt/local/etc/httpd]# openssl genrsa -des3 -out server.key 1024                                                                                                  
Generating RSA private key, 1024 bit long modulus
......++++++
......................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
[root@SmartOS /opt/local/etc/httpd]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field wil…

Zip file with password

很少用zip來壓縮檔案,不過,他支援密碼輸入的功能還不賴唷∼
# zip -P test1234 test.zip ./test/*   adding: test/node_modules/ (stored 0%)   adding: test/test-023.js (deflated 44%)   adding: test/test-123.js (deflated 46%)   adding: test/test-223.js (deflated 29%)   adding: test/test-323.js (deflated 45%)   adding: test/test-423.js (deflated 51%)   adding: test/test.sh (deflated 12%)
# unzip test.zip  Archive:  test.zip    creating: test/node_modules/ [test.zip] test/test-023.js password: [******your password******]   inflating: test/test-123.js     inflating: test/test-223.js         inflating: test/test-323.js      inflating: test/test-423.js       inflating: test/test.sh

使用crypt加解密

如果有一個資料夾"test" 這邊用test1234來作為密碼
加密: crypt yourpassword<archive-no-encode.tgz>archive-ecoded.tgz

$ tar -vczf test.tgz  test
$ crypt  test1234<test.tgz>test2.tgz
這樣會產生一個test2.tgz的檔案(原test.tgz可以移除了) 這個時候test2.tgz就已經加密了 如果欲對test2.tgz直接解壓縮,會出現下面錯誤訊息
# tar -xzf test2.tgz 
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
要解開的話:crypt yourpassword<archive-encoded.tgz>archive-decoded.tgz

# crypt test1234<test2.tgz>test.tgz

Connect MiCloud over SSH public key using Android

管理主機的系統管理者常會有"臨時"需要連線主機做管理的需要而輸入密碼又不是件聰明的事... 這時候SSH public key登入是管理者最常做的連線選擇... 使用SSH public key登入遠端主機也是雲端服務最常用的作法 在MiCloud上的SmartOS甚至採用特殊Key Store的認證方式 使用者任何時候加入的SSH Key都可以直接應用在主機登入...(伺服器主機端不用再寫authorized_keys)
而這次是嘗試在Android上使用ConnectBot來連線MiCloud的主機 首先需要有ConnectBot啦...(我不教這個操作喔∼) 接下來...
1. 開啟ConnectBot,點選Menu後,在跳出的Menu選單中選擇"管理公鑰"


2. 然後,輸入公鑰資訊與加密方式...




3. 與Putty相同的,ConnectBot也是採用移動的軌跡來亂數產生加密數據,所以這邊只要把手指放到藍色區域不斷移動,就可以完成產生金鑰的動作




4. 接下來是要將"公鑰"匯入MiCloud Portal,這邊在產生好的金鑰上長按後,會跳出選單,選擇複製公鑰


5. 登入MiCloud金鑰管理頁面,把剛剛複製的金鑰貼上...


6. 使用ConnectBot設定主機連線...


7.  修改連線預設使用SSH金鑰


打開編輯後,點選"使用公鑰驗證",設定預設使用金鑰連線...


8. 接下來開啟主機連線頁面,點選剛剛設定好的主機...


然後,就可以順利連線所設定的主機了...


最後,提醒一下,如果有複雜的動作要處理(例如寫個程式啦...),最好有個藍牙鍵盤...畢竟手機只是應急用的... 不要太期待他帶給你所有工作上的便利... :D

奔馳雲端(Benz-Cloud)試用

神人的推薦,聽說便宜,來看看以賓士為名的雲端有些什麼東西...
價格
一塊錢100點的經營方式,居然還有期限@@ 沒用完的話不就被充公...這點有點不平易近人啦...
提供Hosting服務(這次主要要看的),還有File跟Monitor... 其中主機1.4/hr,換算一分鐘0.023元,真的滿便宜

流量費用,每G要價5塊台幣,我也不知道貴不貴啦...但是沒有免費的喔∼ 使用前要小心內∼ 而且...這邊怎麼沒用點數計算@@ 主機費用,下面列出網站價格與規格,各式主機都有,還不錯∼而且看起來...是不論OS的計價...買Windows也一樣價格唷∼ 單位費用是真的滿殺的∼∼ :D

下面開始來玩玩他的OS...
開立主機
首先...要找到送出的按鈕在哪...找不到、找不到、找不到@@

告訴你,把64或32bit的下拉拉下來,點選ENG...(我也不知道ENG是啥...) 點選完之後,會給你一個管理者密碼... 建立主機花滿多時間的...大概要5分鐘

系統重建(Rebuild)
提供系統重建的功能,讓使用者可以回復到最初的狀態...


規格調整(Resize)


可以提供主機resize的功能,但是要重新開機...(這點應該是目前所有非Bare-Metal的虛擬方式都要重開機啦!),第三個步驟的"轉移",感覺起來怪怪的...

操控面板
看來有提供SSH中繼連線的功能,透過Applet的方式封裝基本的操作面板... 相同的技術使用,曾經在某個地方(一時間想不起來,似乎是AWS吧)看到... 不過,Console怎麼樣就是遺失模組,易用性部分,可以再補強一下...

映像檔(Image)
AMI like的服務,出現在OpenStack等新的Cloud Platform中,雖普遍出現在VMWare跟一般虛擬化的軟體中,但是公有雲中,算是很指標性的服務喔∼ 畢竟每個人可以用自己的Image來玩,是很傷成本的唷∼



基本監控
提供主機的狀態顯示,雖然不是即時顯示,但是還不錯啦∼有比沒有好... 另外,只有一個View,表示沒有辦法看到更早之前的資料...@@

防火牆設定
基本外部防火牆設定功能,讓使用者可以定義誰可以存取到內部主機的服務,而不用再透過iptables去定義...

簡易負載平衡
讓服務可以透過他來達到負載平衡,增加服務的穩定性...

設定後會有一個新的IP位置
最後…

Bash判斷參數是否存在

早上看到nixCraft的文章後,決定在這邊記錄一下...
透過之前提過的 -z "$var"可以判斷var這個變數是否存在 而很多的shell希望判斷可以再精簡一點... 所以會有結合[ test ]跟&&, ||來做流程的方式 其中: [ ] 裡面可以放test語句,執行完會傳出結果為true或false || 我比較不常用,看起來是如果前面為非則執行後面的程式段落 && 這個後面接的是當前面段落執行無錯誤時候,則執行後面程式段落
透過上面說明,使用"||"組句的話,我們可以把判斷是這樣寫:
[ -z "$var" ] || echo "Empty"     #如果var存在為非,則echo Empty
[[ -z "$var" ]] || echo "Empty"   #同上
反之,使用"&&"組句的話,可以:
[ ! -z "$var" ] && echo "Empty"   #如果var存在為是,則echo Empty
[[ ! -z "$var" ]] && echo "Empty" #同上
參考自: http://www.cyberciti.biz/faq/unix-linux-bash-script-check-if-variable-is-empty/

SmartOS上使用Github over HTTPS問題

嘗試使用SmartOS連線GitHub的HTTPS repository時候 Pull資料正常,但是Push資料時候一直有問題 找尋網路上相關錯誤訊息文章 應該是Git的版本要更新了...


再不更新Git的情況下...也可以這樣做...
直接採用Git over SSH的方式push檔案


使用Git over SSH的話,需要把公鑰放到Git上面 相關操作...這邊不細談啦...

CentOS直接寫入iptables的位置

CentOS直接寫入iptables的位置,不過不建議直接使用檔案修改 而是用iptables的指令修改,不過還是留存一下!
# vi /etc/sysconfig/iptables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT
# 設定讓使用[PORT]的服務可以通過 -A INPUT -m state --state NEW -m tcp -p tcp --dport [PORT] -j ACCEPT
# 設定讓使用[PORT2]的TCP/UDP服務可以通過 -A INPUT -p tcp --dport [PORT2] -j ACCEPT -A INPUT -p udp --dport [PORT2] -j ACCEPT
# 設定其餘服務都REJECT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

如果要檢視routing table的內容,使用Mac的朋友可以試試看:

# route -rn

會有類似下面的output:

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.42.0.252        UGSc           27        0     en0
10.42/20           link#5             UCS             3        0     en0
10.42.0.221        127.0.0.1          UHS             0        0     lo0

Ant的SCP問題

下面是一段ANT,目的是針對一堆server做程式的佈署工作 一般我們習慣用build.properties作為參數設定檔 而也可以動態的用-DKEY=VALUE作為臨時的參數輸入... 而實際上的執行檔案是build.xml...
#build.properties SERVER_LIST=11.11.11.11,11.11.11.12,11.11.11.13
USER=xxxx PASSWD=oooo TMP_FOLDER=/tmp
#build.xml <target name="Deploy">     <antcall target="Wrapper code" />
    <!-- 檢查是否有手動輸入-DSERVER=xx.xxx.xxx.xxx -->     <condition property="SERVER.set" else="false">       <isset property="SERVER"/>     </condition>     <echo>Is specify server? ${SERVER.set}</echo>
    <!-- 如指定-DSERVER=xx.xxx.xxx.xxx時候,忽略設定檔案,直接進行deploy -->
    <ac:if>       <equals arg1="${SERVER.set}" arg2="true"/>       <then>         <ac:var name="SERVER_LIST" value="${SERVER}"/>       </then>     </ac:if>
    <echo>Working Server: ${SERVER_LIST}</echo>
    <!-- 針對SERVER或參數檔設定的SERVER_LIST進行程式的部屬動作 -->
    <ac:for list=&quo…

SmartOS Snapshot

SmartOS是源自於Solaris的一個x86 Linux作業系統目前有美國Joyent與台灣MiCloud提供這樣的雲端作業系統
因為Base on ZFS的關係,有許多ZFS的系統特性 其中Snapshot是比較特殊的一個功能 以超快速的快照方式提供了作業系統當下的系統備份... 而把玩的過程中...有所發現...
在替MiCloud SmartOS製作Snapshot之後,發現在系統上多了好幾個mount point 也剛好對應到snapshot的名稱...


mount point為唯讀的,且/checkpoint目錄也有特殊權限設定...



而實際讀取其下的資料夾後發現,原來是整個系統環境... 看起來這樣的方式非常適用於提取舊的資料喔∼


上圖,注意到又有一個checkpoint資料夾嗎? 不知道會不會有loop產生(會就笨了@@...還好 :D )


ZFS是個好東西∼Mac跟Linux環境也可以安裝某些套件來存取ZFS的檔案喔∼ 詳細的運用∼以後有機會再說 :D

Nginx Rewrite

Nginx的設定檔中,可以針對不同的目的端做流量導向,或者又可以稱作是rewrite... 也就是網址重新導向的動作,設定上不難,原則上可以在server{...}中設定下面的判斷與rewrite語句即可:

if ($host ~* ^(example\.com|www\.example\.com)$ ){
  rewrite ^/(.*)$ https://example.com/$1 permanent;
}或者可用:rewrite ^ https://$server_name$request_uri? permanent;範例: server { listen 1.2.3.4:80 default; server_name example.comwww.example.com; ## redirect http to https ## rewrite ^ https://$server_name$request_uri? permanent;}
參考至:http://www.cyberciti.biz/faq/linux-unix-nginx-redirect-all-http-to-https/