20121128-163338_20121128-125428_FreeBSD_2012_

Download Report

Transcript 20121128-163338_20121128-125428_FreeBSD_2012_

FreeBSD9.0版系統與相關務務
安裝研習
基隆市教育網路中心 王言俊
2012/11/21 課程
•
•
•
•
•
•
以Virtual Machine Player打造虛擬的Server。
以FreeBSD9.X版建置伺服器。
FreeBSD9.X版的細部設定。
以ports安裝FreeBSD的各項服務。
Domain Server的建置。
以IPFW建置防火牆。
2012/11/28 課程
•
•
•
•
•
安裝FTP Server。
安裝MySQL Server。
安裝Apache2.2.X加PHP5.X。
設定Web Service。
架設Server時常見的排難解紛。
以Virtual Machine Player打造虛擬的
Server
• VM Player下載位址:
http://www.vmware.com/products/player/
• 下載適合版本的VM Player並安裝:
安裝完成後點擊Finish即可。
安裝完後點擊桌面上VM的圖
示,一開始會出現License
Agreement畫面,點擊YES。
VM Player的執行畫面。以本此課程而言,應該是新建一個Virtual Machine。故
點擊Create a New Virtual Machine。
VM Player可直接讀取下載來的ISO檔。這樣就不用燒錄光碟片了,省時又環保。
以FreeBSD9.X版建置伺服器
• FreeBSD官方網站:www.freebsd.org
• 自9.0版起,FreeBSD安裝方式(畫面)有了些
許不同。
直接點擊Install進行
安裝。
設定default key
mapping。如果不想
修改,按TAB至No,
再點OK維持預設值
即可。
設定本機的
hostname。如:
test.center.kl.edu.t
w
安裝套件。其中
games建議取消,安
裝ports與src即可。
移動上下鍵至其中,
再點擊空白鍵選擇
或取消。
直接按Enter,以
Guided(引導)模式安
裝系統。
點擊Enter Disk,意即
將整個硬碟都交給
FreeBSD系統使用。
預設的磁碟分配。建議修改。否則系統會自行安裝。通常建議的磁碟分區如下:
/;freebsd-boot;freebsd-swap;/var;/usr;/usr/local/;/home;/tmp
• 建議的磁碟分區:
分區名稱
(mount point)
大小
(size)
類型
(type)
說明
/
1-5G
freebsd-ufs
FreeBSD根目錄,大小視
系統大小而定。
/usr
5-20G
freebsd-ufs
FreeBSD系統目錄。可以
的話留大一點,5G以上。
/usr/local
5-10G
freebsd-ufs
主要是放置系統網頁(站)。
大小視需求而定。
/home
1-XXG
freebsd-ufs
使用者家目錄。大小視需
求而定。
/var
5-20G
freebsd-ufs
預設的log,資料庫檔所在
目錄,大小視需求而定。
/tmp
1-5G
freebsd-ufs
暫存檔。
None
1-XXG
freebsd-swap
SWAP目錄。大小為實體
記憶的4倍。
點擊C(Create)建立新分區。
在分區上點擊D(Delete)刪除
分區,點擊M(Modify)修改
分區。
分區完成後點擊F(Finish)進
行下一步的安裝。
點擊C(Commit)或直接按
Enter表示確認分區後安裝。
分區切割完成後,正在裝安
FreeBSD的系統,包含
base(主程式)、kernel( 核心)、
等均會安裝下去。
安裝成功後,系統
會要求輸入root的
密碼。輸入時不會
有任何訊息,輸完
後還要再輸一次確
認。
設定網路卡(IP)
設定IPV4與IPV6。如果不太確認IPV6的
話,可按TAB至No,再點擊Enter跳過
IPV6的設定。
是否要設定DHCP?在虛擬的環境裡可以點擊Yes,但在實體環境請點擊No,
並根據學校實際的網路環境設定。如DNS、GateWay與NetMask。
本市各校IPV4配當表。
以本次上課為例,IP可設成192.168.209.129、DNS設成192.168.209.2、
GateWay設成192.168.209.1、NetMask設成255.255.255.0
設定系統時區。預設是UTC。依次輸入後點擊OK即可完成設定。
系統設定選項。預設啟動的是sshd。
FreeBSD9.0版增加了crash dumps功能,可預防因不當關機(停電、當機…)造成
的損害,但它會消耗一些/var 分區的容量。如果要啟動,直接按Enter。
系統會要求再輸入至少一個使用者。請點擊Yes。
此例中輸入的使用者名稱是yenchun,注意它的群組是wheel。代表這個使用者
與root(系統最高權限管理者)屬同一群組。FreeBSD不允許root從遠端登入,一
定要透過一個同群組(wheel)的使用者,先登入系統後再切換(su -> super user)
為root。如此作法也是安全性的考量。
最後確認密碼,輸入Yes完成yenchun這個帳號的新建動作。
系統會詢問是否要再新增一名使用者,通常輸入no。按下Enter後,系統會跳
到#提示字元下,此時輸入Exit。
直接按Enter進行Reboot(重新開機),完成FreeBSD的安裝。
除了IP與hostname的設定外,VM與實體環境均為一樣。
FreeBSD經典
的小惡魔開機
畫面。愈改愈
難看。
FreeBSD登入後的畫
面。此時可以使用
遠端方式登入
FreeBSD系統。
• 遠端連入Server。首選putty這個小程式。
• 官網下載直接執行即可。
①
②
③
如左所示,依序完成
Host Name(IP address)、
Save Sessions的輸入,
最後點擊Save,以備
日後可以再點擊Load
即遠端連入這台Server。
第一次以putty遠端登入Server的畫面,因為Server端採sshd,會傳送一組key進
到這台欲遠端登入的電腦,請按下Y儲存,這樣子往後登入時,Server端的
sshd就會比對電腦裡的key是否正確,如果正確就可以直接輸入帳號/密碼。
使用者登入成功後的畫面。如果是同屬於wheel群組的使用者,可以輸入
su root密碼切換到root的身份。執行一些只有root才能執行的指令,如make;
sysintsall….等。
FreeBSD9.X版的細部設定
•
•
•
•
•
•
IP與hostname修改(含IPV6)。
為系統加上顏色(區別檔案屬性與目錄)。
排程系統校時。
建一個資源回收桶。
ports安裝眾套件與服務。
直接輸入sudo su切換成root。
• 修改IP與hostname
主要是下列檔案:
/etc/rc.conf、/etc/reslov.conf、/etc/hosts
ee /etc/rc.conf
直接修改即可。其中d(刪除)、Ctrl+k(刪一整
行)…用法均已在畫面上顯示。
IPV6部份:
先試一下學校的網路環境是否支援IPV6:
ping6 ::1 如果如下圖所示,即可將如下設定
(八斗高中為例)加入rc.conf中。
ipv6_activate_all_interfaces="YES“
ipv6_ipv4mapping="YES“
ifconfig_bge0_ipv6="2001:288:2418::1"
ipv6_defaultrouter="2001:288:2418::254"
ee /etc/resolv.conf
研習版,因為這是在VM環
境下。
實際版。會顯示學校所在
的domain與nameserver。
ee /etc/hosts
Hosts最重要的功能是告
訴本機,本機的名稱
(hostname)與對應的IP為
何?
• 為系統加上顏色(區別檔案屬性與目錄)
ee /etc/csh.cshrc (以root身份)
增加如下內容並存檔。輸入exit登出再登入root,輸入
ls後即會發現明顯不同。
alias ls ls -FGa
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
if ( $tty =~ ttyv* ) then
setenv TERM cons25
else
setenv TERM xterm-color
endif
if ( $USER == root ) then
set prompt="%B[%n@%m %/]# "
else
set prompt="%B[%n@%m %/]> "
endif
set autolist
參數 F 是顯示出目錄後面的斜線 (/),G 是顯示出顏色,a
是顯示出隱藏檔
其中 G 必須搭配第二行的環境變數 LSCOLORS 來使用。
LSCOLORS 這個環境變數後面有 22 個參數,分別代表 22 個
項目的顏色
setenv LSCOLORS exfxcxdxbxegedabagacad
setenv TERM xterm-color是讓你從遠端終端機登入時,也可
以看到 ls 的顏色
set prompt="%B[%n@%m %/]>“ 可讓 root 與一般使用者的
提示字元有所區別
如果要按兩下 Tab 顯示出可用的指令
set autolist
• 排程系統校時(以root身份)
ntpdate tock.stdtime.gov.tw
加入排程:
ee /etc/crontab
0 0 * * *
root
ntpdate tock.stdtime.gov.tw
^^ ^^ ^^ ^^
^^^^
^^^
^^
中間的空白全部是TAB(對齊)。意即每年的每個月的每天的0點0分由
root執行校時指令。如此系統就會在每天的0點0分,由root執行
ntpdate tock.stdtime.gov.tw指令。
排程也常用在備份資料上。
• 建一個資源回收桶
1. cd /root
make bin
2. cd /root/bin
ee trash
#!/bin/sh
mv $@/root/.trash/
3. chmod +x /root/bin/trash
4. mkdir /root/.trash
5. ee /root/.cshrc
加入如下並存檔
alias rm
trash
^^^^ TAB鍵
6. source /root/.cshrc
#在root下建一個bin目錄
#設成可執行檔
#建.trash資料夾(回收桶)
#更新.cshrc內容
7. 隨便刪個檔案(rm 檔名),再到/root/.trash看看
ls /root/.trash
8. 如果真的要刪掉檔案而不保留,則執行 \rm 檔名
• ports安裝眾套件與服務
如果安裝時忘了安裝ports,沒有關係,用portsnap建立
port tree。
1. 修改/etc/portsnap.conf
加入:SERVERNAME=portsnap.tw.FreeBSD.org
存檔。
2. mkdir /usr/ports
3. cd /usr/ports
portsnap fetch extract #執行畫面如下:
新增/etc/make.conf,內容如下:
MASTER_SITE_BACKUP?= \
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp10.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp13.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp12.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp6.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp11.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
WITHOUT_X11=yes
這樣子會增加ports安裝時的速度。
• 直接輸入sudo su切換成root
1. cd /usr/ports/security/sudo
make install clean;rehash
維持預設值。直接按下
Enter即可。
設定:
ee /usr/local/etc/sudoers
22 行 User_Alias ADMINS = 使用者名稱
將User前的#去掉。
86 行將%wheel ALL=(ALL) NOPASSWD: ALL之前
的#去掉。
存檔。
登出root後輸入sudo su即可。
FreeBSD常用的指令
指令名稱
說明
範例
cp
複製檔案或目錄(-rf)
cp named.conf namedb.conf.20121121
cp -rf /etc/namedb /home/test
mv
搬移檔案或目錄 或改名稱
mv namedb.conf.20121121 named.conf
rm
刪除檔案或目錄(-rf)
rm test
rm -rf /var/log/temp
passwd
修改密碼
passwd user01 20121121
mkdir
建立目錄
mkdir /tmp/log
rmdir
刪除目錄(同rm -rf)
ee
編輯器
用法很像pe2
ping
測試ip或domain是否正常
ping 210.240.1.1 ping tw.yahoo.com
cd
切換目錄
cd /etc/namedb/
tar
壓縮 / 解壓縮目錄
tar zcvf 1121.tar.gz /var/db/mysql
tar zxvf 1121.tar.gz
FreeBSD9.X版的DNS安裝與設定
•
•
•
•
•
DNS的安裝(透過ports)。
named.conf的設定。
DNS正解析檔設定。
DNS反解析檔設定。
DNS的檢查。
• DNS最重要的功用,就是定義IP與對映的
Domain。
如:www.kl.edu.tw -> 210.240.6.7
www.center.kl.edu.tw -> 210.240.6.7
也就是說,多個網址可以對映到一個IP。
IP可以變動,但網址通常不會變。而一個
正常非造假的網站,應該可以由domain(或
稱網址)查詢到它的IP,也可以從IP反查到它
的domain(或稱網址)。
• DNS的安裝(透過ports)
1. cd /usr/ports/dns/bind99
make install clean;rehash
2.設定/etc/rc.conf
ee /etc/rc.conf
加入:
named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-c /etc/namedb/named.conf“
存檔。
3. rndc 設定
/usr/sbin/rndc-confgen -a #產生rndc.key
rndc-confgen > /etc/namedb/rndc.conf
# 產生rndc.conf
4. rndc.conf 的內容如下:
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "73u+sJ8+Gj3F/ok3f1cZAQ==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#
algorithm hmac-md5;
#
secret "73u+sJ8+Gj3F/ok3f1cZAQ==";
# };
#
# controls {
#
inet 127.0.0.1 port 953
#
allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
5. rndc.key的內容如下:
key "rndc-key" {
algorithm hmac-md5;
secret "n8hotTpN5sLHbWuiXBqPTQ==";
};
將上列紅色部份複製起來,替換rndc.conf
中的部份,存檔。
6. rndc.key的內容如下:
key "rndc-key" {
algorithm hmac-md5;
secret "n8hotTpN5sLHbWuiXBqPTQ==";
};
將上列紅色部份複製起來,替換rndc.conf
中的部份,存檔。
7. 將下列內容加入/etc/namedb/named.conf之
的最後,並去掉中間的#:
# Use with the following in named.conf, adjusting
the allow list as needed:
# key "rndc-key" {
#
algorithm hmac-md5;
#
secret "n8hotTpN5sLHbWuiXBqPTQ==";
# };
#
# controls {
#
inet 127.0.0.1 port 953
#
allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
8. 執行bind9.9.x
/usr/local/sbin/named -c /etc/named/named.conf
輸入sockstat | grep 953
出現:
這就代表rndc已與Bind9.9.X結合。
9.加入支援IPV6
在約28-30行處,加入:
listen-on-v6 {
any;
};
10.
A
B
C
};
加入正反解定義 – 建議置於named.conf最後
zone "bdjh.kl.edu.tw"{
定義網域名稱正解:
bdjh.kl.edu.tw。檔名
type master;
為bdjh.kl.edu.tw.fwd
file "/etc/namedb/bdjh.kl.edu.tw.fwd"; 位於/etc/namedb
};
zone "129.20.240.210.in-addr.arpa"{
定義網域名稱反解:
129.20.240.210.intype master;
addr.arpa 檔名為
file "/etc/namedb/210.240.20.129.rev"; 210.240.20.129.rev
位於/etc/namedb
};
zone "8.1.4.2.8.8.2.0.1.0.0.2.IP6.ARPA" {
定義IPV6反解網
type master;
域為
file "/etc/namedb/8.1.4.2.8.8.2.0.1.0.0.2.rev"; 8.1.4.2.8.8.2.0.
1.0.0.2.IP6.ARP
A
A.正解析檔
IN NS ms1.bdjh.kl.edu.tw
# 意即bdjh.kl.edu.tw網段的DNS解析由ms1.bdjh.kl.edu.tw負責。
IN MX ASPMX.L.GOOGLE.COM. # 意即整合本校網段與Gmail中。
ms1 IN A 210.240.20.129
# 意即ms1.bdjh.kl.edu.tw的IP是210.240.20.129
ms1 IN AAAA 2001:288:2418::1 #意即ms1.bdjh.kl.edu.tw的IPV6為2001:288:2418::1
www IN CNAME ms1.bdjh.kl.edu.tw #意即ms1.bdjh.kl.edu.tw = www.bdjh.kl.edu.tw
B.反解析檔
a
b
a. 意即210.240.28.129 網段的DNS反解由ms1.mdjh.kl.edu.tw負責。
b. 意即210.240.28.129反查回來是ms1.mdjh.kl.edu.tw。以下類推。
C.反解析檔 – IPV6部份
8.1.4.2.8.8.2.0.1.0.0.2.ip6.arpa. IN NS ms1.bdjh.kl.edu.tw.
# 意即8.1.4.2.8.8.2.0.1.0.0.2.ip6.arpa. 這段IPV6的反解由 ms1.bdjh.kl.edu.tw 這部Server負責
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.1.4.2.8.8.2.0.1.0.0.2.ip6.arpa.
ms1.bdjh.kl.edu.tw.
IN
# 意即由2001:288:2418::1 這個V6 IP反查回來,會得到ms1.bdjh.kl.edu.tw
PTR
IPV6 IP與反解檔表示法
• 網域:
2001:0288:2418::/64
8.1.4.2.8.8.2.0.1.0.0.2.ip6.arpa.
• IPV6:
2001:0288:2418::0000:0000:0000:0000::0001
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.1.4.2.8.8.2.0.1.0.0.2.
ip6.arpa.
• DNS的檢查:
1. PC端:nslookup
nslookup IP或hostname
右列即是以八斗中學為例。以
210.240.1.1為DNS情形下,正反
解(IPV4、V6)均正常;以
Google public DNS(8.8.8.8)
解析亦正常。如此即代表八斗中
學的DNS運作正常。
• DNS的檢查:
2. Server端
dig 網域 ns - 查詢網域紀錄
dig -x IP - 查詢IP反解
dig @dns_ip 網域 ns - 以外部dns查詢網域
• 各項設定檔範例:
1. named.conf
2. DNS正解析檔
3. DNS反解析檔
4. DNS反析檔ipv6
FreeBSD9.X版防火牆的設定
• 啟動內建的防火牆 – ipfw。
• ipfw的規則語法。
• ipfw的設定範例。
• 啟動內建的防火牆 – ipfw
自FreeBSD8.0開始已完整支援ipfw,毋需編
譯核心。只要在/etc/rc.conf中加入如下即可
firewall_enable="YES"
firewall_type="OPEN"
firewall_script="/etc/rc.firewall"
firewall_logging_enable="YES"
• ipfw的規則語法(主要分為三部份)
基本
ipfw add
動作
紀錄
允許:allow | pass | permit|accept log
拒絕:deny | drop
*可以不
檢查狀態:check-stat
加
選擇(option)
協定:udp | tcp
| icmp
B. C. D. E. F. G. H.
B. 設定來源及目的(from src to dst),如:
from any to me #從任何地方連到本機
C. 埠號。如:80、22、21、443….
D.符合流入/流出的封包:in | out
E.經由哪張網卡:via 卡號,如:via bge0
F. setup:用來定義TCP封包的request session
G. 限定來源和目的使用相同的協定:
keep-state:防火牆自動記憶雙方的協定
established:保持連線狀態,封包同一標誌
H. 限制符合此規則的連線數量:
limit {src-addr | src-port | dst-addr | dst-port}
# keep-state 與 limit 不能共同使用。
• ipfw的設定範例
檔案位置:/etc/rc.firewall
# 需求:
1. 開放讓他人ping本機(含IPV6)。
2. 開放DNS、FTP、Mail、WWW、SSH port讓
他人連入,但限制連線數。
3. 不讓他人透過本機的80、443 port發送資料
出去。
4. 阻擋輕度的DDOS(分散阻斷式攻擊)。
A
B
C
D
E
#!/bin/sh
ipfw -q -f flush
if="bge0"
ipfw add allow icmp from any to any via $if
ipfw add allow icmp6 from any to any via $if
ipfw add allow tcp from any to any 25 via $if setup
ipfw add allow tcp from any to any 110 via $if setup
ipfw add allow tcp from any to any 143 via $if setup
ipfw add allow tcp from any to any 993 via $if setup
ipfw add allow tcp from any to any 995 via $if setup
ipfw add allow tcp from any to any 21 via $if setup limit src-addr 30
ipfw add allow tcp from any to any established
ipfw add allow tcp from any to any 10050-10080
ipfw add allow tcp from any to any 22 via $if setup limit src-addr 5
ipfw add allow tcp from any to me 80 in via $if setup limit src-addr 50
ipfw add allow tcp from any to me 443 in via $if setup limit src-addr 50
ipfw add allow tcp from any to me6 80 in via $if setup limit src-addr 50
ipfw add allow tcp from any to me6 443 in via $if setup limit src-addr 50
ipfw add allow log tcp from any to me 8080 in via $if setup limit src-addr 20
• 說明:
A1. 執行以下的Script前先清空之前的規則。
2.定義網路卡。
B. 允許他人ping本機(含IPV6)。
C. 開啟Mail Service所需要的通訊埠。
D1. 開啟21 port對外通連,最大連線數為30
2. 已開啟的tcp連線,予以保持。
3. 允許的tcp port rang 10050-10080(配合ftp
支援passive mode,ftp亦需同樣設定)
注:此處的最大連線數指的是同時連上本機的數量。
E1.開啟22 port對外通連,同最大連線數為5
2.允許他人連本機的80、443 port,最大連
線數為50。IPV6部份亦同。
3.開啟8080 port對外通連,同最大連線數
為20。
注:此處的最大連線數指的是同時連上本機的數量。
F
G
H
I
J
K
L
ipfw add allow tcp from any to 210.240.1.1 53 out via $if setup keep-state
ipfw add allow udp from any to 210.240.1.1 53 out via $if keep-state
ipfw add allow udp from any to tock.stdtime.gov.tw 123 out via $if keep-state
ipfw add allow tcp from me to any out via $if setup keep-state uid root
ipfw add allow ip6 from me6 to any proto udp dst-port 53 keep-state
ipfw add allow ip6 from me6 to any proto udp src-port 53 keep-state
ipfw add allow ip6 from any to me6 proto udp dst-port 53 keep-state
ipfw add allow ip6 from any to me6 proto udp src-port 53 keep-state
ipfw add deny log tcp from me 80 to any out via $if
ipfw add deny log tcp from me6 80 to any out via $if
ipfw add deny log tcp from any to any in tcpflags syn,fin
ipfw add deny log all from any to any
‧說明:
F. 允許存取DNS,此處的DNS IP需與
/etc/resolv.conf中設定的一致。
G. 允許本機對tock.stdtime.gov.tw執行
ntpdate(校時),開啟udp 123 port
H.開放本機的make install與cvsup等系統功
能給root操作。
I. 開啟本機IPV6 DNS解析的功能。
J. 不允許他人透過本機的80 port 對外連結
(含IPV6)。
# 這是避免本機遭XSS或BotNet入侵後成為
跳板,攻擊其它機器的手段之一。
K. 防止輕量的DDOS攻擊。
L. 除上述的設定外,其餘的通訊埠一律不
開啟。
# 本例完整檔路徑,如有需要可自行運用。
• 設定完成後存檔。
• 載入防火牆規則(rc.firewall)
sh /etc/rc.firewall
• 防火牆規則重新載入後,因安全理由,本
來的ssh(遠端)會被強制離線,為避免因設定
規則錯誤而造成無法遠端連入控管,設定
防火牆規則時,網管人員與本機的距離愈
近愈好!
安裝FTP Service
• FTP(File Transfer Protocol)意即傳輸檔案的意
思。某些時候,檔案太大或是不方便放在
網站上讓人下載時,就需使用FTP連到某個
FTP Site,將檔案下載回來(或是上傳)。
• FTP Service眾多,首推proftpd。
• proftpd 的安裝:
cd /usr/ports/ftp/proftpd
make install clean
Proftpd安裝時會出現的
選單,維持預設值即可。
第一次使用ports安裝服
務時可能會出現要求安
裝Perl的選單,維持預
設值即可。
安裝Perl一定要安裝m4
套件,維持預設值即可。
安裝help2man套件,維
持預設值即可。
• 修改proftpd.conf
第17行,加入PassivePorts
10050 10080
其中10050 10080需與rc.firewall中設定一致
第41行,之前的#去掉。
第48行,DenyAll改成AllowAll。
將proftpd=“YES” 加入 /etc/rc.conf中
echo 'proftpd="YES"' >> /etc/rc.conf
啟動proftpd ->
/usr/local/etc/rc.d/proftpd start
• 回到PC端,找個FTP Client程式,如FileZilla
登入FTP Service IP,嘗試上傳檔案並修改屬
性(權限)。
• 檔案(資料夾)屬性:讀取(r)、寫入(w)、
執行(x),權重(分數)各為4、2、1。以一
個屬性755的檔案為例:
擁有者權限
7
4+2+1(可讀可寫可執行)
=7
擁有者群組權限
5
4+1(可讀
可執
行)=5
公開的權限
5
4+1(可讀可執行)=5
安裝與設定MySQL Server
• MySQL是UNIX-like作業系統上最著名的免費
資料庫系統。許多應用套件,如xoops等的
資料庫需要MySQL。
• 安裝MySQL5.5.X版。
修改makefile
ee /usr/ports/databases/mysql55server/makefile
於-DWITH_LIBWRAP=1之下加入如下,並存檔
-DDEFAULT_CHARSET="utf8" \
-DDEFAULT_COLLATION="utf8_general_ci" \
-DWITH_EXTRA_CHARSETS="complex" \
-DBUILD_OPTIMIZED="yes" \
如下圖:
再執行make install clean
安裝完後將mysql_enable=“yes”加入/etc/rc.conf
echo 'mysql_enable="YES"' >> /etc/rc.conf
請注意預設的-DWITH_LIBWRAP=1之後沒有\,這需要手動加上去,而最後的
-DBUILD_STATIC=“yes”沒有\。請注意。
這是因為MySQL5.5版之後改成用Cmake來編譯 ,它的ports安裝指令和make不
太一樣,為避免輸入一堆字,干脆先修改Makefile
• make install clean
MySQL5.5版安裝時
會安裝Server端與
Client。維持預設值
即可。
• 增加MySQL效能:
cp /usr/local/share/mysql/my-huge.cnf
/var/db/mysql/my.cnf
• 修改MySQL root的密碼
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin -u root password
‘xxxx’
其中xxxx就是mysql root的密碼。
安裝Apache2.2.X加PHP5.X
• Apache是目前全球佔有率最高的Web
Server,而PHP也是全球佔有率最高的網頁
程式語法,以下內容是要打造能執行PHP語
法的Web Service,同時也支援MySQL。
• cd /usr/ports/www/apache22
make install clean
會出現如下頁的安裝選單,維持預設值,
直接按Enter即可。
輸入如下指令將apache22_enable=“YES”加入/etc/rc.conf
echo 'apache22_enable="YES"' >> /etc/rc.conf
• 安裝php5.X版
cd /usr/ports/lang/php5
make install clean
安裝選單中,APACHE(Build Apache module)請勾選(移
動上下鍵至其上,點擊空白鍵)。
• 安裝php5-extension
php5-extension(php延伸套件)是自php4.4版
之後的產物,可以讓網管者彈性調整想要
安裝的php模組。
cd /usr/ports/lang/php5-extension
make install clean
通常建議要安裝如下套件:BCMATH、BZ2
、CALENNDAR、CURL、EXIF、FTP、GD、
GETTEXT、MBSTRING、MYSQL、MYSQLI、
ODBC、OPENSSL、PDF、SNMP、ZIP、ZLIB
過程稍長,出現下列選單,直接按Enter。
設定Web Service
• 設定Apache
1. ee /usr/local/etc/apache22/httpd.conf
196行:將Indexes字串刪除
218行:於index.html後加入index.htm、
index.php
360行之下,加入兩行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
442、457行,刪除之前的#字註解號。
存檔。
2. ee /usr/local/etc/apache22/extra/httpd-default.conf
55行:將ServerTokens其後的參數改成prod
65行,將On改成Off
存檔。
3. ee /usr/local/etc/apache22/extra/httpd-userdir.conf
18-19行:將indexes字串刪除。
存檔。
• 設定(修改)php.ini
cd /usr/local/etc
cp php.ini-production php.ini
ee php.ini
791行, file_uploads = On
796行, 刪掉#,upload_tmp_dir = /tmp
800行, upload_max_filesize = 2M
上傳檔案大小,預設是2M
803行, max_file_uploads = 20
最多上傳檔案數,預設是20個
672行, post_max_size = 8M
預設使用post上傳的最大資料量。切
記,如果upload_max_filesize設定大於
8M,則此處的數值一定要大於8。
919行,將#刪除,
date.timezone = "Asia/Taipei“
存檔。
重新啟動Apache ->
/usr/local/etc/rc.d/apache22 restart
• 新增一個php程式:
ee /usr/local/www/apache22/data/info.php
內容:
<?
phpinfo()
?>
原始碼連結:info.php
• phpinfo執行畫面:
• 安裝phpMyAdmin以管理MySQL
cd /usr/local/www/apache22/data
#切換工作目錄至如上
ftp -a freebsd.csie.nctu.edu.tw
#以匿名者身份登入如上ftp site
bi
#切換檔案傳輸模式為二進位制
cd /pub/distfiles
#切換目錄至如上
ls phpMy*
# 列出以phpMy為首的檔案
get phpMyAdmin-3.5.3-all-languages.tar.xz
#下載phpMyAdmin-3.5.X版壓縮檔
exit
#退出freebsd.csie.nctu.edu.tw
mv phpMyAdmin-3.5.3-all-languages.tar.xz
phpMyAdmin-3.5.3-all-languages.tar.gz
#更改檔名
tar zxvf phpMyAdmin-3.5.3-all-languages.tar.gz
#解壓縮
mv phpMyAdmin-3.5.3-all-languages
phpMyAdmin
#更改目錄名稱。
cd phpMyAdmin
cp config.sample.inc.php config.inc.php
ee config.inc.php
32行,將其中的tcp改成http
44-46行:刪除之前的//,改controluser與
controlpass為root與其password(MySQL)
48-55行,刪除之前的//。
57-59行,刪除之前的//。
110行,刪除之前的//,改其中的en為
zh-TW
存檔。
config.inc.php範例
執行:http://xxx.xxx.xxx.xxx/phpMyAdmin
輸入MySQL的root與其密碼登入。
架設Server時常見的排難解紛
•
•
•
•
•
FreeBSD各帳號到底是什麼意義?
phpinfo程式執行後,頁面一片空白?何故?
忘記FreeBSD的root密碼,怎麼辦?
忘記MySQL的root密碼,怎麼辦?
停電或關機後重開機不正常,一直停留在#
字元?該如何處理?
• 資料庫備份回MySQL,可是在phpMyAdmin
中卻看不到?xoops也讀不到?何解?
• FreeBSD重要帳號列表
名稱
群組
說明
備註
root
wheel
系統最高權限管理者
無法遠端登入
root
mysql
MySQL Server最高權限管理者
只能登入MySQL
自行建立的
第一個帳號
wheel
用來遠端登入系統,執行su(或
sudo su)指令切換為root
請勿與其它網站(頁)應用系統,如xoops的
管理帳號搞混!
如果自行建置的MySQL Server,root也可以
登入phpMyAdmin管理MySQL。
• phpinfo程式執行後,頁面一片空白?
解:
需要修改php.ini
找到short_open_tag = (在約第221行)
將Off改成On
存檔。
重啟Apache ->
/usr/local/etc/rc.d/apache22 restart
• 忘記FreeBSD的root密碼
1.走到Server前,Ctrl+Alt+Del暖開機。
2.於開機畫面(如上圖),快速(10秒內)按下6,此時預
設的NO會變成YES再按下Enter,進入單人模式。
3. 於....RETURN for /bin/sh:按下Enter,進入提示字元#
4. 輸入 mount -a
輸入 fsck -y #因為不正常重開機,手動檢查磁碟
輸入 passwd
於提示下輸入root的新密碼。
可能還要再輸入一次確認。
5. 輸入reboot重開機。
上列的new_pass就是新的密碼。請自行
置換new_pass為想要的密碼。
5. 再輸入flush privileges;
6. 輸入quit,離開MySQL
7. killall mysqld #再次停掉MySQL
8. /usr/local/etc/rc.d/mysql-server start
#重啟MySQL
• 忘記MySQL的root密碼
解:1.killall mysqld(數次) #先停掉MySQL
2.cd /usr/local/bin
./mysqld_safe --skip-grant-tables &
#以安全模式啟動MySQL
3. ./mysql -u root -p
#不需要密碼登入MySQL
4. use mysql;
update user set password=password
("new_pass") where user="root";
• 停電或關機後重開機不正常
解:如果系統沒有自行嘗試修復磁碟,就手
動輸入指令 fsck -y
之後再重啟(reboot)試試看。
如果不是磁體實體故障(硬碟真的壞了)
大多可以正常重開機。
• phpMyAdmin看不到資料庫
解:通常是權限的問題,常常發生在不是使
用phpMyAdimin備份回資料庫時,群組與
使用者沒有修改。只要輸如下指令即可:
cd /var/db/mysql
chown -R mysql:mysql ipv6