藍天浮雲

This is our world… Nothing changes. It’s here, that we are going to live on…

Archive for the ‘軟體’ Category

Apache 設定

沒有留言

Apache 的說明文件其實很完整,所有的 options 都有詳細說明。不過感覺對初學者不是很友善,國中的時候很多地方都看不懂。

有時候也要用一下搜尋才找的到需要的資料,因為東西太多了,像是模組 就有數十個。

Apache 的設定檔位於 /usr/local/etc/apache22/httpd.conf(Includes/ 和 extra 裡面也有一些設定)。

節錄一下設定檔:

# 這是 Apache 程式、設定檔的路徑,正常人不會想改他
ServerRoot "/usr/local"

# 設 Apache 要聽哪個 port(前面可加 IP),除非有用 reverse proxy 否則不需要更動
Listen 80

# 載入一堆模組,有很多可以移除,但不確定的話建議別亂改
# LoadModule foo_module modules/mod_foo.so

# Apache 要以什麼使用者和群組執行
# 要注意一下會有一個程序是以 root 執行,原因是
# port 80 需要權限才有辦法 bind,因此需要 root
User www
Group www

# 管理員信箱
# 根據 RFC 2142 應該設成 webmaster@domain.tld,www@ 為 alias
ServerAdmin webmaster@hs.ntnu.edu.tw

# 網頁的資料,我通常都設成 /home/www/hostname
DocumentRoot "/home/www/www"

# 目錄之權限,預設當然是封鎖所有目錄
<Directory />
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

# 網頁所在的目錄之設定
<Directory "/home/www/www">
    # 允許 symlinks,預設有 Indexes 但被我拿掉了
    Options FollowSymLinks
    # 建議不要用 .htaccess 設定,效能差
    AllowOverride None
    # Allow 所有人
    Order allow,deny
    Allow from all
</Directory>

# 預設送哪些檔案,我加了 PHP
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

# 拒絕看 .htaccess 與 .htpasswd
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

# 紀錄檔位置,我通常會改目錄,這樣比較整齊
ErrorLog /var/log/httpd/httpd-error.log

# 紀錄之詳細程度
LogLevel warn

基本的設定檔就到這裡。接下來就是模組、額外的設定。看到 httpd.conf 最下面有很多被註解掉的設定檔。

  • extra/httpd-mpm.conf:管理 Apache 程序,除非流量很大否則預設就好
  • extra/httpd-userdir.conf:使用者網頁專用的模組
  • extra/httpd-info.conf:一些 server 的資訊
  • extra/httpd-vhosts.conf:虛擬主機,很有用,但 SSL方面有些限制
  • extra/httpd-default.conf:一些 Apache 的設定
  • extra/httpd-ssl.conf:SSL 的設定

通常我會改 httpd-info.confhttpd-default.confhttpd-vhosts.confhttpd-ssl.conf 有用到才會設。

httpd-info.conf:最好設成只有 127.0.0.1 可以看,或乾脆拿掉,有需要再啟用。另外,可以用 ExtendedStatus On

httpd-default.conf:改 ServerTokens ProdServerSignature Off

因為 httpd-vhosts.confhttpd-ssl.conf 設定比較複雜,先跳過。

一些常見的設定:

  • <Directory>:目錄
  • <FilesMatch>:檔案
  • <Location>:URL 的部分
  • AddType:Content 種類
  • Header:HTTP header
  • FileETag:ETag 的設定
  • SetOutputFilter:可以用來壓縮
  • Alias:別名
  • Redirect
  • Rewrite:有點像 mod_alias 的加強版
  • IndexOptions

一些常用的模組:

  • headers
  • cache
  • expires
  • deflate
  • alias
  • rewrite
  • ssl
  • vhost_alias

除此之外,CGI、PHP 和 content negotiation 也是一些常用的功能。

作者為dennylin93

2009/12/08 at 10:02 下午

安裝 Apache

沒有留言

網路上有很多種不同的 server,其中 Apache 是最受歡迎也是使用最久的 server 之一。現在 Netcraft 的 survey 顯示 Apache 佔了市場的 47%,接下來才是 IIS、nginx、lighttpd。

Apache 因為使用廣泛、歷史悠久,主要的優點包含:

  • 功能完整
  • 穩定
  • 支援度高

但比起 nginx、lighttpd 這兩個後起之秀,效能沒有那麼好。

