聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

四月 28, 2013

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» nginx 1.4.0 釋出並支援 SPDY

nginx-logonginx-logo

很高興看到 Nginx Release 1.4.0 版本,此新版本開始支援 SPDY module,對於 SPDY 還不熟悉了解的,可以參考今年 2013 WebConf 講師 ihower 介紹的 A brief introduction to SPDY – 邁向 HTTP/2.0,要提升整個 Web Performance,可以將 SPDY 導入,對於使用 Apache 使用者,請參考 mod_spdy,如果是 Nginx 用戶,在 1.3.x 版本,可以直接用官方 patch,升級到 1.4.x 就不需要 patch 了,但 OS 是 UbuntuCentOS 系列是需要自行編譯,這次會筆記在 CentOS 下將 spdy 編譯進系統。

安裝方式

先看 Ngix 是否有支援 spdy,直接下 nginx -V 觀看

nginx version: nginx/1.1.19
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –erth=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-lb/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path==/var/run/nginx.pid –with-debug –with-http_addition_module –with-http_dav_moith-http_image_filter_module –with-http_realip_module –with-http_stub_status__xslt_module –with-ipv6 –with-sha1=/usr/include/openssl –with-md5=/usr/includ/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam –add-module=/build/buildd/d/nginx-1.1.19/debian/modules/nginx-upstream-fair –add-module=/build/buildd/ng


看到上述結果,沒有發現 http_spdy_module 模組,代表並無編譯進去,底下安裝過程,是基於 CentOS 6.4 Release 環境。安裝前請先下載 Nginx 1.4.0openssl 1.0.1e 版本。

# generate makefile
cd /tmp/nginx-1.4.0 && ./configure \
    --prefix=/usr/share/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --user=nginx \
    --group=nginx \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_xslt_module \
    --with-http_image_filter_module \
    --with-http_geoip_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_degradation_module \
    --with-http_stub_status_module \
    --with-http_perl_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-http_ssl_module \
    --with-http_spdy_module \
    --with-openssl=/tmp/openssl-1.0.1e
cd /tmp/nginx-1.4.0 && make && make install

比較需要注意的事,假如系統已經安裝好 nginx 版本,預設執行程式會在 /usr/sbin/nginx,所以編譯時,請務必指定此路徑蓋掉原有的執行檔,這樣系統還是可以透過 init.d 啟動或關閉 nginx。

啟動 spdy 模組

為了將 https 及 spdy 同時 listen 443 port,OpenSSL 務必支援 Next Protocol Negotiation,所以版本要 1.0.1 以上。在 nginx.conf 設定如下

server {
    listen 443 ssl spdy;

    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ...
}

偵測伺服器是否支援 spdy

經過安裝完成 Nginx with spdy module,要確定伺服器有無支援,可以透過 Firefox addon 或 Chrome extension,底下是 SPDY indicator 下載連結

* Firefox SPDY indicator
* Chrome SPDY indicator

要如何測試呢?打開 Chrome 瀏覽器,輸入 Google 網址,你會發現網址列多一個綠色勾勾,那就代表伺服器有支援 SPDY Module。

四月 13, 2013

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Linode 最後優惠 升級記憶體

Linode VPSLinode VPS

Linode 最後的優惠出來了,之前寫了一篇 Linode VPS 升級網路及硬體設備,回顧 Linode 今年的優惠大清倉,第一次專注在網路效能及流量頻寬升級,第二次則著重在硬體升級,也就是升級 CPU,那這次要升級什麼呢,難不成 Linode 有聽到上一篇最後我講到的心聲,就是記憶體升級啦,Linode 大手筆將全部 Plan 的記憶體都 double,底下這張圖就是升級過後的價目表。

Linode - Xen VPS Hosting 2013-04-13 11-04-36Linode - Xen VPS Hosting 2013-04-13 11-04-36

