2010年7月14日 星期三

Server Load Balance

HAProxy可以讓我們簡單架設一個Load Balance的機器。Debian架設方法如下:

# apt-get install haproxy

若要啟用,記得修改/etc/default/haproxy的設定檔
# vim /etc/default/haproxy
Enabled=1

接著便是依據實際環境對Load Balance的設定檔(/etc/haproxy/haproxy.cfg)做修改,可參考此網站

global
    maxconn 10000
    user    haproxy
    group   haproxy
    daemon
    nbproc  8
   
defaults
    log           global
    mode          http
    option        httplog
    option        dontlognull
    retries       3
    option        redispatch
    option        httpclose
    maxconn       32768
    contimeout    5000
    clitimeout    30000
    srvtimeout    30000
 

listen            web-server
    bind          0.0.0.0:80
    balance       roundrobin
    server        w1 192.168.1.1:80 weight 3 check
    server        w2 192.168.1.2:80 weight 3 check
    option        httpchk GET /index.html

    option        redispatch
    option        forwardfor

最後,啟動Service
# /etc/init.d/haproxy start

2010年7月5日 星期一

PostgreSQL安裝

Debian安裝PostgreSQL

# apt-get install postgresql

要登入PostgreSQL,必須以postgres的身份執行
# su postgres
# psql template1

接著便可新增使用者(可新增資料庫及使用者的權限)
create user 帳號 with password '密碼' createdb createuser;

修改密碼
alter user 帳號 with password '新密碼';

2010年6月26日 星期六

update-rc.d

寫了一支Daemon程式,除了在/etc/init.d/rc.local上寫入欲執行的指令外,也可以利用[Debian]update-rc.d指令,更新各runlevel下要執行的script。
首先要產生一個init.d script來執行我們要執行的Daemon,我們可以利用/etc/init.d/skeleton來當做修改的範本。

# cp /etc/ init.d/skeleton /etc/init.d/myservice
# chmod a+x /etc/init.d/myservice

接著便是修改myservice script,部份修改如下:
# vim /etc/init.d/myservice
DESC="Daemon的描述"
NAME=Daemon的檔名
DAEMON=Daemon所在絕對路徑
PIDFILE=/var/run$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

最後便是利用update-rc.d指令,更新各runlevel服務啟動設定
# cd /etc/init.d
# update-rc.d myservice defaults

defaults參數設定服務在runlevel為2,3,4,5啟動,runlevel為0,1,6為停止。若要詳細的設定,請參考man update-rc.d

2010年6月20日 星期日

全力搶救死刑狗





現在影片看到的狗可能都已經不在了。想到這就好難過,牠們沒有罪沒有錯,為什麼短短的十二天就要決定牠們的生死!殘酷的人類,既然決定養牠,就應該把牠當作家人一樣看待,而不只是一時興起養牠,最後卻將牠棄養。

狗是人類最忠實的朋友,聽起來真是諷刺阿~~

update-alternatives for gcc

update-alternatives提供了程式版本切換管道,以下將教學如何將gcc也加入到此管理系統。

假設系統已安裝gcc-4.1, g++-4.1, gcc-4.3, g++-4.3

# update-alternatives --remove-all gcc
# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 41 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/g++-4.3
# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 41 --slave /usr/bin/g++ g++ /usr/bin/g++-4.1 --slave /usr/bin/gcov gcov /usr/bin/g++-4.1

顯示所有的版本
# update-alternatives --display gcc

設定所要選擇的版本
# update-alternatives --config gcc

2010年6月18日 星期五

Linux Kernel Headers

在編譯程式時,有時會需要Linux kernel header。除了用套件管理程式下載外,也可自己去下載Linux Kernel Source下來,透過下面指令安裝到指定的目錄下。

解壓縮完成後:
# make ARCH=$ARCH headers_check
# make ARCH=$ARCG INSTALL_HDR_PATH=$HEADER_DIR headers_install

$ARCH為處理器的架構平台,如ppc, arm等。
$HEADER_DIR為Header欲安裝的目的資料夾所在。

2010年5月30日 星期日

vim同時編輯多個檔案

vim也具有同時開啟及編輯多個檔案的能力:

介紹兩種方法:

第一種是同時開啟多個檔案
# vim -p file1 file2

操作指令如下:
:tabe file3 開啟一個新分頁file3檔案
:tabn 編輯下一個檔案
:tabp 編輯前一個檔案

若覺得切換分頁麻煩可以在vimrc設定
nmap <F3>:tabn<ENTER>
nmap <F4>:tabp<ENTER>
如此便可用F3、F4鍵來快速切換分頁

第二種則類似分割視窗的作法
在vim命令模式
:sp file2

畫面便會被分割,切換檔案方式如下:
[ctrl]+w+[↓↑]

2010年5月27日 星期四

Linux上偵測Memory Leak

Memory leak一不小心就會發生,往往很難去發現。在Linux有開發程式,可以利用Valgrind這套軟體來偵測程式是否有Leak發生。

Valgrind不僅可偵測Memory Leak,也可以偵測Invalid Pointer和使用未初始化的變數。

Debian:
# apt-get install valgrind

使用方法:
# valgrind --tool=memcheck --leak-check=yes 欲執行的程式

詳細說明

2010年5月24日 星期一

新三國

小時候因為一本三國演義讓我迷上了三國,高中架了一個三國網站,書櫃也擺著一整排的三國書籍。
最近又迷上一部三國的電視劇,拍攝技巧較十多年前的三國演義進步許多,但就是在對話的用詞上,有些怪怪的,說不上來。



雖說三國演義七實三虛,許多描述也過於誇大與神話,但我就是喜歡。因為我不是歷史學家,是真是假又有什麼重要呢?

2010年5月15日 星期六

exim4外寄郵件伺服器

在Debian如何透過exim4設定外寄郵件伺服器來寄信(以gmail以及hotmail為例)

# dpkg-reconfigure exim4-config

在smarthost的設定填入對應的值
gmail
smtp.gmail.com::587
hotmail
smtp.live.com

# vim /etc/exim4/passwd.client
gmail
gmail-smtp.1.google.com:帳號@gmail.com:密碼
*.google.com:帳號:密碼
smtp.gmail.com:帳號@gmail.com:密碼

hotmail
smtp.live.com:帳號@hotmail.com:密碼

重新讀取設定
# /etc/init.d/exim4 reload