現在仍然有許多網站使用 Apache,如 Wikipedia、W3C、ISC、Google(據說是用改版的 Apache)。

Apache 除了靜態網頁之外,還可以配合 PHP 與 MySQL 做動態網頁。

灌 Apache 其實很簡單,只要下:

# cd /usr/ports/www/apache22 && make install clean

模組很多,基本上用預設就好,不過可以不選 DAVDAV_FSCERN_METAIMAGEMAP(若要用 Subversion 要留 DAVDAV_FS)。

接下來把 apache22_enable="YES" 加入 /etc/rc.conf 就可以啟動 Apache 了:# /usr/local/etc/rc.d/apache22 start

除了 script 以外,還有 apachectl 可以使用。

測試設定檔有沒有問題:
# apachectl configtest
啟動 Apache:
# apachectl start
停止 Apache:
# apachectl stop
重新啟動 Apache:
# apachectl restart
重新啟動 Apache:
# apachectl graceful

restartgraceful 的差別在於 graceful 會先等現有的連線結束後才重新啟動。通常建議用 # apachectl graceful。若 Apache 沒有啟動,restartgraceful 都會啟動 Apache。

Apache 的設定檔位於 /usr/local/etc/apache22/httpd.confIncludes/extra 裡面也有一些設定)。

詳細設定之後在打。

作者為dennylin93

2009/12/08 at 9:15 下午

整天盯著電腦螢幕的心得

沒有留言

暑假又過完了,明天要開學考。這次暑假學了不少(不過也很雜),只是整天盯著電腦螢幕眼睛很累。幸好現在近視已經不會加深了。

先談 FreeBSD 以外的好了。之前花了幾天看 LaTeX,因為感覺很有趣,可以印出各種數學式子。他最大的功能其實是排版,可以用來弄文章、書之類然後轉成 PDF、PS 等格式。網路上有一本叫 The Not So Short Introduction to LaTeX2e,我幾乎都是看這本學的(此書的作者同時也是 RRDtool 與 MRTG 的作者)。裡面寫的還不錯,很多重點都有涵蓋到。

在 FreeBSD 用 LaTeX 感覺比 Windows 方便多了。用 Ports 安裝不用在下載 MiKTeX 之類的軟體。至於編輯器目前是用 Texmaker。會看 LaTeX 的原因也是因為想整理出一本 FreeBSD 的文件,不過沒做到。現在大概要等學測、指考考完了。

暑假幾乎都在忙郵件伺服器和防火牆。暑假也因此買了 The Book of PostfixThe Book of PF。防火牆已經架好了,也放上主幹,只是規則沒有完全寫好。這次還是用 FreeBSD 架,雖然又 pfSense 之類的方案,但沒有用。其實比想像中簡單。系統準備好之後在 kernel 中加入 PF、ALTQ 的選項以及 device if_bridge。之後 /etc/pf.conf 寫一寫就好了。除了過濾的規則之外,最大的變化應該是將 states、src-nodes、frags、table-entries 調大。 其實到目前為止還沒看過這些超過預設值(最多有過 7000 多個 states),但還是調大一點比較安全。

放上骨幹之後就加了一些軟體可以除錯、看流量、產生圖形。最基本當然有 pfctlpflogtcpdump。額外裝了 sysutils/pftopnet-mgmt/iftopnet/nload 來作為即時觀測。圖形則是加了 net-mgmt/mrtgsysutils/pfstat。MRTG 純粹只有流量,但 pfstat 有關於 PF 的資料。至於實際紀錄總流量則是使用 net-mgmt/bandwidthd

架設郵件伺服器困難度則是防火牆的好幾倍。用 Postfix、Dovecot 設定還算淺顯易懂(幸好不用看 Sendmail 的設定檔)。最麻煩的是要建立各種防止垃圾信件的方法,光是這個就不知道花了幾天的時間。最基本的是從 SMTP 連線中強迫 client 遵守 RFC,如:必須 helo/ehlo hostname、使用 FQDN 等。接下來就檢查 SPF,因為這樣可以避免有人偽裝成 server 亂發垃圾信件(像某某 IP 假冒 Gmail)。現在我也在學校的 domain 上加了「v=spf1 ip4:140.122.126.2 ip4:140.122.126.3 ~all」。還可以用 pcre 過濾 header 和 body,不過現在規則完全是空的。

