:::

Proxmox修復OpenVZ虛擬機器使用Ubuntu 12.04/10.04無法在console顯示的問題

Proxmox修復OpenVZ虛擬機器使用Ubuntu 12.04/10.04無法在console顯示的問題

image

Proxmox VE是虛擬機器運作環境的一種平台,其特色是支援了容器虛擬化技術OpenVZ。OpenVZ可以用較少(比起VMware之類的全虛擬化)的檔案建立一個高效能的獨立虛擬機器。然而OpenVZ並非是一種全虛擬化的技術,在運作各個系統時難免會遇上一些問題,需要手動修正。

這篇是講以OpenVZ建置Ubuntu 12.04/10.04虛擬機器時,修復console (控制台)無法順利使用的問題。問題的解法是來自於Proxmox的說明網頁,基本上照著它的作法並沒有錯,我只是增加一些額外的說明而已。


問題敘述:console卡死在apache2

20121221-230506

這次我在Proxmox VE 2.2版中安裝ubuntu-12.04-standard_12.04-1_i386.tar.gz樣板建立起Ubuntu虛擬機器。建置過程順利,但是卻無法順利進入console(控制台)。如上圖所示,畫面卡在以下訊息:

* Starting web server apache2                   [ OK ]

看監控表,虛擬機器是有正常運作,可是實際上卻不能使用,怎麼會這樣呢?我找了好久才發現原來這是Ubuntu的桌面無法配合console顯示的問題。

解決方法:調整Ubuntu的tty1.conf

首先,先登入Proxmox VE伺服器,我們從伺服器來進入Ubuntu虛擬機器修改。

查詢Ubuntu虛擬機器編號

你必須先知道Ubuntu虛擬機器的編號,你可以輸入vzlist指令來查詢:

proxmox-ve:~# vzlist
     CTID      NPROC STATUS    IP_ADDR         HOSTNAME
      108         23 running   192.168.9.20    ubuntu-1204.proxmox.com
      109         18 running   192.168.9.21    centos63-64.proxmox.com
      111         15 running   192.168.9.23    centos5-64.proxmox.com
      114         14 running   192.168.9.30    deb6-32.proxmox.com
      115         15 running   192.168.9.31    deb7-32.proxmox.com
      122         14 running   192.168.9.36    deb5.proxmox.com

從上面的例子中你可以看到ubuntu1204.proxmox.com的編號是108

進入Ubuntu並修改tty1.conf

接著輸入vzctl enter 108來進入Ubuntu虛擬機器:

proxmox-ve:~# vzctl enter 108

順利的話,你就可以看到以下訊息:

root@ubuntu-1204:

這表示你進到Ubuntu虛擬機器了,接著來修改tty1.conf吧。tty1.conf的檔案路徑位於「/etc/init/tty1.conf」:

root@ubuntu-1204:/# vim /etc/init/tty1.conf

你會看到以下畫面:

image

現在要把這個檔案的內容改成以下設定:

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
 
start on stopped rc RUNLEVEL=[2345]
 
stop on runlevel [!2345]
 
respawn
exec /sbin/getty -8 38400 tty1

儲存該檔案,然後重新啟動Ubuntu伺服器吧。

root@ubuntu-1204:/# reboot

然後你就可以在console看到Ubuntu虛擬機器順利啟動了。

20121221-230123

(more...)

從散步到跑步

布丁布丁吃布丁

從散步到跑步

Screenshot_2012-12-21-18-22-45

最近回到政大的時候,也想要試著養成每日運動的習慣。今天也是沿著景美溪河岸跑跑看,感覺還不錯。不過跟之前當兵相比,這種程度的跑步量還真是相差很多啊XD

這篇想要記錄一下我對於跑步這件事情的一些想法,純粹閒聊而已。


在山路散步

262671_1771953106347_3676212_n

在政大的期間,由於工作的地方是位於山腰上的百年樓、住的地方又是位於山頂的自強宿舍,所以大部分的時候我都是走路上下山。

政大有校內公車,車資1元,非常受學生歡迎。但是我覺得比起在公車上人擠人,我更喜歡像是烏龜一樣,一步一步地踏著傾斜的山路上山。

DSC_0305

