前陣子 portmaster -aDG 以後一堆服務噴「function deprecated」,後來才知道 /usr/ports/lang/php5 目前是 PHP 5.3,更新後有不少函式被標記為 deprecated。
PHP 5.2 在 FreeBSD Ports 有另外被分出來放在 /usr/ports/lang/php52,先將原有的 make deinstall 再到 php52 make install clean 即可。
軟體開發、伺服器和生活瑣事
前陣子 portmaster -aDG 以後一堆服務噴「function deprecated」,後來才知道 /usr/ports/lang/php5 目前是 PHP 5.3,更新後有不少函式被標記為 deprecated。
PHP 5.2 在 FreeBSD Ports 有另外被分出來放在 /usr/ports/lang/php52,先將原有的 make deinstall 再到 php52 make install clean 即可。
以下全文轉錄、修改自:FreeBSD上でRedmineを試してみる – FileMakerとPHPのメモ
http://d.hatena.ne.jp/unam-h/20080501/1209642442
Redmine 是用 Ruby 撰寫成的專案管理系統,支援項目追蹤、工時追蹤、Wiki、版本控管、討論區等功能。不過因為沒有用過 trac 系統,沒辦法為大家做比較,若有朋友用過歡迎提供意見。
FreeBSD 較新的 ports 中有納入 Redmine:/usr/ports/www/redmine,但是自己從 make install 後到看官方說明書安裝仍然中途出錯失敗,所以參考其他方式安裝。
先到欲安裝的位置用 SVN 將 source code 取出:
svn co http://redmine.rubyforge.org/svn/tags/0.9.3/ redmine
然後建立資料庫設定檔:
cp config/database.yml.example database.yml
vim database.yml
修改資料庫帳號密碼:
production:
adapter: mysql
database: db_name
host: db_host
username: user
password: password
encoding: utf8
執行 rake 設定:
rake db:migrate RAILS_ENV="production"
rake redmine:load_default_data RAILS_ENV="production"
以上設定若沒有出現錯誤訊息,執行下面的指令可啟動伺服器:
ruby script/server -e production
伺服器預設是在 localhost:3000 上,用瀏覽器連到 3000 port 若有看到系統畫面便表示安裝成功。
接下來安裝 rails 和 passenger 讓伺服器可以掛在 Apache 上:
gem install rails --version 2.0.2
gem install passenger
接著建立 Apache mod:
passenger-install-apache2-module
在 httpd..conf 上加入 passenger module:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11
PassengerRuby /usr/local/bin/ruby18
重新啟動 Apache。
建立 Virtual Host 時,只要將網址的位置設定在 Redmine 的 public 位置即可:
<VirtualHost *:80>
ServerAdmin my@mail
DocumentRoot /home/user/redmine/public
ServerName redmine.my.url
<Directory /home/user/redmine/public>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
/etc/rc.conf :
sendmail_enable="NONE"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
/etc/periodic.conf :
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
因為手上有超過二台的主機是安裝 FreeBSD,因為 FreeBSD ports collection 一向都是要自己 make install,安裝大型套件會花不少時間編譯。
之前餅乾提到可以用 pkg_create 建立套件備份,然後直接拿去另一台做 pkg_add,這次重灌寫了個批次檔來測試,不過因為 shell script 不熟可以說繞了一大段遠路:
#!/usr/local/bin/bash
echo "Listing packages .... "
pkg_info | tee pkg_info.log | wc -l
mkdir pkg
awk '/.*/ {print "pkg_create -v -b " $1 " pkg/" $1 }' pkg_info.log > pack.sh
rm pkg_info.log
# Start to create package
echo "Creating packages .... "
chmod +x pack.sh
./pack.sh
rm pack.sh
# Start to tar
echo "tar .... "
tar -cf pkg_back.tar pkg/
echo "Creating MD5 checksum .... "
md5 pkg_back.tar > md5sum.log
# Clean
echo "Cleaning temp files .... "
rm -fr pkg/
將打包好的套件檔複製到另一台電腦,解壓縮後就可以使用 pkg_add 安裝套件:
> pkg_add `find ./pkg/ -name "*.tbz"`
pkg_add 時應該會看到一堆相依性的錯誤訊息,這是因為套件沒有按照順序安裝引起的,至於要如何檢查安裝完畢後相依性套件是否有正確安裝,等以後想到方法再補齊吧。
壞軌時可能會看到「TIMEOUT : Write_DMA / Read_DMA」的錯誤訊息,情況好的時後 retry 成功會繼續,壞軌嚴重的話看到這個訊息可能直接當機。
建議儘快把硬碟拆下來,到另一台裝有 FreeBSD 的機器上救資料 (Linux 一般對 UFS 只支援到讀取,之前在 Ubuntu 掛載失敗)。FreeBSD 內建 recoverdisk 工具讀取有損壞的硬碟,和 dd 一樣都是以低階的方式讀取資料,但是 recoverdisk 除了會顯示 status 以外,在遇到壞軌時會先記錄並跳過,等到整個磁區或磁碟讀取完成後,在以較小的 block 去讀取有損壞的磁區。
# recoverdisk /dev/bad_disk disk_dump.img
讀取完成以後可以掛載使用:
# mdconfig -a -t vnode -f disk_dump.img
md0
# mount /dev/md0s1a /media/disk