出神入化的google 又一讓我大驚的創舉
若我們擁有以下條件即可達成輕鬆, 不需任何成本
只要一杯咖啡的時間, 完成這個工作
1. gmail account (這個應該大家都有吧)
2. 自己的domain (這個不貴吧)
以下以funnyd.idv.tw 為例, 因我本身已提供funnyd.idv.tw 的mail services
故以下使用mail.funnyd.idv.tw 環境是BSD6.1
3 設定DNS . 新增MX 記錄 開啟funnyd.idv.tw 的zone file
mail IN MX 1 ASPMX.L.GOOGLE.COM.
mail IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
mail IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
mail IN MX 10 ASPMX2.GOOGLEMAIL.COM.
mail IN MX 10 ASPMX3.GOOGLEMAIL.COM.
mail IN MX 10 ASPMX4.GOOGLEMAIL.COM.
mail IN MX 10 ASPMX5.GOOGLEMAIL.COM.
www.mail IN CNAME ghs.google.com.
kill -1 `cat /var/run/named/pid`
4.
至https://www.google.com/a/ 申請mail.funnyd.idv.tw
然後依網頁說明step by step 建立
建立完畫面-> webmail : http://mail.google.com/a/mail.funnyd.idv.tw/
(  ̄ c ̄)y▂ξ 還送網頁空間
http://www.mail.funnyd.idv.tw-a.googlepages.com/home
還可以用 pop3 收下來
教學如下網址
http://mail.google.com/support/bin/answer.py?ctx=%67mail&hl=zh_TW&answer=12103
另外, 你說用gmail 有什麼好處, 什麼都不用說, 光說共用行事曆這個功能就嚇嚇叫了
還要提一點...有人一次申請3000個帳號, 也過...3000 * 2GB ...趨近6TB
辜狗果然是神...
2009年2月20日 星期五
ldap
LDAP 在原本的設計是整合多個伺服器的帳號, 不過其實LDAP 可以使用在通訊錄的整合
這些通訊錄或帳號也許可以不用是本機的實體帳號
但藉由OE or thundbird 此MUA 軟體, 也可以輕鬆達到自通訊錄尋找符合特定條件的人員相關資料
STEP 1
查詢是否有安裝LDAP 相關套件
rpm -qa | grep openldap
openldap-devel-2.3.19-4
openldap-servers-2.3.19-4
openldap-2.3.19-4
openldap-clients-2.3.19-4
STEP 2
修改openldap server端的設定檔
vi /etc/openldap/sldap.conf
找到以下
database bdb
suffix "dc=EXAMPLE,dc=com"
rootdn "cn=Manager,dc=EXAMPLE,dc=com"
修改如下
database bdb
suffix "dc=orz,dc=com" ; 這邊依你的需求
rootdn "cn=Manager,dc=orz,dc=com" 這邊dc的部份要與suffix 相同
以及認證的部份
rootpw {SSHA}ph2MuDim6HvZURdNqjqTkZiqE4WMMgDl
以上加密過的密碼是如何產生的呢?
先讓我們暫時將目前的vi 工作退至背景
esc 到命令模式 ctrl +z
[1]+ Stopped vim /etc/openldap/slapd.conf
使用slappasswd -s 欲產生的密碼
ex
slappasswd -s seednet
再將{SSHA}ph2MuDim6HvZURdNqjqTkZiqE4WMMgDl (加密過的seednet)
複製到/etc/openldap/slapd.conf
ok 在bash下打fg回到vi 工作
找到rootpw 將編碼過後的密碼加到rootpw 後
server端的設定就完成了,超簡單的..
啟動ldap 吧
/etc/init.d/ldap start
再來,建立屬於你的第一個ldif 檔案
內容如下
dn: dc=orz,dc=com
dc: orz
o: orz
ObjectClass: organization
ObjectClass: dcObject
dn: ou=people,dc=orz,dc=com
ObjectClass: top
ObjectClass: organizationalUnit
ou: people
dn: uid=geeko,ou=people,dc=orz,dc=com
ObjectClass: top
ObjectClass: PosixAccount
ObjectClass: ShadowAccount
ObjectClass: inetOrgPerson
uid: geeko
uidNumber: 1010
gidNumber: 100
cn: Geeko Chameleon
givenName: Geeko
sn: Chameleon
homeDirectory: /home/geeko
loginShell: /bin/bash
shadowMax: 99999
shadowWarning: 7
shadowInactive: -1
shadowMin: 0
shadowLastChange: 12609
這邊稍微提一下,在ObjectClass 的定義,有些欄位是MUST BE 所以當你定義了
ObjectClass: PosixAccount
那麼如 uidNumber 是必須,一定要填寫的
所以同理可證 你也可以自己定義屬於你自己需求的schema
位置在/etc/openldap/schema
所以目前我們就可以加入第一筆嘍
ldapadd -v -x -D "cn=Man" -W -f test.ldif
出現
Enter LDAP Password:
這邊當然是輸入剛剛由slappasswd -s 產生的那組seednet 嘍
add dc:
orz
add o:
orz
add ObjectClass:
organization
dcObject
adding new entry "dc=orz,dc=com"
modify complete
add ObjectClass:
top
organizationalUnit
add ou:
people
adding new entry "ou=people,dc=orz,dc=com"
modify complete
add ObjectClass:
top
PosixAccount
ShadowAccount
inetOrgPerson
add uid:
geeko
add uidNumber:
1010
add gidNumber:
100
add cn:
Geeko Chameleon
add givenName:
Geeko
add sn:
Chameleon
add homeDirectory:
/home/geeko
add loginShell:
/bin/bash
add shadowMax:
99999
add shadowWarning:
7
add shadowInactive:
-1
add shadowMin:
0
add shadowLastChange:
12609
adding new entry "uid=geeko,ou=people,dc=orz,dc=com"
modify complete
霹靂啪啦就加完了
也就是說,目前你已經可以透過MUA 透過LDAP SERVER 查詢資料嘍
打開oe 點選通訊錄->工具->帳戶->新增->輸入ldap server 所在的ip->是否檢查
個人地址,這邊視個人需求->完成
再回到剛新增的通訊錄目錄服務內,選擇剛新增的ldap server 點選內容->進階
搜查依據選擇dc=orz,dc=com
再來就可以使用嘍
這些通訊錄或帳號也許可以不用是本機的實體帳號
但藉由OE or thundbird 此MUA 軟體, 也可以輕鬆達到自通訊錄尋找符合特定條件的人員相關資料
STEP 1
查詢是否有安裝LDAP 相關套件
rpm -qa | grep openldap
openldap-devel-2.3.19-4
openldap-servers-2.3.19-4
openldap-2.3.19-4
openldap-clients-2.3.19-4
STEP 2
修改openldap server端的設定檔
vi /etc/openldap/sldap.conf
找到以下
database bdb
suffix "dc=EXAMPLE,dc=com"
rootdn "cn=Manager,dc=EXAMPLE,dc=com"
修改如下
database bdb
suffix "dc=orz,dc=com" ; 這邊依你的需求
rootdn "cn=Manager,dc=orz,dc=com" 這邊dc的部份要與suffix 相同
以及認證的部份
rootpw {SSHA}ph2MuDim6HvZURdNqjqTkZiqE4WMMgDl
以上加密過的密碼是如何產生的呢?
先讓我們暫時將目前的vi 工作退至背景
esc 到命令模式 ctrl +z
[1]+ Stopped vim /etc/openldap/slapd.conf
使用slappasswd -s 欲產生的密碼
ex
slappasswd -s seednet
再將{SSHA}ph2MuDim6HvZURdNqjqTkZiqE4WMMgDl (加密過的seednet)
複製到/etc/openldap/slapd.conf
ok 在bash下打fg回到vi 工作
找到rootpw 將編碼過後的密碼加到rootpw 後
server端的設定就完成了,超簡單的..
啟動ldap 吧
/etc/init.d/ldap start
再來,建立屬於你的第一個ldif 檔案
內容如下
dn: dc=orz,dc=com
dc: orz
o: orz
ObjectClass: organization
ObjectClass: dcObject
dn: ou=people,dc=orz,dc=com
ObjectClass: top
ObjectClass: organizationalUnit
ou: people
dn: uid=geeko,ou=people,dc=orz,dc=com
ObjectClass: top
ObjectClass: PosixAccount
ObjectClass: ShadowAccount
ObjectClass: inetOrgPerson
uid: geeko
uidNumber: 1010
gidNumber: 100
cn: Geeko Chameleon
givenName: Geeko
sn: Chameleon
homeDirectory: /home/geeko
loginShell: /bin/bash
shadowMax: 99999
shadowWarning: 7
shadowInactive: -1
shadowMin: 0
shadowLastChange: 12609
這邊稍微提一下,在ObjectClass 的定義,有些欄位是MUST BE 所以當你定義了
ObjectClass: PosixAccount
那麼如 uidNumber 是必須,一定要填寫的
所以同理可證 你也可以自己定義屬於你自己需求的schema
位置在/etc/openldap/schema
所以目前我們就可以加入第一筆嘍
ldapadd -v -x -D "cn=Man" -W -f test.ldif
出現
Enter LDAP Password:
這邊當然是輸入剛剛由slappasswd -s 產生的那組seednet 嘍
add dc:
orz
add o:
orz
add ObjectClass:
organization
dcObject
adding new entry "dc=orz,dc=com"
modify complete
add ObjectClass:
top
organizationalUnit
add ou:
people
adding new entry "ou=people,dc=orz,dc=com"
modify complete
add ObjectClass:
top
PosixAccount
ShadowAccount
inetOrgPerson
add uid:
geeko
add uidNumber:
1010
add gidNumber:
100
add cn:
Geeko Chameleon
add givenName:
Geeko
add sn:
Chameleon
add homeDirectory:
/home/geeko
add loginShell:
/bin/bash
add shadowMax:
99999
add shadowWarning:
7
add shadowInactive:
-1
add shadowMin:
0
add shadowLastChange:
12609
adding new entry "uid=geeko,ou=people,dc=orz,dc=com"
modify complete
霹靂啪啦就加完了
也就是說,目前你已經可以透過MUA 透過LDAP SERVER 查詢資料嘍
打開oe 點選通訊錄->工具->帳戶->新增->輸入ldap server 所在的ip->是否檢查
個人地址,這邊視個人需求->完成
再回到剛新增的通訊錄目錄服務內,選擇剛新增的ldap server 點選內容->進階
搜查依據選擇dc=orz,dc=com
再來就可以使用嘍
由ms 備份至linux
需求: Windows WebServer 要備份至Linux Server
建立folder 就叫backup
置放rar.exe
至backup folder 內
建立一Backup.bat
內容如下:
@echo off
rar a -ag[YYYYMMDD] backup @backup.lst
ftp -n -s:myfile.scr
del backup[*].rar
建立backup.lst 檔案
內容為你要備份的完整路徑
如D:\IWANNABACKUPTHISFOLDER
建立myfile.scr
內容:
open YourLinuxServerIP
user backup ->You must create before use
backup -> passwd about accout backup
hash
prompt
mput backup[*].rar
bye
建立完成後,即可使用m$內的排程工作定期執行該任務
這部份就不多賛敘了
P.s 由於這樣做對安全上是有一定的影響
iptables 要設定限制
另外
記得要/sbin/modprobe ip_conntrack_ftp
建立folder 就叫backup
置放rar.exe
至backup folder 內
建立一Backup.bat
內容如下:
@echo off
rar a -ag[YYYYMMDD] backup @backup.lst
ftp -n -s:myfile.scr
del backup[*].rar
建立backup.lst 檔案
內容為你要備份的完整路徑
如D:\IWANNABACKUPTHISFOLDER
建立myfile.scr
內容:
open YourLinuxServerIP
user backup ->You must create before use
backup -> passwd about accout backup
hash
prompt
mput backup[*].rar
bye
建立完成後,即可使用m$內的排程工作定期執行該任務
這部份就不多賛敘了
P.s 由於這樣做對安全上是有一定的影響
iptables 要設定限制
另外
記得要/sbin/modprobe ip_conntrack_ftp
mutt db to gmail
#!/bin/sh
DATESTR=`date "+%Y%m%d%H"`
/usr/bin/mysqldump --add-locks btwoe > /root/tmp/backupb2e.$DATESTR.sql
/bin/tar -zcvf /root/tmp/etcbackup$DATESTR.tar.gz /etc
/bin/tar -zcvf /tmp/mybackup.tgz /root/tmp
echo "etc and sql backup" | mutt -a /tmp/mybackup.tgz yourgmailaccout@gmail.com "etc and sql backup"
DATESTR=`date "+%Y%m%d%H"`
/usr/bin/mysqldump --add-locks btwoe > /root/tmp/backupb2e.$DATESTR.sql
/bin/tar -zcvf /root/tmp/etcbackup$DATESTR.tar.gz /etc
/bin/tar -zcvf /tmp/mybackup.tgz /root/tmp
echo "etc and sql backup" | mutt -a /tmp/mybackup.tgz yourgmailaccout@gmail.com "etc and sql backup"
iptables block ssh attempt attack
iptables block ssh attempt 適用於RedHat,Fedora
#容忍值可以調高一點(粗體字)
#! /bin/bash
VAL=`grep Failed /var/log/secure | awk '{print $(NF-3)}' |cut -d: -f4 | sort | uniq -c |awk '{print $1"="$2}'`
for i in $VAL
do
NUM=`echo $i|awk -F= '{print $1}'`
IP=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -p tcp -s $IP -j REJECT --reject-with tcp-reset
echo "platinum log: `date` $IP($NUM)" >> /var/log/val.log
fi
done
iptables block ssh attempt 適用於Debian
#容忍值可以調高一點(粗體字)
#!/bin/bash
VAL=`grep Illegal /var/log/auth.log | awk '{print $10}' | sort | uniq -c | awk '{print $1"="$2}'`
for i in $VAL
do
NUM=`echo $i|awk -F= '{print $1}'`
echo $NUM
IP=`echo $i|awk -F= '{print $2}'`
echo $IP
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -p tcp -s $IP -j REJECT --reject-with tcp-reset
echo "platinum log: `date` $IP($NUM)" >> /var/log/val.log
fi
done
#容忍值可以調高一點(粗體字)
#! /bin/bash
VAL=`grep Failed /var/log/secure | awk '{print $(NF-3)}' |cut -d: -f4 | sort | uniq -c |awk '{print $1"="$2}'`
for i in $VAL
do
NUM=`echo $i|awk -F= '{print $1}'`
IP=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -p tcp -s $IP -j REJECT --reject-with tcp-reset
echo "platinum log: `date` $IP($NUM)" >> /var/log/val.log
fi
done
iptables block ssh attempt 適用於Debian
#容忍值可以調高一點(粗體字)
#!/bin/bash
VAL=`grep Illegal /var/log/auth.log | awk '{print $10}' | sort | uniq -c | awk '{print $1"="$2}'`
for i in $VAL
do
NUM=`echo $i|awk -F= '{print $1}'`
echo $NUM
IP=`echo $i|awk -F= '{print $2}'`
echo $IP
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]
then
iptables -I INPUT -p tcp -s $IP -j REJECT --reject-with tcp-reset
echo "platinum log: `date` $IP($NUM)" >> /var/log/val.log
fi
done
SMTP protocol synchronization error (next input sent too soon: pipelining was not advertised)
在某些硬體spam 設備做將被隔離的信件撈回動作時, 會被exim 擋掉
錯誤訊息如下
SMTP protocol synchronization error (next input sent too soon: pipelining was not advertised)
可以將exim 的檢查選項關閉
default 是開啟的
在main configure 內
加入
smtp_enforce_sync = false
可避免再發生上敘問題
錯誤訊息如下
SMTP protocol synchronization error (next input sent too soon: pipelining was not advertised)
可以將exim 的檢查選項關閉
default 是開啟的
在main configure 內
加入
smtp_enforce_sync = false
可避免再發生上敘問題
exim with DNS SPF
在exim 配置DNS SPF 檢查
在EXIM 上的應用在exim configure acl sector 加入
acl_check_rcpt:
#...
# Use spfquery to perform a pair of SPF checks (for details, see
# http://www.openspf.org/)
#
# This is quite costly in terms of DNS lookups (~6 lookups per mail). Do not
# enable if that's an issue. Also note that if you enable this, you must
# install "libmail-spf-query-perl" which provides the spfquery command.
# Missing libmail-spf-query-perl will trigger the "Unexpected error in
# SPF check" warning.
deny
message = [SPF] $sender_host_address is not allowed to send mail from \
${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}. \
Please see http://www.openspf.org/why.html?sender=$sender_address&ip=$sender_host_address
log_message = SPF check failed.
condition = ${run{/usr/bin/spfquery --ip \"$sender_host_address\" \
--mail-from \"$sender_address\" --helo \"$sender_helo_name\"} \
{no}{${if eq {$runrc}{1}{yes}{no}}}}
defer
message = Temporary DNS error while checking SPF record. Try again later.
condition = ${if eq {$runrc}{5}{yes}{no}}
warn
message = Received-SPF: ${if eq {$runrc}{0}{pass}{${if eq {$runrc}{2}{softfail}\
{ ${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if le {$runrc}{6}{yes}{no}}
warn
log_message = Unexpected error in SPF check.
condition = ${if gt {$runrc}{6}{yes}{no}}
# Support for best-guess (see http://www.openspf.org/developers-guide.html)
warn
message = X-SPF-Guess: ${run{/usr/bin/spfquery --ip \"$sender_host_address\" \
--mail-from \"$sender_address\" \ --helo \"$sender_helo_name\" --guess true}\
{pass}{${if eq {$runrc}{2}{softfail}{${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if le {$runrc}{6}{yes}{no}}
defer
message = Temporary DNS error while checking SPF record. Try again later.
condition = ${if eq {$runrc}{5}{yes}{no}}[img][/img]
簡單來說
DNS SPF record 應先配置在dns server 上
而DNS SPF check 則應在該機制成熟後加入,減少spam 信件
在EXIM 上的應用在exim configure acl sector 加入
acl_check_rcpt:
#...
# Use spfquery to perform a pair of SPF checks (for details, see
# http://www.openspf.org/)
#
# This is quite costly in terms of DNS lookups (~6 lookups per mail). Do not
# enable if that's an issue. Also note that if you enable this, you must
# install "libmail-spf-query-perl" which provides the spfquery command.
# Missing libmail-spf-query-perl will trigger the "Unexpected error in
# SPF check" warning.
deny
message = [SPF] $sender_host_address is not allowed to send mail from \
${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}. \
Please see http://www.openspf.org/why.html?sender=$sender_address&ip=$sender_host_address
log_message = SPF check failed.
condition = ${run{/usr/bin/spfquery --ip \"$sender_host_address\" \
--mail-from \"$sender_address\" --helo \"$sender_helo_name\"} \
{no}{${if eq {$runrc}{1}{yes}{no}}}}
defer
message = Temporary DNS error while checking SPF record. Try again later.
condition = ${if eq {$runrc}{5}{yes}{no}}
warn
message = Received-SPF: ${if eq {$runrc}{0}{pass}{${if eq {$runrc}{2}{softfail}\
{ ${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if le {$runrc}{6}{yes}{no}}
warn
log_message = Unexpected error in SPF check.
condition = ${if gt {$runrc}{6}{yes}{no}}
# Support for best-guess (see http://www.openspf.org/developers-guide.html)
warn
message = X-SPF-Guess: ${run{/usr/bin/spfquery --ip \"$sender_host_address\" \
--mail-from \"$sender_address\" \ --helo \"$sender_helo_name\" --guess true}\
{pass}{${if eq {$runrc}{2}{softfail}{${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if le {$runrc}{6}{yes}{no}}
defer
message = Temporary DNS error while checking SPF record. Try again later.
condition = ${if eq {$runrc}{5}{yes}{no}}[img][/img]
簡單來說
DNS SPF record 應先配置在dns server 上
而DNS SPF check 則應在該機制成熟後加入,減少spam 信件
exim with maildir
platform :centos 5 , exim 4.69
begin routers 區段
localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = maildir_delivery
cannot_route_message = Unknown user
begin transports 區段
maildir_delivery:
driver = appendfile
directory = /home/$local_part/maildir
delivery_date_add
envelope_to_add
return_path_add
maildir_format
check_string =
restart exim services .
log
2008-09-02 13:23:07 1KaOM7-0001P7-Bc <= lalala@mail.abc.com.tw H=mail.proeurotex.com.tw [123.123.123.123] P=esmtp S=823 id=200809020523.m825NCvl022516@mail.abc.com.tw
2008-09-02 13:23:07 1KaOM7-0001P7-Bc => admin R=localuser T=maildir_delivery
2008-09-02 13:23:07 1KaOM7-0001P7-Bc Completed
驗證一下 , 使用者家目錄
產生了maidlr 此目錄 內有cur new tmp 目錄
在new 目錄
1220332987.H475850P5403.andrew.usnei.net
在imap pop3 server 我使用dovecot
在 /etc/dovecot.conf 內
加入
mail_location = maildir:~/maildir
如果要使用ipop3 的話 ,
我不確定有沒有支援
同時我也不建議, ipop3 基本上已經過時了
dovecot 支援較多的功能
效能也一直隨著版本更新改善
begin routers 區段
localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = maildir_delivery
cannot_route_message = Unknown user
begin transports 區段
maildir_delivery:
driver = appendfile
directory = /home/$local_part/maildir
delivery_date_add
envelope_to_add
return_path_add
maildir_format
check_string =
restart exim services .
log
2008-09-02 13:23:07 1KaOM7-0001P7-Bc <= lalala@mail.abc.com.tw H=mail.proeurotex.com.tw [123.123.123.123] P=esmtp S=823 id=200809020523.m825NCvl022516@mail.abc.com.tw
2008-09-02 13:23:07 1KaOM7-0001P7-Bc => admin
2008-09-02 13:23:07 1KaOM7-0001P7-Bc Completed
驗證一下 , 使用者家目錄
產生了maidlr 此目錄 內有cur new tmp 目錄
在new 目錄
1220332987.H475850P5403.andrew.usnei.net
在 /etc/dovecot.conf 內
加入
mail_location = maildir:~/maildir
如果要使用ipop3 的話 ,
我不確定有沒有支援
同時我也不建議, ipop3 基本上已經過時了
dovecot 支援較多的功能
效能也一直隨著版本更新改善
2009年2月11日 星期三
FreeBSD 更新security patch
FreeBSD 7.1 STABLE
cp /usr/share/examples/cvsup/stable-supfile /path/cvsupfile/
vi stable-supfile
*default host=CHANGE_THIS.FreeBSD.org -> *default host=cvsup.tw.freebsd.org
*default release=cvs tag=RELENG_7 -> *default release=cvs tag=RELENG_7_1
cvsup -g -L 2 /path/cvsupfile/stable-supfile
縮小pietty ....站起來倒咖啡 . 回去座位 放咖啡 走到窗戶旁. 看綠色 .....
更新完後
cd /usr/src
make -j4 buildworld (j4 :用4個process 處理buildworld , 衝呀!)
但你別天真的以為這樣就會音速build 好你的新world !......建議你再去喝一杯咖啡
跑完了之後.
你以為等待的戲碼已經完了嗎.. 錯! (大錯特錯 不要來! ) ....(冷
再來你可以到 /usr/src/sys/i386/conf 內
把原本的GENERIC kernel cp 一份到你想放的地方去 比如 /root/kernel的家/ ...etc
但請切記 做個軟連結到目前目錄
就是 cp /usr/src/sys/i386/conf/GENERIC /root/kernel_home/SUPERMANKERNEL
在/usr/src/sys/i386/conf/ 底下 ln -s /root/kernel_home/SUPERMANKERNEL . <- 是的,這裡有個點
然後你就可以使用你喜歡的編輯器 vi ee whenever ..
把你的kernel 瘦身一下 . . 把一些不必要用不到的東西拿掉
要知道, 我的kernel 不需要全副武裝只是為了打開我家角落那台長滿灰塵 高中生看到都把他當垃圾一樣的PIII 800
好了之後
恭喜你 . 出運了 . 再來是 第三次等待
cd /usr/src
make buildkernel KERNCONF=SUPERMANKERNEL
................一樣照慣例 , 你可以縮小pietty . 看一下搖桿驅動程式內有沒有還沒有溫習的 (誤
在make buildkernel 完成後, 你就可以進行
make installkernel KERNCONF=SUPERMANKERNEL <- 這部份快多了, 畢竟不是重新去build 一個kernel 或world
kernel install 完了, 請重新開機 reboot
開機選單選6
在OK 後面輸入 boot -s 進入單人模式
進來之後 你會發現 囧 只有 /
沒關希 mount -u / <- 這個動作就像是 linux 的mount -o remount rw /
再mount -a <- 依據/etc/fstab 將 partition mount 起來
df 一下..哇~ 都回來了
cd /usr/src
開始mergemaster -p 建立一個臨時環境 把新的config 文件放在這 然後跟系統的文件比較
the directory specified for temporary root environment, /var/tmp/temproot,
exist , This can be a security risk if untrusted user have access to the system
他說, 將這個目錄指定到root 的環境, 但是這會有風險的 如果曾經有不可信任的使用者存取過這個系統
都這樣講了, 我們就選擇d 先刪除原有的目錄 再新建一個臨時的目錄供他存放
再來
我們就make installworld 這部份也很快滴
installworld 完之後
使用 mergemaster 將/etc 底下設定檔更新
這時他會問你 要使用什麼方式來對該文件配置
d 不更新
i 直接用新的蓋過去
m 根據新的文件 與系統文件合併
v 查看新的跟原有的有什麼不同
所以通常 這些事 我會再安裝新系統時做, 全部選擇 i 就好了XD
再來就重新開機 你花了幾個小時 不就為了看uname -a 居然變成了
7.1-RELEASE-p2 FreeBSD 7.1-RELEASE-p2 #1
傑克 這真是太神奇了!
再來為了不讓以後發生不必要的錯誤 及加快下次make buildworld 的速度 請記得
cd /usr/obj (存放編輯的結果) chflags -R noschg * (某些檔案在過程中會賦予不可更動的flag 把此取消) rm -rf * (做這個動作請確認你在對的目錄 對的機器上, 我通常一次會連五六台機器)
參考的網站有
net網誌 Freebsd.doc
2009年2月8日 星期日
更新完perl , openwebmail 無法開啟 -.-
cd /var/db/pkg
portupgrade -m ENABLE_SUIDPERL=yes -f perl-5.8.\*
perl-after-upgrade perl-after-upgrade -f
portupgrade -m "-DFORCE_PKG_REGISTER" -rf perl-5.8.\* -x perl-5.8.\*
edit /usr/local/etc/pkgtools.conf
at MAKE_ARGS setcion
MAKE_ARGS = {
'lang/perl5.8' => 'ENABLE_SUIDPERL=yes', }
portupgrade -m ENABLE_SUIDPERL=yes -f perl-5.8.\*
perl-after-upgrade perl-after-upgrade -f
portupgrade -m "-DFORCE_PKG_REGISTER" -rf perl-5.8.\* -x perl-5.8.\*
edit /usr/local/etc/pkgtools.conf
at MAKE_ARGS setcion
MAKE_ARGS = {
'lang/perl5.8' => 'ENABLE_SUIDPERL=yes', }
2009年2月3日 星期二
bsd nginx php5 fastcgi
安裝
nginx by port
php5 by port
mod_fastcgi by port
rehash
/usr/local/bin/php-cgi -h
-b| Bind Path for external FASTCGI Server mode
/usr/local/bin/php-cgi -b 127.0.0.1:9000 & 錯誤的做法 , 關聯性都搞錯了 090310
應再安裝
spawn-fcgi
此套件包在lighttpd ,不過已經分割出來成為一個獨立的project了,相關的訊息在here
anyway 開始安裝 lightttpd
修改server_name
location 修改
index index.php index.html
unmark 以下部分
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
紅色是修改的部分
/usr/local/etc/rc.d/nginx restart
啟動
php 的fastcgi
shiningray 與 張宴 及 義氣幫的gslin大大
及剛提到的FreeBSDChinaWiki
nginx by port
php5 by port
mod_fastcgi by port
rehash
/usr/local/bin/php-cgi -h
-b
應再安裝
spawn-fcgi
此套件包在lighttpd ,不過已經分割出來成為一個獨立的project了,相關的訊息在here
anyway 開始安裝 lightttpd
pkg_add -r -v lighttpd (-r 處理相依性, -v 詳細模式)
裝完了之後, 其實我們僅僅需要 spawn-fcgi 此執行檔
先將spawn-fcgi 搬到家目錄下
rehash
whereis spawn-fcgi
spawn-fcgi: /usr/local/bin/spawn-fcgi
cp /usr/local/bin/spawn-fcgi ~
pkg_delete -v lighttpd-1.4.18_1
vi /usr/local/etc/nginx/nginx.conf
location 修改
index index.php index.html
unmark 以下部分
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
紅色是修改的部分
/usr/local/etc/rc.d/nginx restart
啟動
php 的fastcgi
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi參考網站有
轉錄自 FreeBSDCHINAWiki 的 fastcgi script
#!/bin/sh
PROVIDES=php-cgi
LIGHTTPD_FCGI=/usr/local/bin/spawn-fcgi
SERVER_IP=127.0.0.1
SERVER_PORT=9000
SERVER_USER=www
SERVER_GROUP=www
PHP_CGI=/usr/local/bin/php-cgi
PGREP=/bin/pgrep
KILLALL=/usr/bin/killall
### No editing below ####
cmd=$1
pcgi_start(){
echo "Starting $PROVIDES..."
$LIGHTTPD_FCGI -a $SERVER_IP -p $SERVER_PORT -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI
}
pcgi_stop(){
echo "Killing $PROVIDES..."
$KILLALL $PROVIDES
}
pcgi_restart(){
pcgi_stop
pcgi_start
}
pcgi_status(){
$PGREP $PROVIDES > /dev/null
[ $? -eq 0 ] && echo "$PROVIDES running" || echo "$PROVIDES NOT running"
}
pcgi_help(){
echo "Usage: $0 {start|stop|restart|status}"
}
case ${cmd} in
[Ss][Tt][Aa][Rr][Tt]) pcgi_start;;
[Ss][Tt][Oo][Pp]) pcgi_stop;;
[Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;;
[Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status ;;
*) pcgi_help ;;
esac
shiningray 與 張宴 及 義氣幫的gslin大大
及剛提到的FreeBSDChinaWiki
訂閱:
文章 (Atom)