我喜歡悠閒地在路上慢慢地晃著,偶爾抬頭看看天空、夕陽與晚霞,偶爾看看四周綠意盎然的山林,偶爾也可以沉浸於手上的手機、平板電腦或PSP(←不良示範)。

總覺得,這樣子在山路上散步,就已經算是一種運動了。可是在軍中,正常體位如我,徒手三千公尺跑步只是基本要求。

新訓的跑步訓練

剛入伍的時候要經過新兵訓練,簡稱新訓。新訓會格外要求各位阿兵哥的基本體能,對此進行嚴格的訓練。

我聽過許多人為了怕當兵時跑不了三千公尺,在入伍前就開始訓練。但是我進去之後才知道,軍中也不會要你馬上就跑三千公尺,而是從一千二百公尺左右的長度逐漸增長,最後才是跑完整的三千公尺。

嗯?一千兩百公尺大概有多長呢?比較一下今天跑步的地圖,我想一千兩百公尺大概就是從政大前門水平移動到蔣公銅像的後門這麼長吧。儘管政大因為是山路的關係,並沒有像是直接跑在平地那麼輕鬆,但是以前從前門到後門都要騎車的距離,居然新訓時就要做到了!

而且很遺憾的,因為種種誤會,直到我真正跟大家進行跑步訓練的時候,大家已經從兩千公尺起跳了。兩千公尺大概又有多長呢?差不多就跟我今天跑的距離一樣,從百年樓往後門跑、下景美溪河岸、一路跑到道南橋這樣的程度。

平常沒在跑步的我,第一次就跟大家帶隊跑步兩千公尺,實在是非常地吃力。帶隊跑步的意思是,一百二十幾人排成四路隊形,必須腳步劃一地進行跑步訓練。不光是跑步,我們也要藉由大聲喊出口號來維持隊形與統一步伐,以避免跑步時造成混亂、採到別人的腳步。

一邊跑步、一邊跟上大家的腳步、還要一邊喊口號,跑步結束之後走路緩衝的時候,我是直接被班長扶到救護車去休息,整個人完全撐不下去。

 

但是,那的的確確是個新奇的體驗

「加油!撐下去!」

老實說,雖然身體沒辦法完全地跟上大家的腳步,但是我不但不討厭帶隊跑步,反而覺得這是很有趣的一項活動。這麼多人跟你一起跑步,這大概也是只有當兵時才會經歷的體驗了。

新訓時並不特別強調速度,只要大家都能順利跑完,帶隊者也不會刻意刁難。跑個幾天之後,就算不運動如我也逐漸地能夠適應。甚至有種如果不是刻意要求速度的話,似乎不管跑多遠我都做得到的感覺。

更讓我覺得有趣的地方,是在於一起跑步的同袍們。

帶隊跑的用意不僅僅是管理方便,由於大家要彼此配合奔跑,有時候你會有種「被隊伍帶著跑」的感覺,而激勵自己跑得比原本的狀況還要好。

另一種情況不是「被隊伍帶著跑」,而是「在隊伍中往前跑」。儘管帶隊跑會要求隊形,但是跟不上的人終究也只能逐漸脫隊,此時後面的人就會在隊伍中慢慢地往前推進。那種超越別人的瞬間,也算是自己一個鼓勵。

不過,比起超越其他人,「加油,撐下去!」地鼓勵快要撐不下去的同袍是我更常作的事情。

 

我們要一起跨越終點線,加油!

下部隊之後的跑步訓練

新訓之後我又被分發到二階段訓。雖然那時候也是要求每天下午跑步,但是距離大概只有兩千公尺,與新訓時的三千公尺有相當大的差別。

那時候就開始有種不跑一下身體難以舒展的感覺,在跑完基本要求的兩千公尺之後,我偶爾也會自己再去多跑個一陣子。那時候也認識了幾位喜愛跑步的朋友,有人一起跑步、聊天,感覺也不錯。

儘管新訓與二階段訓對於體能要求都是照表抄課,但是下部隊之後的體能訓練,則是端看上面長官的重視程度。

我剛下去的時候剛好遇到體能鑒測,那時候也是下午要求統一集合帶操、跑步。之後的體測要求、聯隊對體能的重視等等,也都會引起一陣跑步訓練的風潮。

