:::

Proxmox VE 3安裝與建立OpenVZ虛擬機器 / Proxmox VE 3 Installation and Setup OpenVZ Container

Proxmox VE 3安裝與建立OpenVZ虛擬機器 / Proxmox VE 3 Installation and Setup OpenVZ Container

proxmox-logo

為了推廣Proxmox VE 3OpenVZ虛擬應用樣板的使用,這篇以圖文解說來教大家安裝Proxmox VE 3以及在Proxmox VE 3裡面建立OpenVZ虛擬機器。

To promote Proxmox VE 3 and OpenVZ virtual appliance template technology, I write this guide article to teach you install Proxmox VE 3 and show you how to use Proxmox VE 3 to create OpenVZ container (virtual machine).


技術簡介 / Introduction

Proxmox VE

Proxmox VE是Proxmox公司推出的開放原始碼虛擬機器管理系統,目前已經推出到第三版,叫做Proxmox VE3。

Proxmox VE 3是相當容易安裝與使用的虛擬機器管理系統。他能結合OpenVZ與KVM兩種技術提供IaaS層級的雲端服務。而且是開放原始碼軟體,我們可以自由下載與使用。

OpenVZ與虛擬應用樣板 / OpenVZ & Virtual Appliance Template

OpenVZ是相當成熟的虛擬化技術,架設Linux網站的效率非常高。用OpenVZ通常是架設網站伺服器。網路上提供了相當多的樣板可以下載、安裝,一個樣板就是一個完整的網站服務,例如DrupalJoomla。你只要下載樣板、建立虛擬機器、設定網路、開機,用瀏覽器打開該虛擬機器的位置,一個完整的服務就這樣建好了。

以我的經驗,一台普通的伺服器可以架設20台以上的OpenVZ,全部都能正常提供服務。相較之下,以KVM技術來架設的虛擬機器最多大概不能超過3台。

OpenVZ跟現在主流的KVM、VMware等技術不同,只能虛擬化Linux,也不能相容大多雲端平台,只能在少數雲端平台中架設,例如這次要介紹的Proxmox。

以下就教大家如何建立運行OpenVZ所需要的雲端平台Proxmox VE,以及用OpenVZ來建立虛擬機器吧。


安裝環境 / Installation Environment

2013-07-14_205049

