Mac mini的Linux安裝與網站服務建立實戰

為什麼要在Mac機器上裝Linux? 是Mac OS X不好用嗎? 這倒不是, 我本來有一台x86機器是用來當作測試機, 裝了Debian 3.1, 但是RAM太少, 128MB吃得滿滿, 機器上跑了httpd, php, ftpd與sshd...老是掛點, 我曾想過增加RAM, 不過老機器用的SDRAM很不好找, 在二手市場區的SDRAM也是一出來就被人搶光, 而我的Mac mini已退為娛樂用機, 但是配備比我一堆x86機器好多了, 而且裝了1G RAM, 於是就乾脆換上大容量硬碟, 同時讓Mac OS X與Debian Linux共存, 讓這台Mac mini能在工作與娛樂間充分發揮功能與利用殘存價值。

既然多了Mac mini, 正好與先前裝好Debian Linux的x86機器搭配, 我計劃在x86上跑httpd, 而Mac mini就專跑php。接下來的軟硬體安裝, 先由換硬碟開始吧。我採用網路線法來拆Mac mini的外殼, 要用些耐心穿線, 拆下外殼後, 將光碟機與硬碟機支架整個卸下, 要拆硬碟還得把CPU散熱風扇先拆除, 才能看到隱藏的硬碟固定螺絲。

Mac mini的Linux安裝與網站服務建立實戰
小心將硬碟從插座上推出, 一旁是買很久的Toshiba 80GB硬碟, 不過效能沒有Mac mini裡的Seagate硬碟好。

Mac mini的Linux安裝與網站服務建立實戰
連硬碟標籤也有蘋果...

Mac mini的Linux安裝與網站服務建立實戰
接著把Toshiba 80GB硬碟裝上。

Mac mini的Linux安裝與網站服務建立實戰
再將整個模組裝上主機板, 在完成測試前, 我就這樣放著, 不然有問題還得在費功夫拆外殼。

我先裝上Mac OS X, 80GB的硬碟空間分割60GB給它用, 剩餘的20G保留且不設定檔案格式, 稍後裝Debian 3.1時做就好了。花了幾十分鐘, 裝好OS X, 重新開機進入桌面, 確定無誤後, 把Debian光碟放入光碟機後重新開機, 按住鍵盤"C"鍵由光碟開機, 跟以往我只裝過x86版debian不太一樣, 會先進入yaboot, 它是個Boot Loader, 要雙開機系統就靠它囉, 在yaboot的提示符號輸入"install"開始安裝Debian Linux。

Debian Linux還不錯, 自朋友推薦它後, 我就常利用這套Linux, 有許多預先包好的軟體套件, 像是RedHat Linux的rpm, 執行安裝命令就能從光碟、網站或是FTP站抓取套件。

Mac mini的Linux安裝與網站服務建立實戰
在磁碟分割區設定, 選取剩餘的空間, 最簡單的方式就是讓Debian幫你規劃好。

接著依照指引安裝就好, 沒有GUI的安裝程式雖然比RedHat遜色些, 不過還算容易, 參考網路上的文件, 照著指引就能裝好Debian, 機器環境我都沒有選取, 我決定自行安裝我要的軟體。

Mac mini的Linux安裝與網站服務建立實戰
重新啟動後, 可以選擇要啟動的作業系統, 或是由光碟機啟動。

Mac mini的Linux安裝與網站服務建立實戰
進入Debian, 在yaboot稍等一下就會自動載入。

Mac mini的Linux安裝與網站服務建立實戰
開始啟動Debian Linux。

完成初步安裝後, 我先來調整一些系統參數, 讓系統效能盡量發揮...這些資料是朋友提供的, 在Linux或FreeBSD都可以用, 在逐個測試後, 我留下在Debian能用的參數。

先轉為系統最大權限的"root", 系統會詢問密碼:
su

編輯系統控制設定檔, 我習慣用"nano"這個簡單的編輯器:
nano /etc/sysctl.conf

將參數貼進設定檔, 並且儲存:
fs.file-max = 8192000
kernel.shmall = 134217728
kernel.shmmax = 134217728
net.core.rmem_max = 1048576
net.core.wmem_max = 1048576
net.core.rmem_default = 262143
net.core.wmem_default = 262143
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_rmem = 4096 87380 524288
net.ipv4.tcp_wmem = 4096 65536 524288
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.neigh.default.gc_thresh3 = 20480
net.ipv4.neigh.default.gc_thresh2 = 15360
net.ipv4.neigh.default.gc_thresh1 = 10240
net.unix.max_dgram_qlen = 512
vm.overcommit_memory = 2