剩下的方式都比較耗時間或系統資源。建立連線時,用 DNSBL 可以查詢該 IP 是否有不良紀錄,若有的話可以結束連線,不接收任何信件。主要的黑名單有 CBL、SpamhausSORBSSpamcopNJABL。其中 CBL 與 Spamhaus 擋掉最多,SORBS 與 Spamcop 其次而 NJABL 幾乎沒有(統計數字的時候我有調整使用順序)。其實 DNSBL 不會太耗資源、時間,因為只是用 DNS lookup。Greylisting 據說可以退掉不少 spam。用的方式是第一次收到信件會退信,標為 temporary failure。根據 RFC,temporary failure 的時候 MTA 必須再試著寄信。第二次收到信才會收下。電子郵件會被紀錄,這樣以後就不用再被退信了。當然有些可以列入 whitelist 中。整體而言第一次發 email 會被 delay 大約 5 到 20 分鐘,很少超過半小時。因為平常發 spam 他不會勤勞到寄第二次,所以可以退掉一些垃圾信件。

最後(應該說是不耗 CPU 資源中的最後一個方式),Postfix 有 address sender verification。這個功能會檢查 sender 的 email 是否可以收信,若可以的話才會把信件收下。為了省時間只有一些 domain 才會被 verify,驗證完之後也會將 email 存入資料庫,以後就不必再檢查。這也是一個有效的方式,不過通常會 delay 10 秒左右。

現在只剩下過濾信件內容了。主要用 SpamAssassin 過濾內容,然後用 ClamAV 掃毒。另一個方案是 amavisd-new,整合了 SpamAssassin 和其他軟體。

對了,我差點忘了 OpenBSD 的 spamd。這個是跟 PF 整合的軟體,可以 tarpit 和 greylist。不過既然已經有 mail/postgrey 做 greylisting,沒有必要再弄一次,目前主要用途是 tarpitting。用了 uatraps 和 nixspam 這兩個黑名單來檔 spammers。這個 IP 數量也相當驚人,目前 uatraps 有接近 700000 個 IP。若 IP 有被列入黑名單,PF 會將連線交給 spamd,一次只發送 1 byte,跟 block 掉他差不多。

Spam 到此差不多了。剩下的幾乎是 Dovecot 設定、建立 SQL 帳號之類。SQL 其實很簡單(之前以為很難)。Dovecot 改的設定比 Postfix 少很多,幾乎用預設就可以了。主要的差別應該是使用者從 SQL 讀取,PAM 可以註解掉。目前只剩 LDA、quota、sieve、trash 一些 plugin 沒弄好。

比較擔心的是現在我用的這台硬碟空間非常小,可能要移到別台上面。

The Book of Postfix 感覺還不錯,各方面講的都很詳細。特別是有幾章特別分析 Postfix 內部如何運作。我覺得這個很重要。其他像設定的部分,則是先講理論、原理,然後下一張才是實做。這與其他電腦書差異較大,但也因此而能夠徹底理解所有的設定。書裡的例子都十分完整,包括 SQL、SASL、TLS。最後還有一章特別寫用 LDAP 架設郵件伺服器。

講缺點的話當然還是有。最大的應該是我用的軟體跟他不太一樣。SASL、IMAP 我都是用 Dovecot,因為設定淺顯易懂,功能也很強大,有內建的 SASL 也十分方便。書則是用 Cyrus、Courier IMAP。另外一點是書有點舊,某些設定已改變了,不過這倒不用太擔心。只要設定前有參考 postconf 的 man page,上面都有列出舊版本與現在版本的設定。最後一個缺點是有一些錯誤(看 errata 感覺有點多)。不過整體而言,我覺得是一本非常好的電腦書,若要架設郵件伺服器可已參考看看。

The Book of PF 好像沒有那麼好,可已當做 PF FAQ 還有 man pages 的輔助,但沒有辦法取代他們。

暑假也花了不少時間在 FreeBSD Forums 上面。有很多問題幾乎都會有人回答,也有很多資料可以參考。

作者為dennylin93

2009/08/30 at 9:17 下午

基礎郵件伺服器架設

有2則留言

說實話,我覺得這篇打的非常爛,很多地方都沒寫清楚,也漏掉很多東西。我決定改天重打後再用 PDF。Formatting 有點奇怪,不是我的錯…WordPress 害的。這篇先作廢。

繼續閱讀文章 »

作者為dennylin93

2009/07/27 at 8:27 下午