不過除此之外,大部分時候在路上跑步的人都是少數。平常工作已經很累了,下班之後更是不會想要訓練體能。因此下部隊之後,不僅帶隊跑的機會不多,種種業務工作纏身的情況下,下班之後要跑步也很困難。

觀賞不同的景色

有陣子,我幾乎覺得自己退回到跑不了三千的程度了。還好,跟我同辦公室的同梯,他是個喜歡運動的人──比起在辦公室工作來說更喜歡運動XD

有一次在他的推薦之下,我跟他一起沿著機場外圍的道路跑步。跟以前繞著固定道路跑個三四圈的情況不同,外圍道路道路寬敞、人車稀少,也不會有種一直在原地打轉的感覺。我們就是只跑一圈,但是是非常大的一圈,光這樣跑下來就已經快要四千公尺了。

我們並沒有刻意在意速度,一邊聊天一邊慢慢跑地跑完全程。

 

「比起跑固定的地方,」同梯他說,「我更喜歡在這邊跑步,可以一邊觀賞不同的景色。」

 

他說的這番話,讓我印象十分深刻。

即使在這個營區中服兵役已過半載,我卻還有許多地方尚未涉足。像是這外圍道路,要不是他找我來這跑步,我自己可能從來不會想要來這邊看看。

經他點醒之後,跑步對我來說,已經不只是一項單純的體能訓練,而包括了擴大視野的這層意義。

找尋政大的景色

退伍之後,我離開了平坦的營區,回到位於山上的政大校園。

我十分質疑自己是否能夠維持軍中跑步運動的習慣。畢竟在當兵時都是跑平地,很少會在傾斜的路上跑步。綜合學院旁操場的人又實在是太多,跑起來也不太順暢的感覺。而適逢寒流與東北季風,這季節台北雨天的日子比晴天還要多。別說在山路上跑步了,甚至是不想出門被雨淋呢。

 

有一次,終於天晴了。

我下定決心,試著走出百年樓跑跑看山路。不過才剛開始跑,就被藝文中心那邊新蓋好的水岸電梯吸引了過去。

DSC_0103

看到新玩意兒當然是先來參觀一下了,二話不說立馬跑過去坐個電梯下樓看看。

DSC_0107

透明外牆的水岸電梯上,可以看到景美溪河岸旁的水岸道路,平坦地綿延到前門。

 

這時候我忽然想起了同梯的話。

對喔,政大並不是只有山路跟操場,它還有像是景美溪河岸這樣的平路呢。

開始每一場冒險

unnamed

剛好,最近又發現到Google推出了Android APP「我的足跡」,可以越來記錄我每次跑步的過程。

Screenshot_2012-12-21-20-36-40

看著APP上寫著「開始記錄您的下一場冒險」,激起了我對於四處跑步的興趣。

今天下午我就開著它,從政大後門沿著景美溪河岸跑到了前門,並上傳到了我的Google地圖。這樣跑下來約2.19公里,花了16分鐘。以當兵時三千公尺要求15分鐘(因年紀而調整)的標準來說,這成績是完全拿不上檯面。但比起跑步訓練體能這件事情,四處觀看不同景色卻能給我帶來更多樂趣。

今天在跑步的時候,我發現景美溪對面似乎也是不錯的一條路線。每次跑步時都能開發出不同的路徑,未來又會有更多的冒險可以進行,真是令人期待啊。


結語:運動的樂趣

如果說當兵讓我學到最重要的東西,我想應該就是「運動的樂趣」吧。

流汗是一種舒爽的感覺、喘氣是一種活著的證明,而在挑戰體能的極限之餘,我又學到了從跑步中欣賞更多周圍景色的樂趣。對我來說,當兵是很有價值的一段經驗。

做運動是很有趣的,希望大家都能多多跑步、或至少散散步,欣賞一下週圍的景色吧。

本週的布丁通信,就到此為止囉。

(more...)

XAMPP啟用PostgreSQL功能

布丁布丁吃布丁

XAMPP啟用PostgreSQL功能

20121220-205618

XAMPP是一套以Apache、PHP、MySQL組成的開發用套裝伺服器,但它並沒有內建PostgreSQL,在設定PostgreSQL的連線上也不是這麼直覺。