喔...差點忘了把網路卡的IP改為固定, 正好辦公室網路上有DHCP server, 安裝Debian時自動抓取了IP, 先改好免得IP跳動以後麻煩:
nano /etc/network/interfaces

編輯eth0(第一張網路卡)的設定, 請參考就好:
iface eth0 inet static
address 192.168.11.249
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 168.95.1.1

把網卡重新啟動:
ifdown eth0; ifup eth0

重新載入剛才變更的系統設定:
sysctl -p /etc/sysctl.conf


前面提到httpd(網站伺服器)與php(一種伺服器端描述語言)我拆成兩台機器來跑, 這得靠FastCGI以用TCP/IP的區域網路內處理網頁動態資料並傳回httpd, FastCGI改善了以往CGI效能不彰的困境, 各大httpd也都能支援FastCGI, 像是佔有率最高的Apache及微軟的IIS。httpd我採用輕量級的lighttpd, 佔用資源少, 效能也不錯, 也是友人推薦使用, 與Apache同般有多種模組, 讓受不了Apache癡肥的人可以輕鬆轉移到lighttpd。

Mac mini的Linux安裝與網站服務建立實戰
我的實驗環境架構, PC(192.168.11.250)與Mac mini(192.168.11.249)都裝好了。

先在PC端架好lighttpd, 到官網抓原始檔回來:
cd /usr/local/src
wget http://www.lighttpd.net/download/lighttpd-1.4.9.tar.gz

解開壓縮檔, 開始安裝lighttpd:
tar zxvf lighttpd-1.4.9.tar.gz
cd lighttpd-1.4.9
./configure

完成configure後, 無誤就開始編譯與安裝:
make
make install

把預設lighttpd組態檔複製出來:
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf

做好error.log與access.log:
mkdir /var/log/lighttpd
cd /var/log/loghttpd
touch error.log
touch access.log

OK! 接著修改lighttpd.conf:
nano /etc/lighttpd/lighttpd.conf

將"mod_fastcgi"前的井字號刪掉, 也就是該設定值有效:
server.modules

設定網頁檔案的絕對路徑, 因為分離了httpd與php, 所以這台機器上至少要有網站的靜態檔案, 例如: html檔, gif, jpg...等圖檔, 因為這些檔案是不需要php去處理的。
server.document-root = "/home/www/"

修改error.log的路徑:
server.errorlog = "/var/log/lighttpd/error.log"

修改acccess.log的路徑:
accesslog.filename = "/var/log/lighttpd/access.log"

設定網站的服務監聽埠:
server.port = 80

設定HTTP錯誤404(找不到檔案)的處理程式, 顯示html檔也行, 不設也可以:
server.error-handler-404 = "/error.php"

到"fastcgi module"設定區, 把Mac mini的php服務設定貼上, 不過還沒安裝, 所以不急著啟動lighttpd喔!
fastcgi.server = ( ".php" =>
  ( "macnini" =>
    (
        "host" => "192.168.11.249",
        "port" => 1026,
        "mode" => "responder",
        "check-local" => "disable"
     )
   )
)

回到Mac mini, 開始安裝PHP吧, 先取得PHP的原始碼:
cd /usr/local/src
wget http://tw.php.net/get/php-5.1.2.tar.gz/from/this/mirror


抓了PHP 5.1.2, 不過我慣用的PHP加速器eAccelerator還不支援, 不過這些機器只供我使用, 所以還沒關係, 可以等eAccelerator新版出來。

解壓縮PHP的原始檔:
tar zxvf php-5.1.2.tar.gz
cd php-5.1.2

設定組態, 如果你還需要其他功能, 這時就得把參數加入, 不然以後還得重編:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/conf --enable-fastcgi --with-layout=PHP --disable-ipv6 --with-zlib --with-mysql

編譯與安裝PHP, 無誤的話就會裝到/usr/local/php:
make
make install

接著建立PHP的設定檔目錄, 並把預設檔案複製進去:
mkdir /usr/local/php/conf
cp php.ini-dist /usr/local/php/conf/php.ini

請依照你的喜好修改php.ini吧:
nano /usr/local/php/conf/php.ini

確定一下PHP是不是裝好:
cd /usr/local/php/bin
./php -v

如果顯示就正常囉:
PHP 5.1.2 (cgi-fcgi) (built: Jan 13 2006 10:16:03)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

不過要讓PHP FastCGI服務跑起來, 我們還需要lighttpd的作者寫的"spawn-fcgi"程式, 如果沒有被自動安裝, 請下載spawn-fcgi並編譯安裝它, 把spawn-php.sh這個Shell Script抓回來利用:
cd
wget http://www.lighttpd.net/download/spawn-php.sh
chmod 755 spawn-php.sh