編譯 OpenOffice.org

沒有留言

從灌 GNOME 以來,一直沒有用 ports 更新的就是 editors/openoffice.org-2。原因很明顯:這個 port 實在太巨大了。

最近因為想換成 editors/openoffice.org-3,而 mirror 上面都沒有 package,所以被迫用 ports 安裝。

事前當然有在網路上先問一下大概會多久。得到的回覆是:Core 2 Duo 的處理器花了 4 小時,而 Pentium 4 3.0 Ghz 的處理器則花了 12 個小時。我家電腦是 Pentium D 945 3.4 Ghz。雖然沒 Core 2 Duo、Core 2 Quad、Core i7 那麼威,但比 Pentium 4 好一點。

今天早上 8:37 就開始了。根據 ports 的資訊,最基本需求是 11 GB 的空間和 2 GB 的 RAM。RAM 足夠,但硬碟空間沒理他。之後,編了兩、三個小時左右,忽然發現 work/ 實在太恐怖了。再下去 /usr 的空間鐵定不足。原本可以用 symlink 來使用 /home 的空間,但編到一半了,不想從頭,唯一的辦法是開始對 /usr 做清理。首先砍掉 /usr/src/,釋出大約 500 MB。接下來殺掉 editors/openoffice.org-2。這樣空間沒多多少,只好繼續尋找。看到 /usr/ports/distfiles/ 有 2.2 GB 就趕快將他 rsync/home 底下,然後砍掉他。

接下來其實就是漫長的等待了,不過中間有發現電腦外殼超燙。幾個小時下來搞不好真的會燒壞,因為除了基本的 CPU 風扇、系統風扇,沒有其他的冷卻裝置。只好拿旁邊的電風扇吹主機…

電腦經過 9 個小時的奮戰後終於編完了。中間有拍 htoptop 的畫面。

htop

htop

top

top

結束後,看了 work/,爆增到 8.9 GB。過程中 RAM 看起來也沒有用多少,感覺 1 GB 應該綽綽有餘。我的心得:editors/openoffice.org-3 最好晚上裝,這樣早上起床一切都弄好了。

其實編譯過程中,十分耗系統資源。開 Firefox 幾乎不能動,但 Opera 卻好多了。雖然比較小,但功能齊全。話雖如此,但主要瀏覽器不太可能換成 Opera,太習慣 Firefox 了。從國小用到現在。昨天才剛將 Google Page Speed 裝好,今天 YSlow 又釋出新版本。看起來支援 Firefox 3.5,但還沒試。

上一次編巨大的 port 是 lang/gcc44。還留有 Munin 的紀錄,CPU 使用率衝最高的那段就是了。

CPU usage - by day

CPU usage - by day

作者為dennylin93

2009/07/08 at 8:20 下午

遠離 Office 程式

沒有留言

映像中自從國小畢業後幾乎沒在用 Microsoft Excel、PowerPoint。Word 則要打作業,比較常開。說實話,我似乎沒有認真用 PowerPoint 作過簡報,所以不知道這次會花這麼多時間。

這次準備了 FreeBSD Ports,不過內容沒有寫很多。Slideshow 使用字體比較大,也塞不了那麼多。若每個安裝的 port 都詳細介紹,不知道要幾天才講得完。理論上應該沒有忽略應該提得,但 ports-mgmt/portmaster 與 ports/portconf 還不會用,所以先空著,以後再補齊。現在真的覺得 portupgrade 很麻煩,需要裝一堆 Ruby 的東西。內容放了不少,很有可能講不完。

這次也因緣際會的使用了 Google Docs。不論在學校或家裡編輯都很方便,不用再上傳到網路上。雖然功能當然沒有 Microsoft PowerPoint 或 OpenOffice.org Impress 完整,但個人覺得還不錯。希望以後 theme 能提供更多選擇。

FreeBSD Ports 基礎篇:http://docs.google.com/Present?docid=df5vc9xw_5pjzgnmnq&skipauth=true

其他格式:http://cnmc32.hs.ntnu.edu.tw/~dennylin93/FreeBSD/

今天 FreeBSD 居然連發了三個 Security Advisory,首次看見。

作者為dennylin93

2009/06/11 at 11:19 下午

M$ Windows 即將被淘汰!

有4則留言