最近在架設開發環境的期間遇到了XAMPP無法順利啟用PostgreSQL連線的問題。經過一番研究,總算找出了解法。這篇就是介紹如何在XAMPP中啟用PostgreSQL的方法。


作業系統說明

image

我目前使用的作業系統是Windows 7 企業版,64位元。這篇的問題主要都是發生在Windows之中,Linux使用者應該不太容易遇到這個問題喔。

XAMPP與PostgreSQL的安裝

image

XAMPP使用的是XAMPP Portable 1.8.1

必須特別註明的是,儘管這是Portable可攜版本,但是目錄必須為「xampp」並放置在磁碟分割的根目錄下,例如「C:\xampp」或「D:\xampp」。我因為想嘗試不同版本而將資料夾命名為「xampp 1.8.1」之類的名詞,xampp就無法順利啟動。

PostgreSQL使用的是9.2.2版。網路上討論這個問題時通常看到的是8.x版本,所以我想版本應該不是問題。

XAMPP的部份

20121220-223634

剛安裝好XAMPP與PostgreSQL的時候,XAMPP裡面的PHP是無法順利連上PostgreSQL的,因為它預設並沒有打開pg_sql模組。

設定php.ini

php.ini是PHP的主要設定檔,它位於以下路徑:

[xampp]\php\php.ini

請以任意的文字編輯器開啟,並找到以下兩個PostgreSQL模組的選項:(兩者位於不同行,但很相近)

;extension=php_pdo_pgsql.dll
;extension=php_pgsql.dll

開啟模組的方法就是移除前面的註解符號「;」,修改之後如下:

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll

20121220-205754

修改完成,請重新啟動Apache。

用XAMPP Control Panel來啟動XAMPP

image

最近幾版的XAMPP都有一個方便的控制版:XAMPP Control Panel,位於以下路徑:

[xampp]\xampp-control.exe

開啟之後就可以看到上圖的畫面。

如果要開啟Apache,點下Apache後面的「Start」按鈕就可以了。

缺少libpq.dll的問題

照理來說,照上面的步驟啟用PostgreSQL模組之後就能正常運作。但是實際上卻遇到了錯誤訊息:

20121220-205618

無法啟動程式,因為您的電腦遺失 LIBPQ.dll。請嘗試重新安裝修正這個問題。

不僅如此,還連帶地出現以下的錯誤警告:

20121220-205650

這個錯誤就是因為XAMPP沒有載入PostgreSQL重要的函式庫libpq.dll。

找到libpq.dll的位置

我安裝的時候,赫然發現XAMPP其實已經內建了libpq.dll。檔案位置如下:

[xampp]\php\libpq.dll

但是在Windows中就是無法自動載入,必須要手動設定才行。

在httpd-xampp.conf中載入libpq.dll

要載入libpq.dll則必須在Apache設定檔中加入LoadFile選項。

20121220-222657

網路上大部分都建議修改Apache的主要設定檔httpd.conf。但是httpd.conf很長、也有一定結構,我找了幾個地方塞進LoadFile,開啟Apache時都會發生錯誤,如上圖。

後來我發現XAMPP也在他們自己的設定檔httpd-xampp.conf使用了LoadFile,我們也可以在此設定載入libpq.dll。httpd-xampp.conf的檔案位置如下:

[xampp]\apache\conf\extra\httpd-xampp.conf

找到這一行設定:

LoadFile "/xampp/php/php5ts.dll"

在前面插入載入libpq.dlll的設定:

LoadFile "/xampp/php/libpq.dll"
LoadFile "/xampp/php/php5ts.dll"

20121220-223702

設定完的httpd-xampp.conf就如上圖。

image

這樣再開啟就不會出錯了。

檢測PHP是否啟用了PostgreSQL的功能

phpinfo()

image

要知道PHP到底有沒有啟用PostgreSQL,最簡單的方式就是來看phpinfo()的訊息。XAMPP內建一個網頁專門顯示phpinfo()資訊,開啟Apache之後請開啟以下網址:

搜尋看看「pg_sql」,應該可以看到模組的相關資訊,那就表示順利啟用。

用函式檢測是否有啟用PostgreSQL

另一個方法就是檢查PostgreSQL的函式能不能使用,能夠使用就表示PostgreSQL模組有順利啟用。PHP檢查函式的語法如下:

$postgresql_is_enable = function_exists("pg_connect");

我們就能透過$postggresql_is_enable來得知PostgreSQL是否有順利啟用。


結語:PostgreSQL真是小眾

postgresql_logo-1979px

作為知名的開發環境,XAMPP在支援PostgreSQL上卻是意外地薄弱。這個問題在網路上查詢的結果,有不少人都是叫你關掉pg_sql就好,實在是令人為PostgreSQL的小眾難過。

比起流行的MySQL,我仍然覺得PostgreSQL才是大型系統應該要使用的資料庫。不光是可以用於商業行為的BSD授權(MySQL商業使用要付費的啊,希望大家要有授權的觀念),transaction功能與豐富的資料型態也都是讓人愛不釋手。

在此還是呼籲一下PostgreSQL的重要性,希望大家多多重視這個重量級的資料庫吧!

(more...)

Sublime Text 2中文化的安裝方式

布丁布丁吃布丁

Sublime Text 2中文化的安裝方式

image

Sublime Text 2是一個強大的文字編輯器,原始介面是英文的,官方沒有提供中文介面。網路上提供的中文化檔案很多,不過安裝方法都不夠詳細,沒有那麼簡單。我稍微摸索了一下,整理成這篇教學。



Sublime Text 2中文化語系檔下載

網路上許多中文化都是簡體中文,我們當然要用的是正體中文囉。令人高興的是ptt的R+在版上提供了他的Sublime Text 2中文化語系檔

下載解壓縮之後,你會看到9個以sublime-menu為副檔名的檔案,這就是Sublime Text 2的介面語系檔。這些語系檔也都是純文字,你也可以自行編輯成你習慣的用語。

安裝語系檔

由於作業系統跟安裝方式不同,語系檔要放置的位置也不盡相同,所以網路上大家的教學也都不太一樣。照我的觀察,現在Sublime Text 2似乎是統一將語系檔放在Packages資料夾中的Default資料夾裡。一般的安裝包與Portable的綠色可攜包的Packages也都在系統的不同位置,不過其實他們都可以透過Preferences > Browse Packages…來開啟Packages資料夾。

image

Browse Packages選項的位置如上圖所示。請原諒我已經中文化了,懶得改回來XD

image

接著它會開啟系統的檔案總管,你可以找到裡面的「Default」資料夾。

image

裡面也有一些副檔名為sublime-menu的檔案。此時請將剛剛下載的中文化語系檔覆蓋掉這些檔案,然後重新啟動Sublime Text 2,就可以看到中文化後介面了。

image

之後如果要調整語系檔的話,我想應該直接編輯這邊的檔案就行囉。

(more...)

PostgreSQL的備份與復原

布丁布丁吃布丁

PostgreSQL的備份與復原

120_120823175057_1

最近又回來做標註系統了,這次一樣要先建構環境。當初我寫KALS標註系統的時候使用的資料庫是PostgreSQL,它沒辦法透過檔案系統來備份跟復原,必須仰賴它的工具。這篇稍微記錄怎麼備份與還原PostgreSQL資料庫。其實不是很複雜,只是備忘而已。


備份:pg_dump

pg_dump是PostgreSQL的標準備份工具,其主要用法為:

pg_dump [資料庫名稱] -U [帳號] -f [備份檔案名稱.backup.sql]

備份檔案名稱後面的附檔名.backup.sql只是我自己的習慣而已。

舉例來說,我現在要輸出「kals」資料庫,帳號為「kals」,輸出到檔名「kals-db-20121218.backup.sql」,那麼指令如下:

pg_dump kals -U kals -f kals-db-20121218.backup.sql

你會獲得一個「kals-db-20121218.backup.sql」檔案,這個就是你整個資料庫的備份檔了。

復原(備份回存):psql

因為上面我們匯出的是sql檔案,所以這邊用psql來復原備份的資料。

psql是PostgreSQL主要的管理工具,可以執行各種工作。在這裡我們要復原SQL檔案,其用法是:

psql -f [備份檔案名稱.backup.sql] [資料庫] [帳號]

現在我們要將備份檔「kals-db-20121218.backup.sql」復原到「kals」,使用「kals」帳號進行,那麼指令如下:

psql -f kals-db-20121218.backup.sql kals kals