最便宜的方案就有 1G 了 Ram,每個月 2TB 流量,8 CPU,一個月才 20美金,真的是蠻便宜的,現在問我 AWS 跟 Linode 選哪個,我會大力推薦 Lindoe 了,不過升級此 Ram,每個方案會多 0.05 美金,所以最低消費從每個月 19.95 USD 會變成 20 USD,不過還是很值得啦。現在可以馬上登入 Linode 後台按下升級按鈕,系統會自動升級,並且重新開機。

目前可以升級的區域如下

Fremont, CA: TBD
Dallas, TX: Upgrades are available
Atlanta, GA: Upgrades are available
Newark, NJ: Upgrades are available
London, UK: Upgrades are available
Tokyo, JP: Upgrades are available

日本那邊已經升級完成,但是我的 Linode 似乎沒看到升級按鈕,寫個 Ticket 詢問看看。Enjoy it。

三月 21, 2013

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Linode VPS 升級網路及硬體設備

Linode VPSLinode VPS

Linode 是我最喜歡的國外 VPS 廠商,重點是速度跟穩定度都還不錯,不過今年不知道是不是被 DigitalOcean 刺激到?所以這個月將網路設備全面升級,不僅降低 latency 和 redundancy,出口端網路設備全部換成 Cisco Nexus 7000 series 等級,此系列提供了足夠的 Mac Address 及處理大量 Request,另外 access layer switches 則換成 Cisco Nexus 5000 series switches 跟 Nexus 2000 series Fabric Extenders,這些都不是重點,重點是每台 VPS 現在對外流量都變成原先的十倍,當然對內流量是無限制的,底下是 Linode 最新網路架構圖

Linode-NextGen-NetworkLinode-NextGen-Network

對外流量都增加十倍如下表,真是太超過了。

Linode 512 upgraded from 200GB to 2000GB (2TB)
Linode 1G upgraded from 400GB to 4000GB (4TB)
Linode 2G upgraded from 800GB to 8000GB (8TB)
Linode 4G upgraded from 1600GB to 16000GB (16TB)
Linode 8G upgraded from 2000GB to 20000GB (20TB)

這樣就算了,接著升級 VPS 硬體,每個 Linode 全升級成 8 Core CPU Instances,這簡直是太瘋狂了,已經讓作者忍不住來玩看看了,官方直接提供了重新編譯系統核心的速度,使用機器為 Linode 1024 with 8 cores,編譯完成時間大概為 100 秒,這速度……

apt-get update && apt-get -y install build-essential
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.tar.xz
tar xf linux-3.8.tar.xz
cd linux-3.8/
make distclean && make defconfig && time make -j8

real 1m41.861s
user 10m37.423s
sys 1m41.298s

最後文章提到,那硬碟呢?人家 DigitalOcean 全面採用 SSD,那 Linode 呢?沒關係,官方說這是未來的計畫,要全面換成 SSD 需要一大筆資金阿,所以讓大家期待一下吧。不過 CPU 已經這麼快了,那 Ram 呢?大家其實希望增加的是 Ram 吧 XD

最後補一張圖來證明真的是 8 Core CPU:

linodelinode

Ref 兩篇官方說明:

Linode NextGen: The Hardware
Linode Nextgen: The Network

十二月 16, 2012

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» 虛擬主機商 Linode 增加 20% 儲存空間

Linode VPS

Linode 在美國時間 2012/12/14 宣佈全部方案增加 20% 儲存空間,Linode 是一個蠻穩定的虛擬主機商,除了有時候常常維護以外,目前找不到有任何值得探討的缺點,每年周年慶也推出贈送 100 美金的方案,也不定時增加記憶體,像是以前有 720方案,現在已經看不到了,每個月39美元就可以租到 1GB Ram 的方案,這次增加儲存空間,可以透過後台方式將硬碟容量調整。真的是太感謝 Linode 了。如果想玩 VPS 我首推的就是 Linode,或者是可以嘗試免費的 AWS Free Usage Tier EC2。Linode 容量調整如下:

Linode 512 goes from 20GB to 24GB
Linode 1GB goes from 40GB to 48GB
Linode 2GB goes from 80GB to 96GB
Linode 4GB goes from 160GB to 192GB
Linode 8GB goes from 320GB to 384GB
Linode 12GB goes from 480GB to 576GB
Linode 20GB goes from 800GB to 960GB

Related View

九月 11, 2011

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» Linode VPS Inbound 流量將不再收費

Linode VPS

如果有在玩虛擬主機的朋友們,這是一項非常大的消息(Linode Reduces Transfer Pricing),那就是從2011年9月1日開始,只要是流入 Linode VPS 或者是 NodeBalancer 伺服器的流量都是免費,至於流出流量呢?只要是超過限制的 transfer pool 都是以 $0.10/GB 來計費,這相當便宜阿,Linode 看的出來蠻用心的,可以租一台當作 backup server 也不賴,價格來說也不會很貴啦,最小 VPS 每個月流量給大 200G/month,其實也用不太完,但是網路的速度,可能就要評估看看,不要依賴 Ping 的 ttl 值,以直接下載檔案速度來觀看也許會比較適合喔。

Related View

六月 19, 2011
» Introduction to Node.js


Very nice and clear introduction of Node.js system.

三月 20, 2010

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» [FreeBSD]high performance caching reverse proxy: Varnish (安裝架設篇)

varnish-logo-red-64
在上禮拜跟 DarkHero 兄聊到 How To Build a Scalable Web Site (3/6) 的上課講義,互相討論了 MySQL Load balance 以及 http reverse proxy 的方式,以前自己有用 HAProxy 當作 Web 平衡負載,順便紀錄了 HAProxy FreeBSD 安裝方式,這次要來介紹今天重點:Varnish Cache Server,在近幾年流行的 Caching 機制,大家會想到 Squid,只要您設定良好的 Squid 參數,它一定運作的非常穩定,然而它的核心依然是 forward proxy,要架設成 Reverse Proxy 還必需要設定一些參數才可以達到,是有一定的困難性,然而 Varnish Cache Server 底層就是高效能 caching reverse proxy,也因為 Squid 是 1980 年發展出來的,程式架構過於老舊,可以參考 ArchitectNotes 瞭解這部份詳情。也許您會問到 Varnish 可以架設成 forward proxy 嗎?答案是可以的,但是您也許不會這麼做,因為它需要 DNS 技術,以及需要一個非常大且複雜的 Varnish VCL(Varnish Configuration Language) file。

1. 今天要介紹如何在 FreeBSD 系統安裝,在介紹之前,系統必須先安裝好 apache,這樣才可以正確啟動,利用 ports 安裝:

cd /usr/ports/www/varnish/
make install clean

2. 修改 /etc/rc.conf

# varnishd
varnishd_enable="YES"
varnishd_listen=":80"
varnishd_admin=":81"
varnishd_backend=":5566"
varnishd_config="/usr/local/etc/varnish/default.vcl"

上面設定意思是說 Varnish listen on port 80,傳送 traffic 到後端 5566 port,管理連接埠是 81,也可以使用指令方式:

varnishd -a :80 -b localhost:8080 -T localhost:6082

Varnishd listen on port 80,and forwarding traffic to a web server listen on localhost port 8080. It also turns on the management interface on port 6082.

3. 修改 default.vcl (Varnish Configuration Language)
VCL 檔案告訴 Varnishd 正確的處理每個 request processing,包含在接受到 request 之前所處理的行為 vcl_recv(),另外還有 vcl_hit()、vcl_miss() 等…,都是用來處理 cache 如果存在或者是不存在時的情境 request。FreeBSD 預設放在 /usr/local/etc/varnish/default.vcl。打開此檔案,您會看到:

backend default {
   .host = "127.0.0.1";
   .port = "80";
}

您只要把 host = “127.0.0.1″ 改成你後端要連接的 ip 或者是 host,這樣 Varnish 會 forward traffic 到您的 web server。接下來只要啟動 apache 跟 Varnish 就算是初步架設完成。

/usr/local/etc/rc.d/apache22 restart
/usr/local/etc/rc.d/varnishd restart