安裝Proxmox VE 3的硬體環境建議為:

  • CPU:最好是64位元架構。雖然32位元仍可以正常運作。如果CPU支援虛擬化指令集,例如Intel VT-x,那就可以用KVM虛擬機器。但是OpenVZ不管CPU有沒有支援虛擬化指令集都可以使用。
  • 記憶體 RAM:建議大於4GB,至少也要512MB。
  • 硬碟空間:建議大於60GB,至少也要4GB。
  • 網路:要配給Proxmox VE一個IP,底下的虛擬機器也建議擁有獨立IP。(如果IP不夠,可以嘗試架設虛擬區域網路,請看我之前寫的介紹

如果在實體伺服器上安裝Proxmox VE 3,建議盡量以以上參數為主喔。

使用VirtualBox安裝Proxmox VE 3 / Install Proxmox VE 3 on VirtualBox

你也可以用VirtualBox來架設Proxmox VE,提供自己測試使用。以下我就是用VirtualBox來架設Proxmox VE,配置參數為:

  • 作業系統:Debian (64 bit)
  • 網路Host-only 「僅限主機」介面卡。這是重點,Proxmox VE在Host-only底下預設IP就會是192.168.56.101。
  • 硬碟:2TB
  • 掛載光碟proxmox-ve_2.3-ad9c5c05-30.iso (MEGA備份)

然後接著把虛擬機器開機,就開始來安裝Proxmox VE 3囉。

Step 1. 安裝Proxmox VE 3 / Install Proxmox VE 3

開機之後,虛擬機器會因為光碟引導的關係,出現以下Proxmox安裝歡迎畫面。

2013-07-14_012547

按下Enter之後進入下一個畫面。一開始會因為Proxmox VE要從DHCP抓取IP的關係,需要稍微等待一下。然後接著會顯示授權條款,按Next繼續。

2013-07-14_012737

然後接著會顯示Proxmox VE的說明,按Next繼續。

2013-07-14_012812

然後接著要輸入鍵盤配置。在Country輸入Taiwan,Proxmox VE會自動辨識我們的鍵盤是U.S. English。按Next繼續。

2013-07-14_012851

接下來要輸入密碼跟E-Mail。密碼兩次都要相同,在此以「password」為例子作為Proxmox VE的密碼。E-Mail是給系統通知時寄送通知管理者的信箱位置。輸入完畢後按Next繼續。

2013-07-14_013320

接下來設定網路。Hostname (FQDN)必須是完整的網址,如「promxox.demo.com」。沒有在DNS上正式申請也無所謂,主要是辨識機器之用。下面是網路的設定,這是由DHCP抓取而來的設定。請在這裡就確定Proxmox VE的網路位置,不然之後很難修改。設定完畢之後按Next繼續。

2013-07-14_013412

接著開始安裝,大概等個30分鐘。

2013-07-14_013423

安裝完成,按Reboot重新啟動。重新啟動之後記得要把Proxmox VE的光碟拿掉喔。

2013-07-14_101925

重新啟動之後就會看到Proxmox VE的指令列端介面。至此為止Proxmox VE安裝就算完成囉。

2013-07-14_102048

Step 2. 進入Promox VE網頁管理介面 / Proxmox VE Central Web-base Management

Proxmox VE是沒有桌面端操控介面,大部分操作是透過網頁管理介面來進行。你看到指令列端的歡迎訊息寫著「https://192.168.56.101:8006」就是它的網頁管理介面的位置。以下操作都是在網頁管理介面中進行。我是使用Firefox 22.0來開啟Proxmox VE 3的網頁管理介面。

image

開啟網址:「https://192.168.56.101:8006」(注意是https,不是http)之後,你會先看到「這個連線未受信任」的訊息。這是因為Proxmox VE使用未受認證的SSL來連線。你可以花錢購買一個SSL認證來讓Proxmox VE連線狀況正常,不過通常我們會讓Firefox把它加入安全例外。

作法如下圖,步驟如下:

  1. 我了解此安全風險
  2. 新增例外網站
  3. 確認安全例外

2013-07-14_102704

接著進入Proxmox VE 3的網頁管理介面。登入畫面要你輸入帳號密碼。預設帳號密碼如下:

  • User name: root
  • Password: password (就是上面安裝Proxmox VE時要你輸入的密碼)

2013-07-14_102734

接著會正式進入到Proxmox VE網頁管理介面,這樣就可以進行虛擬機器的建立、管理等囉。

2013-07-14_102745

Step 3. 上傳虛擬應用樣板 / Upload Virtual Appliance Template

要用OpenVZ建立虛擬機器,必須要從虛擬應用樣板開始著手。請先從以下網址先下載你需要的樣板吧:

以下介紹是用Drupal的虛擬應用樣板debian-6.0-drupal_6.26-2_i386.tar.gz為例子介紹。

首先是在Proxmox VE的網頁管理介面中,從左邊的Server View裡找到local (proxmox)這個本機節點(因為Proxmox VE可以串連很多台Proxmox VE做集叢式管理,所以未來還可以加入其他節點),然後選擇標籤「Content」,再按下面的「Upload」開啟上傳對話視窗。

2013-07-14_102925

先選擇上傳檔案類型為「OpenVZ template」,也就是OpenVZ的虛擬應用樣板。再來選擇剛剛你下載的樣板檔案debian-6.0-drupal_6.26-2_i386.tar.gz,然後按下Upload。

image

上傳完成之後,Content裡面就有一個樣板了。確認樣板存在後,我們就可以來建立OpenVZ的虛擬機器囉。

Step 4. 建立OpenVZ虛擬機器 / Create OpenVZ Container (Virtual Machine)

OpenVZ的虛擬機器叫做Container,簡稱CT。有了虛擬應用樣板之後,你可以在Proxmox VE的網頁管理介面右上角的「Create CT」來建立OpenVZ的虛擬機器。

2013-07-14_210505

建立步驟是以精靈的方式一一跟你確認虛擬機器的參數。

第一步 General:主要要確認Hostname(主機名稱)與Password。主機名稱我輸入drupal,表示這是一個專門運作Drupal系統的虛擬機器。密碼我設為「password」。然後按Next進入下一步。

2013-07-14_210604

第二步 Template:選擇剛剛上傳的虛擬應用樣板debian-6.0-drupal_6.26-2_i386.tar.gz吧。按Next進入下一步。

2013-07-14_210641

第三步 Resources:此處設定記憶體、硬碟大小與CPU用量。

  • 記憶體:Memory是記憶體、Swap是以硬碟模擬的記憶體,在Linux中兩個參數最好相等。OpenVZ技術的記憶體是採共享的機制,因此上限只要不要超過實體機器記憶體的數量就可以了。
  • 硬碟:Disk size (GB),以GB為單位。用多少就是多少,沒有KVM或VMware那種動態硬碟,越用會讓硬碟越來越大的問題。
  • CPUs:使用CPU的額度,多核心CPU中才會去設定。

對Durpal來說,除了硬碟可以考慮設置大一點之外,其他都用預設參數即可。設定好之後按Next進入下一步。

2013-07-14_210654

第四步 Network:請設定固定IP,以Routed mode (venet)網路卡的形式,給予一個固定的IP吧。因為我現在是在VirtualBox的Host-only網路配置下,所以可以給它一個192.168.56.152的IP使用。這個IP非常重要,待會開啟Drupal就要用這個IP來連線喔。設定好之後按Next進入下一步。

2013-07-14_210725

第五步 DNS:設定DNS資訊。沒有特別需要用Domain Name操作什麼的話,此處可以先不設定。這些參數之後還是可以透過Proxmox VE的網頁管理介面來修改,就算設錯也沒關係。在此我就不設定,直接按Next進入下一步。

2013-07-14_210748

最後是確認OpenVZ虛擬機器的資訊,沒問題就按Finish開始建立虛擬機器。

2013-07-14_210757

建立虛擬機器大概不到五分鐘,出現「TASK OK」就算建立完成。

2013-07-14_210843

建立完成之後,你會發現左邊的ServerView多了一台100 (drupal),這就是剛剛建立的OpenVZ虛擬機器。

接著我們要先設定他會在Proxmox VE啟動的時候自動開機。點入100 (druapl)之後,進入Options,在Start at boot那項雙擊兩下滑鼠,編輯該選項。

image

將Start at boot打勾,按OK完成設定。

image

然後我們還要補設定一個網路參數。到Network頁面中,在Add按鈕下新增Network Device (veth)。

image

新增Name為eth0的網路卡。按下Add之後確定。

image

最後按下Start啟動虛擬機器。

image

到此為止,OpenVZ的虛擬機器就建立完成囉。

Setp 5. Drupal安裝與使用 / Drupal Installation & Usage

還記得剛剛建立OpenVZ虛擬機器的時候,我們設定了「192.168.56.152」作為它的IP嗎?一般來說,只要直接開啟這個IP,就能夠順利使用虛擬應用樣板的系統。

不過在使用之前,我們最好還是先閱讀一下Drupal虛擬應用樣板介紹網頁,看看我們還得要做些什麼東西才能使用Drupal。

image

根據Drupal虛擬應用樣板介紹網頁的敘述,接下來還要安裝Drupal的步驟。請用瀏覽器開啟「http://192.168.56.152/install.php

image

進入Drupal的安裝畫面。安裝步驟很容易,我就不講了,可以參考sunchiahom的Drupal 6安裝流程介紹

最後安裝完成之後,就可以直接用 http://192.168.56.152 來連線囉。

image

Step 6. 用指令列操作OpenVZ虛擬機器 / OpenVZ Container Console

Proxmox VE提供了主控台(Console)端的操作介面,讓我們能以指令列操作OpenVZ虛擬機器。如果你不是熟悉Linux的網管人員,可以不需要進入這一步操作。

開啟方式是在該虛擬機器中,按下右上角的Console。

image

接著會跳出一個Console端的視窗。Console是以Java Applet執行,常常會有因為太久沒更新過期而Firefox禁止我們開啟的現象。你可以按左上角的紅色積木來啟用Java。

2013-07-14_203127

啟用之後,Java也會跳出安全警告。按下「繼續」進入Console端。

2013-07-14_203141

以下就是Console端的畫面。登入帳號密碼為:

  • login: root
  • password: password (就是剛剛建立OpenVZ時設定的Password)

2013-07-14_205444


下一步:Proxmox VE結合主流的雲端平台 / Next: Integrate Proxmox VE with Cloud Platform

我上面也有提到,Proxmox VE的OpenVZ虛擬機器跟現在主流的雲端平台,像是Open StackOpen CloudOpen Nebula都不直接相容。Open Nebula可以安裝OpenVZ Plugin,可是手續挺複雜的樣子。

因此在我看來,最簡單的整合方式還是直接以KVM技術架設Proxmox VE,然後用Proxmox VE來管理底下的OpenVZ虛擬機器。概念圖如下:

image

上述架構中,主要是以Ezilla(使用OpenNebula雲端平台)為主的架構,然後之中架設虛擬機器安裝Proxmox VE,再到Proxmox VE中建立OpenVZ虛擬機器。這時Proxmox VE跟OpenVZ虛擬機器都會是列在同一個區域網路,可以經由Ezilla統一管理。但是管理介面就會區隔開來,平時主要是以Ezilla來管理,而要用OpenVZ虛擬機器時,再進到Proxmox VE來管理。

這個方法看起來可行,可是實際上還沒做過。這之間還有很多網路問題,像是Proxmox VE會需要多個連接埠來提供Console端的連線,在上述架構中就會遇到問題。不過Console端其實很少使用,平常都會用直接透過SSH連線操作OpenVZ虛擬機器,所以不用Console端也沒問題。

那剩下就是實作了,希望最近有機會能把它完成。

(more...)

將OpenVZ架設的虛擬機器轉換為虛擬應用樣板的作法 / Package OpenVZ Container to Template

將OpenVZ架設的虛擬機器轉換為虛擬應用樣板的作法 / Package OpenVZ Container to Template

800px-OpenVZ-logo

使用Proxmox VEOpenVZ建立好虛擬機器(Container),並在裡面安裝好必要的服務之後,接著可以把它轉換成虛擬應用樣板(template),方便其他人從樣板建立起一模一樣的虛擬機器。以下這篇我就教大家在Proxmox 1.9版底下將OpenVZ的虛擬機器轉換成虛擬應用樣板的方法。

Once you create a OpenVZ container with a application system in Proxmox VE, you can package the container to a template and distribute it to others for installing and using. I wrote a script to do this job. Following is the usage guide.


背景與動機 / Background

由於Proxmox VE用OpenVZ架設起來的虛擬機器(Container)運作效率高、速度又快,所以後來我很多服務都以OpenVZ建立起來,甚至原本是用KVM架設的服務,後來也一併轉換成OpenVZ,運作效率也比KVM高上許多。

我們這邊時常需要將同樣的系統複製很多份,老師上課之用。原本我也可以用Proxmox VE的匯入與匯出來複製虛擬機器,但那究竟不太方便。我當然還是希望能做到像是Turnkey Linux那樣,把服務都包成一個漂亮的虛擬應用樣板,方便給人下載與安裝。

我之前文章中也想過建立虛擬應用樣板。如果要從實體機器或是其他虛擬機器中建立樣板,的確是不容易。但是如果要從OpenVZ建立好的虛擬機器中建立樣板,那就不難了。只要用tar打包起來,並依照正確的方式命名即可。

這篇就是在講如何從OpenVZ建立的虛擬機器(Container)中打包成虛擬應用樣板(template)。

Proxmox VE準備 / Proxmox VE Preparation

image

要使用OpenVZ,Proxmox VE絕對是目前的首選。這篇的指令也是基於Proxmox VE 3來測試。但是因為Proxmox VE 1跟2的目錄結構都一樣,所以也一樣可以使用這篇文章的教學來製作虛擬應用樣板。至於其他的OpenVZ系統,我就不敢保證了。

因為我們要把既有的虛擬機器轉換成虛擬應用樣板,所以Proxmox VE裡面必須要有一台以OpenVZ架設的虛擬機器。在此我用VMID (虛擬機器的ID編號) 100的ownCloud作為轉換的對象。

image

打包的動作是要用指令列來操作,而且必須要有root權限。我建議你使用Proxmox VE的SSH通訊協定連線操作比較方便。上圖是我使用的是mRemoteNG中的PieTTY來連線。

虛擬機器轉換虛擬應用樣板操作 / Packager Script Usage Guide

登入root之後,請輸入以下指令下載我製作的轉換腳本檔:

然後把該腳本檔加上可以執行的權限:

chmod +x openvz_CT_to_template.sh

再來執行腳本檔:

./openvz_CT_to_template.sh

腳本檔會顯示歡迎訊息,然後提示你輸入OpenVZ虛擬機器的VMID,預設編號為100:

Please enter OpenVZ Container's VMID: [100] 

然後它會檢查你的Proxomx VE有沒有這台虛擬機器,有的話它接著會問你樣板名稱的一些訊息。OpenVZ的樣板是仰賴檔案名稱來辨識訊息,必須要輸入正確的格式,Proxmox VE才能正確地使用樣板。

腳本檔會先問你的作業系統及其版本,例如centos-5、debain-6.0、ubuntu-10.04。預設使用centos-5。注意,裡面要包含「-」。

Please enter template OS (ex: centos-5, debain-6.0, ubuntu-10.04): [centos-5] 

接著會問你樣板的名稱。此處請輸入你的應用系統的名字,例如standard、moodle、dspace-dlll。預設使用custom。注意,裡面不可以包含「_」。

Please enter template name (ex: standard, moodle, dspace-dlll): [custom] 

接著是版本名稱。例如5.6-1、10.04-4。預設使用1.0-0。注意,裡面必須包含「.」跟「-」。

Please enter template version (ex: 5.6-1, 10.04-4): [1.0-0] 

接著問你樣板的架構,例如i386。預設也是用i386。

Please enter template arch. (ex: i386): [i386]

然後最後確定一下要轉換的項目無誤,腳本檔就會開始打包,並存放到Proxmox VE放置樣本檔的目錄中了。

轉換腳本檔 / Packager Script

我已經將轉換腳本檔openvz_CT_to_template.sh上傳到GitHub,這連結中的版本會是最新的。以下是目前腳本檔的內容,你可以從註解來看每一段程式要做的工作:

   1: #!/bin/bash
   2: # Program:
   3: #   For Proxmox VE (1~3). Convert OpenVZ Container to Template
   4: #   在Proxmox VE (1到3版都可以使用)中,將OpenVZ的虛擬機器(Container)轉換成虛擬應用樣板(Template)
   5: # History:
   6: # 2013/07/13    Pulipuli Chen   First release
   7:  
   8: # 歡迎訊息
   9: echo "========================================="
  10: echo "  OpenVZ Container to Template Packager"
  11: echo "========================================="
  12:  
  13: # 宣告目錄參數
  14: container_dir=/var/lib/vz/private/
  15: template_dir=/var/lib/vz/template/cache/
  16: if [ ! -d $container_dir ] || [ ! -d $template_dir ]; then
  17:     echo "This script only for Proxmox VE 1~3"
  18:     echo "http://www.proxmox.com/downloads/category/iso-images-pve"
  19:     echo "Abort"
  20:     exit 0
  21: fi
  22:  
  23: # 請輸入要轉換的VMID
  24: read -p "Please enter OpenVZ container's VMID: [100] " vmid
  25: if [ -z $vmid ]; then
  26:       vmid=100
  27: fi
  28:  
  29: # 回傳訊息,告知使用者要轉換的VMID
  30: echo "You want to package container VMID $vmid to template"
  31:  
  32: # 宣告虛擬機器的目錄
  33: ct_dir=$container_dir/$vmid
  34:  
  35: # 檢查該VMID的虛擬機器是否存在
  36: if [ -d $ct_dir ]; then
  37:  
  38:     # 如果存在的話
  39:     
  40:     # 詢問作業系統與其版本
  41:     read -p "Please enter template's OS and version (ex: centos-5, debain-6.0, ubuntu-10.04): [centos-5] " template_os
  42:     if [ -z $template_os ]; then
  43:       template_os=centos-5
  44:     fi
  45:     until [[ "$template_os" == *"-"* ]]; do
  46:         echo "Template's OS and version should include '-', ex: centos-5, debain-6.0, ubuntu-10.04. "
  47:         read -p "Please enter template's OS and version again : [centos-5]" template_os
  48:         if [ -z $template_os ]; then
  49:           template_os=centos-5
  50:         fi
  51:     done
  52:  
  53:     # 詢問應用系統的名字
  54:     read -p "Please enter template's application name (ex: standard, moodle, dspace-dlll): [custom] " name
  55:     if [ -z $name ]; then
  56:       name=custom
  57:     fi
  58:     until [[ "$name" != *"_"* ]]; do
  59:         echo "Template's application name should NOT include '_', ex: standard, moodle, dspace-dlll."
  60:         read -p "Please enter template's application name again : [custom] " name
  61:         if [ -z $name ]; then
  62:           name=custom
  63:         fi
  64:     done
  65:  
  66:     # 詢問應用系統的版本號
  67:     read -p "Please enter template's application version (ex: 5.6-1, 10.04-4): [1.0-0] " version
  68:     if [ -z $version ]; then
  69:       version=1.0-0
  70:     fi
  71:     until [[ "$version" == *"."*"-"* ]]; do
  72:         echo "Template's application version should include '.' and '-', ex: 5.6-1, 10.04-4."
  73:         read -p "Please enter template's application version again : [1.0-0] " version
  74:         if [ -z $version ]; then
  75:           version=1.0-0
  76:         fi
  77:     done
  78:  
  79:     # 詢問樣板的架構
  80:     read -p "Please enter template's architecture (arch.) (ex: i386): [i386] " template_arch
  81:     if [ -z $template_arch ]; then
  82:       template_arch=i386
  83:     fi
  84:  
  85:     template_tar=${template_os}-${name}_${version}_${template_arch}.tar.gz
  86:  
  87:     # 確認轉換項目
  88:     read -p "Do you wish to package container VMID $vmid to template $template_tar? [Y/n] " RESP
  89:     if [ "$RESP" = "n" ]; then
  90:       echo "Abort"
  91:       exit 0
  92:     fi
  93:  
  94:     # 檢查是否有同樣名稱的樣板
  95:     template_path=${template_dir}${template_tar}
  96:     if [ -d $template_path ]; then
  97:         read -p "${template_tar} existed. Do you wish to overwrite it? [Y/n] " overwrite
  98:         if [ "$overwrite" = "n" ]; then
  99:             echo "Abort"
 100:             exit 0
 101:         fi
 102:     fi
 103:  
 104:     # 停止運作中的虛擬機器
 105:     echo "Stop VMID $vmid..."
 106:     vzctl stop $vmid
 107:  
 108:     # 開始進行轉換
 109:     echo "Start to package VMID $vmid to template $template_tar ..."
 110:     cd $ct_dir
 111:     tar -czvf --overwrite ${template_path} ./ 
 112:  
 113:     # 完成訊息
 114:     echo "Package complete!"
 115:     echo "You can use template $template_tar in your Proxmox VE now."
 116:     echo "Template location path is $template_path"
 117: else
 118:  
 119:     # 如果沒有該虛擬機器,則停止腳本檔
 120:     echo "VMID $vmid not exist"
 121:     echo "Abort"
 122: fi

感謝鳥哥的Shell Scripts教學還有Adam Bellaire的萬用字元教學,這次複習了Shell Scripts很多指令,包括read、test判斷式、until,感覺又對Linux了解更多了一點。Linux的Shell Scripts真是強大,好用。


結語:還要加上系統更新功能 / Conclusion: Need System Update Function

系統整個打包成OpenVZ的虛擬應用樣板之後,我們就能夠方便地把完整的系統提供給其他人使用。這時候再加上系統更新功能,讓他能從GitHub下載最新版程式碼到虛擬機器上,再進行編譯、安裝等動作,那麼就能確保使用者手上拿到的虛擬機器會包含目前最新的程式碼。

實際上我已經做了一個DSpace-DLLL的OpenVZ虛擬應用樣板:centos-5-standard_1.0-0-dspace-dlll.tar.gz。樣板檔案有2.2GB之大,但已經比KVM版本的3.69GB還要小很多了。只要用dspace登入後輸入「./update_system.sh」,就會自動從GitHub下載程式碼、編譯並重新啟動系統喔。

我開始感覺到自己也逐漸邁入一個產品發佈的流程中。實在是很有趣。以後也會逐漸朝向把做好的系統打包成OpenVZ,再搭配GitHub更新系統的功能,然後把這樣子完整的虛擬機器發佈給要使用的人。

可是光有OpenVZ虛擬應用樣板還不購,我還還缺乏Proxmox VE的安裝教學。以後有機會再來寫吧。


修改記錄

  • 20130723:將腳本下載網址從https改成http,這樣才能正常下載。而且為文章補上之前忘記加入的類別。
(more...)

Sublime Text 2取消更新通知的方法 / Disable Sublime Text 2 “Update Available” notification

布丁布丁吃布丁

Sublime Text 2取消更新通知的方法 / Disable Sublime Text 2 “Update Available” notification

image

文字編輯器中的神器Sublime Text 2最近推出更新版本了,而編輯器在每次開啟時都會跳出提醒視窗叫你更新。如果沒有堅持要更新的話,以下我將介紹關閉Sublime Text 2通知更新的方法。

Sublime Text 2's new version comes up recently. If you don't want to upgrade Sublime Text 2, you can turn off the upgrade notification by modifying the configuration. Following is the guide to modify the configuration.


更新通知 / Update Available

image

最近因為Sublime Text 2推出了新版本,所以每次開啟Sublime Text 2的時候,它都會跳出更新通知:

Update Available

A new version of Sublime Text 2 is available, download now?

我用現在版本用得好好的,沒特別想更新,就覺得這個更新通知真是擾人,真想關掉它。

開啟Settings-User / Open Settings-User

image

首先是開啟工具列上的「Preferences」,然後進入「Settings-User」(設定 - 使用者)。因為我的Sublime Text 2被我設定過中文化了,所以這裡顯示的是「設定 - 使用者」。

加入設定"update_check": false / Add Configuration: "update_check": false

image

Settings – User的內容是一個JSON設定檔。

Sublime Text 2就是全部都以這種設定檔來調整系統的功能,跟傳統Windows軟體上透過GUI來操作設定的方式有很大的差異,一開始會有點不習慣。而在這裡也不會顯示所有參數,如果要關閉更新的話,我們需要額外加入「"update_check": false」的設定。

上圖加入設定之後會變成以下。注意紅字的地方,還有一個逗號:

{
"color_scheme": "Packages/Color Scheme - Default/Slush & Poppies.tmTheme",
"font_size": 14,
"ignored_packages":
[
"Vintage"
],
"update_check": false
}

改完之後會變成下圖,直接儲存就可以了。

image

這樣子以後開啟Sublime Text 2的時候,它就不會再跳出要你更新的通知囉。


資料來源 / Solution From Sublime Forum

以上的解法來自於Sublime Forum中的討論串「Disable "Update Available" pop up?」,感謝NikKlaus的解說。

更新記錄

  • 2013/7/14 當初這篇寫得有點匆促,現在多補一些介紹,讓整篇看起來有頭有尾比較完整。
(more...)

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

image

Zentyal是一個強大的路由器套裝軟體,他也提供了客製化製作模組的功能。我參考Zentyal的說明建立了一個修改SSH連接埠的功能,並記錄一下製作模組時的一些步驟。

Zentyal is a powerful Router and could install custom module. Base on Zentyal module development tutorial, I created a SSH module for modifying SSH port. Following is my create steps.


安裝Zentyal / Install Zentyal & Configuration

image

我安裝的是zentyal-3.0-2-amd64.iso,Zentyal 3.0 64位元版本。安裝在VirtualBox上,並配置兩張網卡:eth0為Host-only,設定為內網;eth1為NAT,作為外網。

我將預設帳號設為Linux的root群組,以省去每次都要sudo的困擾。所以下指令我都不用sudo,因為已經假設是root權限了。

然後我也關閉了Zentyal的桌面功能,作法參考這篇,語法是:

sudo mv /etc/init/lxdm.conf /etc/init/lxdm.conf.nostart

最後我安裝了pound作為後續研究的需要,語法是:

apt-get install pound

Zentyal雖然不難裝,但是也有些稜稜角角的小細節需要額外下指令去克服。詳細安裝細節此處就省略。

Zentyal模組開發教學 / Zentyal module development tutorial

Zentyal已經提供了模組開發教學的網頁文件。我大致上是照著這個步驟來操作,不過有遇到一些問題,此篇一一記錄細節。

安裝開發環境 / Development Environment

要開發Zentyal的模組需要安裝很多東西,以下列出我安裝的東西:

apt-get install build-essential gcc zbuildtools fakeroot

然後在家目錄中下載Zentyal的鷹架工具skel,並調整鷹架工具的權限:

wget https://raw.github.com/Zentyal/zentyal/master/extra/scripts/zentyal-module-skel
chmod +x zentyal-module-skel

這樣就準備好可以開發了。

建立SSH模組鷹架 / SSH Module Scaffolding

我們可以用鷹架工具skel來建立SSH模組鷹架。現在位置是在家目錄(cd ~)底下,指令為:

./zentyal-module-skel SSH ssh

然後就冒出一個空的模組啦。這到這邊為止的進度是教學中的Scaffolding

修改SSH模組 / Revise SSH Module

鷹架模組無法正常運作,所以我們要進行修改。修改的方式教學中寫得很清楚,請看這個網頁。修改之後的結果請看我上傳到GitHub的程式碼

主要修改的程式為:

跟教學文件相比,修改的差異在於設定檔是SSH的/etc/ssh/sshd_config,而參數的樣板service.conf.mas也差異很大。

必須特別要說明的是在參數樣板中要加入#開頭的註解文件時,必須要用以下語法來加入:

% print "# the setting of \"PermitRootLogin without-password\".\n";

注意雙引號""中間要記得脫逸,還有最後要加上\n表示換行。

編譯並安裝SSH模組 / Compile & Install SSH Module

編譯的方法是先移動到模組目錄,然後輸入zentyal-package指令:

cd ~/ssh
zentyal-package

編譯成功的話,模組目錄底下會冒出debs_ppa,裡面是可以安裝的檔案。再來就是安裝編譯好的檔案:

dpkg -i ~/ssh/debs-ppa/zentyal-ssh_3.0_all.deb

如果安裝時沒有特別的錯誤,那就是安裝完成了。我猜這個安裝檔應該可以轉給其他Zentyal系統,讓他們也能安裝你自己製作的模組。

啟用SSH模組 / Enable SSH Module

image

安裝好SSH模組之後,導覽列Core底下會出現SSH。但是它目前還沒啟動,要先到Module Status中,在SSH的Status裡打勾,然後再右上角Sava changes。

這樣就之後就可以正常使用SSH模組了。


結語:只是開始 / Conclusion: Just Begin…

摸了一整天總算搞懂怎麼修改Zentyal。意外地發現它的工具寫得很好用,也不難理解。只是一些細節它沒有說明,讓我試誤了好一陣子。這些細節解決之後,我想要開發新功能應該是得心應手吧。

我目前想要做一個整合pound反向代理伺服器的功能。然後再做一個DNS + NAT Port Forwarding + Reverse Proxy綜合控制的介面,讓管理者可以一口氣在一個介面設定這些東西。

不過目前進度到這邊得暫停來做一下開會的準備了orz

(more...)