自從高一上就從心開始碰 Linux 和 BSD。我還記得國二時慘痛的經驗:在老舊的筆記型電腦裝上 Fedora Core 6 後,顯示晶片太爛,只能用 console。沒有 GUI 真的不能用。過不久候過放棄了。之後又試了 Ubuntu,但 CPU 太舊(只有 PIII 800 Mhz),跑起來不順,所以也放棄了。

現在裝過 Fedora、Debain、OpenSolaris、Ubuntu、CentOS、FreeBSD,OpenBSD 則用 VirtualBox 完了一下(很難用)。最後我家光碟都被我用光了,到現在還沒買過新的。

結論是 FreeBSD 安裝最方便,其餘 Linux 和 OpenSolaris 都差不多,但安裝後差別就大了。每個 distro 都有不同的特色(優缺點),像 Fedora、Ubuntu 很受歡迎,Debian、CentOS 較保守,常被拿來架伺服器。至於 FreeBSD 我覺得最好用(雖然事後的設定確實會讓人瘋掉)。

以往只有用 FreeBSD 當伺服器,最近幾天剛將 GNOME 裝好。不過OpenOffice.org、sound card、中文輸入等等都還沒設。昨天用 packages 裝,結果今天用 pkgdb -F 弄了好久,應該加個 -O 比較快。今天也更新了將近 100 個 port。

設 GRUB 的時候發現 M$ Windows 的硬碟要在第一個才能開機(好爛),用 virtual mapping 就可以解決。

剛剛才發現附中 www 上的 phpMyAdmin 爆了。跟 PCRE 的 extension 有關。懶得修了,等校外教學候在說。

明天要去校外教學!

弄了幾個 screenshot:

作者為dennylin93

2009/05/24 at 7:07 下午

荒廢很久了

沒有留言

不久之前,看了網誌後下一跳,原來已經荒廢 3 個月了 :p。這學期又有很多事情要忙,前幾天考完期末考。三角函數很刺激,下次要考和角、倍角、半角公式,還有棣美弗定理。沒想到昨天網路上聊天聽到某一間學校居然考得很簡單,有不少人 100 分。最近發現 Plurk 還滿好玩。

考試完了,得將 mail server 弄好,之前被搞的死去活來,真是難弄。現在發覺 DHCP、DNS 是最容易在短時間內學完。至於 Apache、PHP、MySQL 則需要經時間和經驗。現在的感覺是架 mail server 真的是在折磨人。

要 Postfix + Dovecot 運作沒有很難,但加上防毒軟體還有垃圾信件過濾器就不容易了。帳號打算用 NIS 了,MySQL 不熟,學長也說不要用 LDAP。

作者為dennylin93

2009/05/16 at 6:33 AM

殘廢

有一則留言

話說上星期五,我真的是死了。我和學長為了修改某個網頁,眼睛盯了螢幕很久,但一直找不出問題。最後發現 HTML 中的路徑看錯了…不小心將 news/bulletin/board/bulletin.php 看成 /news/bulletin/board/bulletin.php。兩個根本是天壤之別。唉,說到網頁,現在網管好像也沒有人會 PHP,所以有點很麻煩。

目前正在學 FreeBSD 當中。這星期電腦課,我在實驗機灌了 2 個 Apache,所以變成有 3 個。強吧?結果 port 80 被佔用,我恢復不了,因此只好重灌 FreeBSD。不過 FreeBSD 安裝很快,不用 15 分鐘就弄好了。希望下次社課能夠架好 Apache + PHP + MySQL + FTP。至於 SMTP server 以後再說。

今天下午下樓梯時腳又扭傷了,讓我想起國三也曾經發生過一次。那時候連走路都很困難,這次也一樣。大概要一段時間才會好。

作者為dennylin93

2008/11/07 at 10:23 下午

Freedom

有10則留言

The exams are finally over. It’ll be about 6 weeks before the final term, but for now I have time to rest. I spent part of the afternoon installing Apache HTTP Server, PHP, MySQL, and phpMyAdmin. The previous time I tried to install them, I got stuck after installing MySQL. Apache wouldn’t start because there was something wrong. This time, all of the software worked without problems, so I was surprised. I realized that reading the documentation and following instructions are very important. The only complication I had was that I didn’t know how to run MySQL properly using the MySQL Command Line Client, however, I installed phpMyAdmin, and that solved my problems. The advantages of installing software separately is that it is much easier to customize than packages such as XAMPP.

作者為dennylin93

2007/05/15 at 8:40 下午