Varnish_01
大家可以看到 61.*.*.* 連到本機 80 port,接下來 Varnish 在開啟隨機 57475 port 連接到 Web Server 5566 port。

Q:如何讓 apache 紀錄正確的 Client IP 到 log 檔案呢?
1. 打開 Vcl config 檔案,寫入
Varnish configuration:

sub vcl_recv {
  # Add a unique header containing the client address
  remove req.http.X-Forwarded-For;
  set    req.http.X-Forwarded-For = client.ip;
  # [...]
}

2. 開啟 apache httpd.conf 加入此行:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined

Varnish_02

Q:如何讓 PHP 程式紀錄正確的 Client IP?
可以參考底下程式碼就可以完全抓到 Proxy 後面真正使用者IP,否則您的 Web 只會抓到 Reverse Proxy 的 IP Address。

function getIP() {
  if (validip($_SERVER["HTTP_CLIENT_IP"])) {
    return $_SERVER["HTTP_CLIENT_IP"];
  }
  foreach(explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"]) as $ip) {
    if (validip(trim($ip))) {return $ip;}
  }
  if (validip($_SERVER["HTTP_X_FORWARDED"]))
  {
    return $_SERVER["HTTP_X_FORWARDED"];
  }
  else if (validip($_SERVER["HTTP_FORWARDED_FOR"]))
  {
    return $_SERVER["HTTP_FORWARDED_FOR"];
  }
  else if (validip($_SERVER["HTTP_FORWARDED"]))
  {
    return $_SERVER["HTTP_FORWARDED"];
  }
  else if (validip($_SERVER["HTTP_X_FORWARDED"]))
  {
    return $_SERVER["HTTP_X_FORWARDED"];
  }
  else
  {
    return $_SERVER["REMOTE_ADDR"];
  }
}

function validip($ip) {
  if (!empty($ip) && ip2long($ip)!=-1) {
    $reserved_ips = array (
      array('10.0.0.0','10.255.255.255'),
      array('127.0.0.0','127.255.255.255'),
      array('169.254.0.0','169.254.255.255'),
      array('172.16.0.0','172.31.255.255'),
      array('192.168.0.0','192.168.255.255'),
    );
    foreach ($reserved_ips as $r) {
      $min = ip2long($r[0]);
      $max = ip2long($r[1]);
      if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
    }
    return true;
  }
  else
  {
    return false;
  }
}

Q:rotate Varnish log file every day?
打開 /etc/newsyslog.conf,加入底下兩行

/var/log/varnish.log        640     7   *   @T00    JB  /var/run/varnishlog.pid
/var/log/varnishncsa.log    640     7   *   @T00    JB  /var/run/varnishncsa.pid

每天12點進行 log 備份,使用 gzip 壓縮 log 檔案。

Related View

四月 5, 2009

小惡魔AppleBOY
AppleBOY
小惡魔 - 電腦技術 - 工作筆記 - AppleBOY is about »

tag cloud

» New in Labs:Gmail search autocomplete 快速找尋使用者 email 跟附件檔案

Gmail 又推出一個 Lab 功能了,這個功能我想是大家所期待許久的,可以直接對於搜尋使用者跟附件有相當大的幫助,可以針對附件,郵件裡面的 vedio,圖片副檔名 .jpg、.png、.doc 下去做搜尋的動作,很方便的,也可以針對郵件的 email 或者是姓名搜尋,提供了 autocomplete 的作用,您只需要打入兩個關鍵字,就會出現相關的使用者姓名或者是 email 喔,方便的,可以參考:New in Labs: Gmail search made easier (and lazier)

使用方法只要去 Settings -> Labs 把功能打開即可
Google_01 (by appleboy46)

在 search 欄位輸入 at 兩個字,就會出現搜尋附件檔案的動作:
Google_02 (by appleboy46)
也可以輸入中文姓名,就會幫忙找到相關的部份了:
Google_03 (by appleboy46)

Related View

三月 27, 2008
» 【Network】修改固定IP