Windows注意路徑問題

在Windows操作的時候,要特別注意到路徑的問題。直接在命令提示字元執行「pg_dump」或「psql」都會發生錯誤,因為Windows不知道這兩個工具的位置。

一般來說,PostgreSQL工具的位置會擺在以下位置:

C:\Program Files\PostgreSQL\[PostgreSQL版本]\bin\

以9.2版的pg_dump工具來說,它的路徑就是:

C:\Program Files\PostgreSQL\9.2\bin\pg_dump.exe

指定備份檔案的時候,也要注意你的路徑是否正確喔。

備份跟還原時放棄使用pgAdmin跟phpPgAdmin吧

image

一開始我是想要用phpPgAdmin來備份,可是卻發生以下錯誤訊息:

Export error: Failed to execute pg_dump (given path in your conf/config.inc.php : /usr/bin/pg_dump). Please, fix this path in your configuration and relog.

奇怪的是,設定檔本身並沒有錯:/usr/bin/pg_dump的確是在那個位置沒錯。這個問題也有人提出來,似乎尚未解決。

然後我想用pgAdmin來連線,但PostgreSQL要從外面連進去必須做許多設定,進行的不是很順利。後來直接放棄pgAdmin,改用指令比較快。


結語:未來考慮使用SQLite

雖然大型系統需要PostgreSQL這種重量級資料庫來支援,但是這大神實在是我們小小研究者難以搬動的對象。

sqlite370_banner

比起控管嚴格以致於難以駕馭的PostgreSQL,未來我考慮使用SQLite作為主要開發的資料庫,可能會比較適合不斷調整、修改、搬移的小型研究環境吧。

(more...)

yum遇到「thread.error: can’t start new thread」錯誤的處理方法

布丁布丁吃布丁

yum遇到「thread.error: can’t start new thread」錯誤的處理方法

20121218-150819

這篇是參考Aditech Blog的Fix 'thread.error: can’t start new thread' error while yum update [Tips]作法,發現的確可行,在此做個記錄。

問題原因

這個錯誤似乎是因為yum運作的時候記憶體不足,因此fastest-mirror plugin (挑選最快站台的插件)發生錯誤。解決的方式就是關閉fastest-mirror plugin,雖然這會造成使用yum的時候會花比較多時間,但總比不能用還好。

這也是因為我是在OpenVZ虛擬機器上使用yum,所以容易遇到記憶體不足的緣故吧!

處理方式:修改fastestmirror插件的設定檔

Adithya Uday提供了兩種方式來關閉fastest-mirror plugin,一個是修改plugin的設定檔,另一個是在yum指令中加入參數「--disableplugin=fastestmirror」。

前者是一勞永逸的方法,要修改的檔案在「/etc/yum/pluginconf.d/fastestmirror.conf」:

[root@linux /]# vim /etc/yum/pluginconf.d/fastestmirror.conf

修改「enable」參數,原本是「1」

enable=1

改成「0」

enable=0

如果要再度啟用fastest-mirror plugin,再改成1就好了。

(more...)

XAMPP遇到需要驗證時該怎麼辦?

布丁布丁吃布丁

XAMPP遇到需要驗證時該怎麼辦?

20121214-133209 需要驗證 - mosic

XAMPP是一個開發用的伺服器環境,它包括PHP、MySQL、SQLite、ProFTPD等等網頁伺服器該有的伺服器都一應俱全,是我很常使用的套裝伺服器。

要進入XAMPP的管理畫面時,大多時候會跳出需要驗證的資訊,像是:「伺服器要求提供使用者名稱和密碼,伺服器訊息:xampp user」,然後要你輸入使用者名稱和密碼。

在Linux底下,XAMPP預設的帳號叫做「lampp」,密碼預設記得好像是空白。你可以用指令列來設定Linux中XAMPP的密碼,如果你的XAMPP(在Linux下叫做lampp)放在「/opt」底下,那麼指令如下:

[root@server ~]# /opt/lampp/lampp security

然後XAMPP會問你是否要修改密碼,選yes然後。接著會問你MySQL跟ProFTPD的密碼。

20121214-133250 pietty

這樣就能重新設定XAMPP的密碼了。

在Windows中的設定也是大同小異,請自行應變吧。

(more...)