文章

目前顯示的是 十二月, 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 fi

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來玩,是很傷成本的唷∼ 基本監控 提供主機的狀態顯示,雖然不是即時顯

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.

Ant的SCP問題

下面是一段ANT,目的是針對一堆server做程式的佈署工作 一般我們習慣用build.properties作為參數設定檔 而也可以動態的用 -D KEY = 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或參數檔設定的

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.com www.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/