在 Ubuntu Server 裡沒有 GUI 的介面來設定網路IP,再加上每次重開後使用 ifconfig 更改完的 IP 又會自動被 DHCP 覆蓋過去。這對凍仁這個小網管來說是個很頭痛的問題。

1. 編輯 ip 設定檔

jonny@ubuntu:~$ sudo vi /etc/network/interfaces


2. 更改 eth0 設定,將
auto eth0
iface eth0 inet dhcp

改為
auto eth0
iface eth0 inet static
address 140.127.˙˙˙.˙˙˙
netmask 255.255.255.0
gateway 140.127.˙˙˙.˙˙˙


3. 重新連線並測試有無成功
# 中斷連線
jonny@ubuntu:~$ sudo ifconfig eth0 down

# 啟用網路
jonny@ubuntu:~$ sudo ifconfig eth0 up


/* 建議讓 Server 重開做測試比較好.. */


相關連結:
Ubuntu正體中文wiki - Ubuntu6.10LAMPServer - 11.2設定網路

二月 24, 2008
» 【Ubuntu】網路設定 - DNS篇

如果今天咱捫的DNS跑掉了,我們可以透過以下指令來手動更改它。# sudo vim /etc/resolv.conf
1 # generated by NetworkManager, do not edit!
2
3
4
5 nameserver 140.127.Orz.Qrz / * 主要的DNS Server Address * /
6 nameserver 140.117.OO.QQ / * 次要的DNS Server Address * /


修改完可利用以下指令重新啟動網路# sudo /etc/init.d/networking restart

站內連結:
【Ubuntu】網路設定 - 固定IP篇
資料來源:
justfor1221 - [ubuntu] 設定網路一些相關指令

五月 7, 2007
» Home Plug !

Update緊急聲明:
Chih-Hsiang 在評論裡提到合勤PL-100的效能不彰...
而我昨天因為這裡傳輸需求並不高所以沒有實測,
但剛剛一測結果讓我下巴差點沒掉下來...
我沒想到能有這麼差... @_@

所以擁有或未來打算升級到2M以上對外頻寬的千千萬萬不要買PL-100!
剛剛實測結果, 網內FTP互傳居然只到240~230Kb/s均值...?
也就是說實際效能是85Mbits的40分之一不到,約為2M bits
這實際的效能差異未免太...

當然我的效能測試未必準確,
不過既然是實際發生的狀況,
還是請大家做為慘痛的教訓參考看看 XD

==

因為家裡的牆壁太厚,轉彎太多,
又遇到一張某"XDLINK"無線網路卡, 沒事就給我25%的連線品質,
上網實在太容易斷線了,
偏偏我老爸又嫌牽網路線太醜...
於是今天就去建國路買了一組兩個的HomePlug電力線網路橋接器回來裝.

我買的是合勤的PL-100
一開始本來想試試插在延長線上可不可行, 不過我家的延長線都有防突波
似乎太高檔了一點,所以一開始試連就連不上.
不過換插平常的插頭一插上去就很順利的就可以動了.

HomePlug基本上不同電表訊號就過不去了,最多能接十五個裝置.
合勤的設定程式只有Windows版,不過也不是什麼大問題,
基本上如果你不是有安全潔癖的話根本可以不用設定,
電源跟網路線插上就會動了,
我是順手設了不同的網路名稱,預設的網路名稱好像都是HomePlug.

用到目前為止還算滿意, 至少比之前常常莫名其妙斷線的無線網路好多了,
不過85Mbits的頻寬其實覺得有點太多(雖然是理論頻寬,我還沒測過),
因為基本上我也很少網內互傳開檔, 如果真有這種需求的人應該可以考慮買200Mbits(HomePlugAV)型的.(不過我也只有100Mbits的網路卡)

推薦大家家裡裝無線網路有訊號問題(例如有好幾樓),
但是又覺得牽條網路線難看的可以試試看HomePlug.
至少不必老擔心訊號不足的問題. :)

A Feedjack powered Planet
A Django site.