修改spawn-php.sh的設置:
nano spawn-php.sh

首先確定程式路徑正確:
SPAWNFCGI="/usr/local/sbin/spawn-fcgi"

PHP的執行檔目錄與檔名:
FCGIPROGRAM="/usr/local/php/bin/php"

允許連入的伺服器IP位址:
FCGI_WEB_SERVER_ADDRS="127.0.0.1,192.168.11.250"

儲存好spawn-php.sh, 啟動PHP的FastCGI服務吧:
./spawn-php.sh

有回應啟動成功訊息就是正常囉:
spawn-fcgi.c.150: child spawned successfully: PID: 6125

可以用top指令來看:
Mac mini的Linux安裝與網站服務建立實戰
PHP網頁檔案在這台機器也需要有一份, 放在與網站伺服器相同目錄。

這時可以啟動網站伺服器了, 回到PC端, 把lighttpd啟動:
/usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf


後續還有資料庫的安裝, 這個就讓各位自己玩, 我的PHP FastCGI與lighttpd的安裝筆記就到此結束囉。
強者的LEVEL跟我們是不一樣的
我也看不懂
但是還是給滿分
ps:牛肉你的文字太少有灌水嫌疑
看的懂一點點而已...
不過想問的是,那張漂亮的架構圖是用哪一套軟體畫出來的呢??

只是你提到RedHat, 你可以試試黃狗這套系統 yallow dog, 就是RedHat改過去的
殘念..完全看不懂

對於Linux 我只知其詞 並不知其意啊
Debian Linux是要去抓For PowerPC的版本囉?!
我比較想問要怎麼用撥接ADSL來網路安裝~ @@
雖然我覺得這問題應該是得到linux版去問~ :P

那個架構圖真的很漂亮~
蠻不錯的應用文章, 加分. 不過...如果可以用原生的tiger來當OS, 直接執行PHP5以及sql server, 應該更讚吧! 那mini不用得時候就可以當server, 突然想起的時候還可以當desktop用. 這樣也不用兩者(MAC X OS and Linux)只能取其一來用了.

當私人或者小型的soho server倒是蠻不錯的.

個人也改了一台kuro-box(Power PC喔, 也算是MAC一族啦...哈哈...)來當server(debian sarge3.1), 有機會再交流一下吧

別叫我牛肉~ wrote:
我看不懂


我只是從朋友那而學來的東西練習一下而已, 所以說是安裝筆記
酷波 wrote:
強者的LEVEL跟我們是不一樣的


就用Photoshop跟網路上抓的圖啊...線條跟文字拉一拉而已
kookymac wrote:
那張漂亮的架構圖是用哪一套軟體畫出來的呢


oh...之前聽說過黃狗, 不過因為在x86上常用Debian, 所以也就沿用了Debian PPC版
aparosa wrote:
你可以試試黃狗這套系統 yallow dog


是啊, 官網就提供下載了, 抓CD1就夠了
Debian有支援PPPoE, 不過我沒有實際設定過...
changeway wrote:
Debian Linux是要去抓For PowerPC的版本囉?!
我比較想問要怎麼用撥接ADSL來網路安裝~ @@


是啊, 但是慘的是在Darwin下, 我光是為了裝PHP 5就搞好久了, 少東少西真是麻煩
我Xcode2也裝了...
strongarm wrote:
如果可以用原生的tiger來當OS, 直接執行PHP5以及sql server, 應該更讚吧
另外提醒一下想照著這篇改的諸位大德, 上面的系統控制參數可不能完全照著貼喔. 除非你和版主的機器一樣, 裝有1GB的RAM......

當然各位可以按照自己機器上的實際的RAM數量稍微算一下改一下其中幾個數字就行啦
既然使用了 Debian 不如直接使用他的套件管理方式
不要自行編譯軟體 以免亂了相依性
不然你用 Debian 除了安裝介面(d-i)之外 跟redhat/fedora也沒什麼不同

安裝 lighttpd 請在 command line 下以下指令

apt-get update ; apt-get install lighttpd

php 的安裝方法也一樣:)

令外 aptitude 是半圖形化的 debian 套件管理系統 也可以試試 安裝方式為
apt-get install aptitude

--
httpd 我還是覺得 apache 好用:p
只要把http.conf搞熟了 apache的設定實在是很活很方便
Blog, http://bz.d22.cc Shots, http://flickr.com/photos/bizkit
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!