Sunday, October 31, 2010

如何取得經過 Apache 2 Proxy 處理過的 real IP

IP 不夠用已經是一個當前公司要面對的問題,但其實是可以透過 domain name + proxy 的方式,讓server 將 http request 送給相對應的 server 做處理。這個方式統稱叫 Proxy,其中最有名又免費的就是 Apache Proxy

若要安裝此 Apache Proxy , 可以用下列指令先安裝
sudo apt-get install apache2
sudo a2enmod proxy
sudo a2enmod proxy_http

然後再指定 module 的內容如下
ProxyPass         /hudson  http://localhost:8081/hudson
ProxyPassReverse /hudson http://localhost:8081/hudson
ProxyRequests Off

# Local reverse proxy authorization override
# Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)

Order deny,allow
Allow from all

但此時內部 server 透過 api 拿到的 ip 都會是此 proxy server 的 IP 。若要拿到 real IP 則需要透過 http header 拿,這些 header 如下

X-Forwarded-For
The IP address of the client.

X-Forwarded-Host
The original host requested by the client in the Host HTTP request header.

X-Forwarded-Server
The hostname of the proxy server.

不過這個要 server 端的 code 必須偵測並加上這些 API 才能取得

Saturday, October 30, 2010

Disable X-server in Ubuntu 10.10

若要 Ubuntu Server 安裝完 Desktop 後開機還是進入 commnad line ,必須用以下步驟做更改,無法用設定的方式

1. 更改 /etc/default/grub 將 GRUB_CMDLINE_LINUX="" 改成 GRUB_CMDLINE_LINUX="text"
2. sudo update-grub
3. sudo reboot


這樣就可以讓 Ubuntu Server 進入 command line, 需要的時候再用 startx 進入 desktop

Install Sun JDK into Ubuntu 10.10

自從 Sun 被 Oracle 買走後,JDK 就開始弱掉了,連 Ubuntu 都以 Open JDK 取代 Sun 的 JDK.
若要安裝 Sun 的 JDK,則要有另外的步驟安裝

1. 先增加 partner 的 repository
sudo apt-get install python-software-properties
sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner"

2. 安裝 jdk
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin

若要將預設的 jdk 換成 sun 的,就用
sudo update-java-alternatives -s java-6-sun

Tuesday, October 5, 2010

Java Build Server

今天在 theserverside 發現一篇有去的 article

http://www.zenbi.nl/en/blog_how_to_build_a_java_buildserver.php

這份 article 在講解如何去建立一個 build server ,讓程式開發可以自動化做 build 與 Test ,減少人工的浪費。

目前 build tool 中比較 popular 的有 luntbuild, hudson, apache continuum ,此 article 建議用 luntbuild ,個人用過 luntbuild ,比較起來 luntbuild 太基本,必須用 professional 才能滿足比較大的需求。hudson 最近研究過,發現此 build tool 可以支援 plugin 功能,大大的增加其運用彈性,在此建議此 build tool 。continuum 也是比較基本的 build tool

build tool 已經漸漸的變成軟體開發的一環,須要建立起來才能有效控管軟體的 productivity and Quality