FreeBSD 5.2.1R Web Server架設實例過程

willy < willy at 2699.net >

本文獻給和我一樣初次接觸FreeBSD的朋友們。

我這個人比較倔,但是一直以來自信心還可以。由於想裝一個web server,多方打聽知道freebsd在這方面還比較強,於是下定決心準備搞一個自己的freebsd web server出來。
以前都是玩ms的windows系列,開始搞freebsd,當然有些摸不着門,下面就是我關於freebsd的一些初步經驗,希望能對後來的新新人有所幫助。我也是freebsd的菜鳥,大家共勉吧。下面的文字,對我來說也就是筆記,我害怕將來我再裝FB WEB SERVER的時候,某些環節會有疏漏,故成此文,還請行家斧正。

一、基本要求
要玩好freebsd這種unix類操作系統,我覺得首先需要有下面兩個基本能力,否則的確會非常艱難。
1. 良好的英文能力。freebsd雖然也有圖形界面(GUI),但如果是做服務器,更多是靠命令行(如同msdos)操作,在我這裏web server的例子裏,幾乎是純命令行作業。所以英文能力是很重要的。
2. unix基礎。基本的unix指令要知道,比如 ls、pwd、cp、man、rm、mkdir、rmdir 等。尤其要知道 man 命令的作用。還要知道當屏幕顯示過多內容的時候,需要用到scroll lock和more指令。下面簡單舉例說明幾個指令的用法。
ls (列目錄,類似於msdos的dir)
ls | more (列目錄,使用管道和more命令分屏顯示過多的內容)
cp abc abc_bak (文件的拷貝,類似於msdos的copy)
cp -R abc abc_bak(目錄的拷貝)
rm -R abc/* (子目錄abc下的所有文件及子目錄刪除,類似於msdos的del,但允許加-R選項針對子目錄操作)
man ls (查ls命令的詳細說明)
mv abc ../abc_bak (移動並改名abc爲父目錄下的abc_bak,abc可以爲文件也可以爲子目錄)
3. 有一本freebsd handbook,紙版的當然好,電子版的也不錯: http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/

二、安裝系統前的一些聲明
首先聲明,我是用的最新的FREEBSD5.2.1RELEASE iso格式光盤安裝的,現在刻錄機遍地都是,各位從網上下載了iso自己刻一個光盤來裝FREEBSD,應該不是什麼難事情。
其次,FREEBSD的完整安裝升級需要一個良好的網絡環境,即便你有光盤,最終很多工作還需要到互聯網上進行,所以你必須有一個較快的互聯網連接。

三、安裝過程及安裝中的注意事項
1. 操作系統的安裝
雖然前面說了很多有關FREEBSD的艱難,但其實如果你有較好的英文能力,你會發現裝FREEBSD的內核系統還是很簡單的,總共花不了30分鐘。而且FREEBSD5.2.1足夠先進了,我的服務器很多新硬件沒有遇到任何問題全部正確識別了。
FREEBSD5.2.1的光盤共4張,其中一張命名爲BOOT,其對應下載時的ISO名爲DISK1(注意不是BOOTONLY那張),BOOT光盤放進光驅,bios設置光驅啓動,重啓機器後,機器會從光驅啓動並進入FREEBSD5.2.1的內核並自動啓動光盤裏的sysinstall程序。該程序是文本圖形界面,也很友好。
首先,選擇Standard安裝,這也是推薦的安裝模式。還有一種mini安裝,安裝出來的系統是最小的,運行效率最高,但是可能你會面臨更多的調整。
A. 硬盤分區及unix分區配額分配
我作爲初學者,選擇了standard模式安裝,隨後進入了FREEBSD的fdisk程序界面,和msdos的fdisk很像,但屏幕下方的提示更多更友好。如果你有兩塊或更多的硬盤,那麼fdisk會先問你需要在那個硬盤上做分區。由於我是做服務器,不存在雙系統等問題,所以用上下箭頭選擇已有的分區並按d鍵全部刪除這些已有的分區使其成爲空盤,再按a自動分配爲一個大分區,最後按q退出fdisk,就這麼簡單地分好了一個硬盤的區。
然後sysinstall會提示你的服務器是否需要使用BootMgr,如果你不需要多重引導,那麼可以選Standard,我在這個地方選擇的是BootMgr——允許多重引導。
隨後使用Disklabel創建unix分區並分配分區空間。該畫面和fdisk有些類似,你可以用上下方向鍵選擇需要的分區,然後屏幕下方的提示按鍵並按照自己的要求劃分分區。我在這裏採用了默認的方法:選a自動劃分,選q退出。特別提示:mysql安裝默認會安裝到/var分區,如果你不想改變mysql的默認安裝,那麼你在這裏應該把自動劃分出來的/var分區調整一下,調整的更大些。/var分區默認只有256M,稍微大的數據庫就不夠用了。我在下面的mysql安裝中沒有使用默認的安裝分區/var,而是改到了/usr分區,所以我在這裏不需要改動任何分區的大小。
B. 安裝過程的提示選擇
分區及配額完成後,隨後就會出現軟件包選擇畫面,你可以選擇Developer或者是其他什麼模式。作爲web服務器,我覺得選Developer好些,不過我當時不太明白,什麼也沒選,直接選了EXIT。其實沒選也不要緊,後面還有機會。
隨後的畫面是提示你從什麼介質安裝,我們這裏當然是自己燒好的ISO光盤了——選CD/DVD,機器都沒起來,別的介質其實也選不成。
選了介質之後,畫面提示:

User Confirmation Requested
Last Chance! Are you SURE you want to continue the installation?

當你確定後,之前的分區設置即將生效,硬盤中的原有東西將會被刪除,並且開始安裝初始的內核系統。
初始內核的安裝是很快的(10分鐘),而且具有多數流行硬件,我用的FB5.2.1很順利認出了所有硬件。
隨後開始安裝後的設置,首先會提問你是否採取PPP/SLIP的模式連通網絡,如果不是可以選NO,我是ADSL的DHCP模式上網,所以選NO。如果你是撥號模式,根據提示操作吧。
隨後是要求你輸入你上網的網卡的TCPIP設置。如果是DHCP,把網線接好,機器會自動獲取設置。如果是靜態IP,你可以根據自己的機器情況設置IP、掩碼、網關、DNS等。
隨後機器會提問以下問題:
是否設置機器爲網關GATEWAY——NO(我們是web server,不是網關)
是否設置機器爲inetd超級服務器——NO(我們有ssh和pureftpd,不需要inetd)
是否設置爲NFS SERVER/CLIENT——NO(我們不是這個用途)
是否設置爲anonymous FTP——NO(我們不需要這種用途)
是否需要設置sshd——YES(我們將通過這種較爲安全模式遠程控制服務器)
選擇時區——按照提示選擇即可,會提示你北京時間縮寫是"CST"
是否需要LINUX兼容性——YES(或許我會爲服務器安裝一些LINUX軟件,例如CS SERVER )
是否需要設置system console——默認的挺好,剛開始的學的就不必改了。
是否需要配置鼠標——NO(我看不出來作爲一個託管在電信的webserver有什麼必要配置鼠標)
是否需要添加用戶——添加一個吧,根據提示添加即可,用戶組寫成wheel,以便你可以用這個用戶遠程登錄服務器後su到root進行管理。添加完這個用戶之後,會問你要root的密碼,輸入即可。如果不添加用戶,會直接讓你設置root的密碼。
其實,這些安裝後設置,只要英文良好,按照提示做,不會有什麼問題的。
C. 安裝後的PACKAGE和CONTRIBUTION選擇
安裝後,可以進入sysinstall的configure進行最終的PACKAGE和CONTRIBUTION選擇。
PACKAGE是已經編譯好的二進制包,可以直接運行。默認標準安裝完之後,作爲WEBSERVER,我看了一下也就需要net下的cvsup(在線升級用)和archivers下的unzip(某些zip包可能會用到)這兩個包。選中後執行安裝,就會把它們裝到系統裏。
隨後進入CONTIBUTION裏安裝代碼。強烈建議各位一定要把src代碼全部選中。src下有很多分類,甚至包括game。我自己在學習FREEBSD的時候,編譯總是缺這個那個,後來學乖了,把SRC全裝了之後,就好了很多,編譯時很少提示錯誤了,而且將來cvsup也有好處。另一個就是ports,不用說,也是要全裝的。我在這裏,就是選擇了src和ports。選中後執行安裝,就會把它們安裝到系統裏了。

至此,一個初始的FREEBSD5.2.1就裝完了。雖然看着多,實際上也就30分鐘時間。如果你是第一次裝FREEBSD,這個時候還是不要着急進行後面的操作,可以先看看手冊,熟悉熟悉FREEBSD。

2. 系統安裝完後的第一步,是進行CVSUP,立刻同步你的src源代碼和ports代碼。關於cvsup的詳細內容,請看FREEBSD手冊的cvsup部分,此處我只介紹在本例中的過程。由於cvsup需要互聯網環境,所以需要接好你的網線了。進入下列目錄:

#cd /usr/src/share/examples/cvsup

裏面是幾個cvsup的supfile例子。我們可以直接修改這些例子爲我們所用。首先編輯standard-supfile,這個文件是升級內核源代碼的例子文件。我個人喜歡用ee編輯文件(因爲有使用提示,且使用習慣接近windows下的),輸入下面的指令:
#ee standard-supfile

能看見裏面東西很多,但都不用改,它默認指定是升級所有的系統源代碼——這是有好處的。我們只需要修改一個地方,下翻頁找到下面這行:
*default host=CHANGE_THIS.FreeBSD.org

改成指定的freebsd官方cvsup服務器即可:
*default host=cvsup.FreeBSD.org

或更快的國內freebsd cvsup服務器:
*default host=cvsup.cn.FreeBSD.org
*default host=cvsup.FreeBSDChina.org

退出並保存,運行下面的指令開始cvsup在線升級代碼:
#cvsup standard-supfile

這也是我們第一次用FREEBSD上互聯網。如果網絡暢通,可以看到連接提示,並且開始自動升級源代碼了。如果不暢通,或者cvsup服務器忙,可以換個cvsup服務器試試。如果是網絡設置問題,可以到sysinstall--configure--networking裏修改網卡設置。也可以用ee編輯/etc/rc.conf這個文件,檢查哪裏的設置出了問題。
系統源代碼升級,我的ADSL大概用30分鐘左右即可完成。
然後我們升級ports代碼。ports裏很多東西是不需要的,我們可以稍微仔細編輯一下。打開ports-supfile這個文件:
#ee ports-supfile

首先仍然是指定cvsup服務器,照上面說過的方法改了那行服務器設置。然後是選擇需要升級的ports樹。作爲webserver,升級全部的ports是完全沒有必要的,因此可以把
ports-all

那行前面加#註釋掉。繼續往後面找,有很多ports分支,我們把需要的打開,不需要的保留行首的#,就是取消了。例如下面這些行首加#的,對webserver來說,都是沒用處的;去掉了行首#的,還是留着吧,以免編譯遇到問題:
ports-base
#ports-arabic
ports-archivers
#ports-astro
#ports-audio
#ports-benchmarks
#ports-biology
#ports-cad
#ports-chinese
ports-comms
ports-converters
ports-databases
ports-deskutils
ports-devel
ports-dns
ports-editors
ports-emulators
#ports-finance
#ports-french
ports-ftp
#ports-games
#ports-german
#ports-graphics
#ports-hebrew
#ports-hungarian
#ports-irc
#ports-japanese
ports-java
#ports-korean
ports-lang
ports-mail
ports-math
#ports-mbone
ports-misc
#ports-multimedia
ports-net
#ports-news
#ports-palm
#ports-picobsd
#ports-polish
#ports-portuguese
ports-print
#ports-russian
#ports-science
ports-security
ports-shells
ports-sysutils
ports-textproc
#ports-ukrainian
#ports-vietnamese
ports-www
#ports-x11
#ports-x11-clocks
#ports-x11-fm
#ports-x11-fonts
#ports-x11-servers
#ports-x11-toolkits
#ports-x11-wm

照上面編譯完,就可以保存退出了,然後運行cvsup開始升級ports:
#cvsup ports-supfile

這個升級過程大約也要30分鐘左右。至此,所有的代碼升級完畢。

3. MAKE WORLD和定製內核。
關於MAKE WORLD的詳細內容,也應該詳細翻閱手冊相關部分,下面繼續介紹本例中的情況。上面的升級完成後,首先需要重新編譯系統(MAKE WORLD)。由於我們的系統是剛裝的,乾淨的,所以沒有那麼多難題。進入:

#cd /usr/src
#make buildworld

會開始一個30分鐘左右的編譯過程,如果編譯沒有什麼問題,繼續:
#make installworld

即可更新系統爲最新版,隨後就可以重啓機器了。
這裏需要聲明一下,由於5.2.1是current分支,make world並不一定總能成功。如果能成功,恭喜你了。如果沒成功,過段時間再cvsup系統源代碼,可能就可以成功了。我自己裝了2個server,第一個就沒成功,時隔一個月第二個就成功了。沒成功也不用太擔心,畢竟5.2.1是RELEASE,相對還是較爲穩定的。

下來,我們需要定製內核。定製內核的必要性我想就不必我說了,各位也應該好好看看手冊相關部分。也請各位仔細看這個帖子:
http://www.freebsdchina.org/forum/viewtopic.php?t=1706
說的很詳細了。
具體操作,進入下面的目錄:

#cd /usr/src/sys/i386/conf

能看到一個名爲GENERIC的文件。把這個文件拷貝一個副本,例如名爲SAMPLEKERN,這個副本將是你將來內核的配置文件。
#cp GENERIC SAMPLEKERN
#ee SAMPLEKERN

用ee編輯SAMPLEKERN這個文件,按照上面提到的那個帖子編輯,根據你自己的硬件情況、軟件需求編輯,保存後開始編譯內核。由於我們CVSUP過了,所以用手冊上提到的“新”方法編譯。
#cd /usr/src
make buildkernel KERNCONF=SAMPLEKERN

這個編譯過程大概要20分鐘,編譯完先不要着急install,先備份一下舊內核,以免有意外。
#cd /boot
#cp -R kernel kernel.old

隨後安裝內核:
#make installkernel KERNCONF=SAMPLEKERN

安裝好之後,可以重啓了。
由於我自己是在家裏進行服務器安裝的,所以,我給內核文件里加上了下面幾行,以便形成共享上網能力:
#ipfirewall for NAT
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100

然後/etc/rc.conf裏也要加幾行:
# for natd
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="em0"
natd_flags=""

上述2處修改後,編譯並安裝內核,可以實現共享上網。FREEBSD做網關,windows做工作站,隨後的工作可以從工作站用ssh登錄後進行,而且不影響工作站上網查資料——畢竟FREEBSD從安裝到真正投入使用還有很多調整。一般的服務器專用主板都整合了2個網卡。常見intel100M卡設備代碼是fxp,intel1000M卡是em,卡代碼在你安裝系統的時候可以在sysinstall--configure--networking裏看到。本例中兩個卡都是1000M卡,第一個網卡是em0,接外網。

4. 服務器軟件安裝
新的精簡內核編譯完成之後,就是安裝應用軟件了。建議按照我下面的順序來裝。安裝軟件前,建議先

#ee /etc/make.conf

在文件裏添加下面這行:
MASTER_SITE_OVERRIDE=ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}

指定ports軟件首先從國內下載。否則所有軟件從國外下載,有時候速度實在是不行。
A. MYSQL 4.0的安裝
我選擇了MYSQL4.0,不算老,也不算新。第二次裝的時候,ports已經到了4.0.20版了。下面根據本例中的情況,進行具體說明。前面說了,mysql默認數據庫放在/var分區裏,如果你的數據庫很大,那麼你需要在前面分區的時候把/var分區分到足夠大。ldconfig老大建議要4G。如果你和我一樣想把數據庫放到/usr分區,那麼:
#mkdir /usr/db

先在/usr建立一個數據庫目錄,然後
#cd /usr/ports/databases/mysql40-server
#ee Makefile

打開Makefile,找到
DB_DIR?= /var/db/mysql

改爲
DB_DIR?= /usr/db/mysql

隨後,按照這個帖子,根據delphij老大教誨,在Makefile裏CONFIGURE_TARGET那行前面的空行加上兩行優化選項:
BUILD_OPTIMIZED=yes
BUILD_STATIC= yes

保存退出編輯。然後
#make
#make install

開始下載並開始安裝數據庫。編譯安裝完之後,重啓機器可以啓動mysqld守護進程,可以
#mysql

如果能夠見到
mysql>

提示符,說明安裝好了。不過,剛裝完的mysql默認的數據庫連接是100個,遠遠不能應付大網站的要求。按照這個辦法加大吧:
http://www.fanqiang.com/a2/b1/20010705/140800801.html
具體到本例中的mysql4.0 for freebsd5.2.1,應該這樣修改連接數:
#ee /usr/local/bin/mysqld_safe

向下尋找到第312行(4.0.20版是314行),其行很長,以“$NOHUP_NICENESS”開頭,以“>> $err_log 2>&1”結尾。該行被嵌套在一個if語句裏。在312這行末尾的“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”,(注意前後各留一個空格)。
然後向下找到314行,也是很長的一行,以“eval "$NOHUP_NICENESS”開頭,以“>> $err_log 2>&1”結尾。同樣在“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”。
保存退出。然後重啓,此時的mysql40就是1000個併發連接的數據庫了。可以用下面的方法檢查一下:
#cd /usr/local/bin
#mysqladmin -uroot -p variables

將會打出一個長列表,按scroll lock後向上捲動屏幕,能看到裏面有一項顯示
| max_connections | 1000 |

那麼表示最大併發連接數已經修改到1000了。
至此,mysql數據庫就裝完了。

B. APACHE2的安裝
同樣的,由ports裝apache,也不會有什麼困難:

#cd /usr/ports/www/apache2
#make
#make install

完畢。就這麼簡單。編譯中間可能會提問相關軟件gettext的安裝選項,全選上吧。編譯時可能會提示安裝新版textproc/expat2錯誤,原因是機器裏已經有舊版的expat2。只需刪除舊版重新安裝新版expat2即可:
#cd /usr/ports/textproc/expat2
#make deinstall
#make install
#cd /usr/ports/www/apache2
#make
#make install

繼續make即可。

C. APACHE2的mod安裝
APACHE2自帶SSL,所以無需安裝SSL。MOD_GZIP找不到有關APACHE2的文章,是不是也不用裝,很奇怪。所以剩下的就是FASTCGI和php了。
按要求,先裝fastcgi for apache2,先看帖子:
http://bbs.chinaunix.net/forum/viewtopic.php?t=221295
輸入指令:

#cd /usr/ports/www/mod_fastcgi
#make WITH_APACHE2=yes install

OK,完成了。
下來是php。
#cd /usr/ports/www/mod_php4
#make

然後下載編譯,中間會提示你選擇編譯配置選項。mysql已經默認選上了,下來把GD和openssl也選上吧。其他的選項我也不知道有什麼用,就沒選了。隨後
#make install

php4.3.6安裝完成。

D. web的安裝後設置
首先,設置apache的php訪問能力。

#cd /usr/local/etc/apache2
#ee httpd.conf

在AddType application/x-gzip .gz .tgz後面加上下面3行:
#php support
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

隨後設置網站默認啓動頁允許爲index.php。同樣在httpd.conf裏編輯,不必退出。找到
DirectoryIndex index.html index.html.var

添加index.php進去,爲:
DirectoryIndex index.php index.html index.html.var

再設置apache默認字符集爲簡體中文。找到:

AddDefaultCharset ISO-8859-1

改爲
AddDefaultCharset GB2312

另外,一個訪問量較大的網站,apache默認的150連接肯定是不行的。請根據這個帖子修改:http://www.cnfug.org/journal/3/02.html
具體操作如下。尋找:

找到這段之後,按照上述帖子的推薦值修改爲:

StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000

至此,httpd.conf的設置完成。可以保存退出了。當然,如果你要搞虛擬主機,請根據手冊和httpd.conf尾部的例子,再設置虛擬主機相關部分即可。有關我的虛擬主機設置,各位一會可以看我後面FTP安裝後的解釋。

工作還沒有完,給php設置ini。如果沒什麼特殊要求,可以直接使用默認推薦的php.ini。

#cd /usr/local/etc
#cp php.ini-recommeded php.ini

此時,重啓機器,http方式訪問這臺服務器,例如http://192.168.0.1,就能看到apache2的頁面了。

此時,可以用ee在服務器默認的web目錄裏寫一個簡單的php測試頁面,例如

#ee /usr/local/www/data/index.php

文件裏面只有這麼一行代碼:

此時再訪問http://192.168.0.1,就可以看到本機的php頁面信息了。

看到了phpinfo之後,就可以先安裝zend optimizer了。zend optimizer只能手工安裝,ports裏找不到。從http://www.zend.com/store/products/zend-optimizer.php下載ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz後,通過ssh上傳到服務器任一目錄裏。也可以用優盤、刻錄盤轉到服務器裏。然後解壓、安裝:

#tar -zxvf ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz
#cd ZendOptimizer-2.5.2-FreeBSD5.1-i386
#./install.sh

隨後zend optimizer安裝畫面出現,根據提示一步一步走即可。臨近完成,會提示
x Your php.ini is relocated to the: /usr/local/Zend/etc directory x
x and a symbolic link from the former place: x
x /usr/local/etc/php.ini is created. x
x x
x Your original php.ini was backed-up to: x
x /usr/local/etc/php.ini-zend_optimizer.bak x

此時再訪問http://192.168.0.1/index.php,可以看到phpinfo裏有關zend optimizer的信息了。至此,web部分全部安裝設置完畢。

E. pure-ftpd的安裝
pure-ftpd的安裝,我完全學自這個帖子:
http://www.freebsdchina.org/forum/viewtopic.php?t=10279
前面有關mysql的就先不用看了。直接從pure-ftpd部分開始。本例中應該這麼繼續。

#cd /usr/ports/ftp/pure-ftpd
#ee Makefile

根據上面的帖子給你的makefile里加上必要的CONFIGURE_ARGS,然後保存退出ee。本例中沒有指定安裝目錄,使用ports默認的安裝目錄。
#make WITH_MYSQL=1 WITH_LANG=simplified-chinese install clean

隨後安裝會很順利完成。繼續下面的配置,執行下列操作,爲pure-ftpd增加配置文件:
#cd /usr/local/etc
#cp pure-ftpd.conf.sample pure-ftpd.conf
#cp pureftpd-mysql.conf.sample pureftpd-mysql.conf

打開新生成的pure-ftpd.conf,把mysql數據庫的那行的那個註釋去掉——準備使用mysql作爲驗證。
MySQLConfigFile /etc/pureftpd-mysql.conf

再指定禁止匿名登錄:
NoAnonymous yes

再指定允許上傳人修改文件名:
NoRename no

允許登錄用戶使用chmod指令
NoChmod no

使用者可刪除文件
KeepAllFiles no

自動建立帳戶的home dir
CreateHomeDir yes

conf設置完畢。隨後導入數據庫初始值。把下面這段拷貝粘貼爲一個文本文件(原帖子有幾處錯誤),例如ftp.mysql,然後執行下列命令導入mysql數據庫裏:

#mysql -u root -p123456 < ftp.mysql

代碼:

INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv,
Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv,
Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv,
Index_priv, Alter_priv) VALUES
('localhost','ftp',PASSWORD('123456'),'Y','Y','Y','Y','N','N','N','N',
'N','N','N','N','N','N');

FLUSH PRIVILEGES;

CREATE DATABASE ftpusers;

USE ftpusers;

CREATE TABLE admin (
Username varchar(35) NOT NULL default '',
Password char(32) binary NOT NULL default '',
PRIMARY KEY (Username)
) TYPE=MyISAM;

INSERT INTO admin VALUES ('Administrator',MD5('123456'));

CREATE TABLE users (
User char(16) NOT NULL default '',
Password char(32) binary NOT NULL default '',
Uid int(11) NOT NULL default '2000',
Gid int(11) NOT NULL default '2000',
Dir char(128) NOT NULL default '',
QuotaFiles int(10) NOT NULL default '500',
QuotaSize int(10) NOT NULL default '30',
ULBandwidth int(10) NOT NULL default '80',
DLBandwidth int(10) NOT NULL default '80',
status enum('0','1') NOT NULL default '1',
ipaccess varchar(15) NOT NULL default '*',
comment tinytext NOT NULL,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;

INSERT INTO `users` VALUES ('test1',MD5('123456'),2001,2000,'/home/test1',500,30
80,5,1,'*','*');


數據庫導入之後,還不能使用,還需要設置pureftpd-mysql.conf
#ee pureftpd-mysql.conf

根據文件裏的默認提示,修改即可,很簡單的。也可以參照上面說的帖子修改。

至此有關係統裏的修改全部完畢。你現在重啓系統,可以試試用test1/123456來登錄一下ftp了。

隨後,我們根據上述帖子,安裝php-manager,實現web模式的ftp管理。下載ftp.zip(漢化的ftp.zip:
http://forum3.games.sina.com.cn/upload/39/400/20040615/1025/205182/205182.zip
請儘快下載,晚了說不定就被sina刪了),傳到服務器上,然後

#mv ftp.zip /usr/local/www/data
#cd /usr/local/www/data
#unzip ftp.zip
#ee ftp/config.php

修改config.php裏面的連接參數,其他的基本上都不用改。保存。然後就可以用http://192.168.0.1/ftp/來訪問這個web管理頁面了。登錄管理頁面,輸入密碼(本例是123456),就可以看到預設的用戶test1,及其狀態。

四、系統安裝後的一些事項
在本例中,這個web服務器是用來支撐4~5個網站或論壇用的。所以上面的安裝過程,實際上都是爲了這個目的。
那麼後續還有一些使用上的注意事項,這裏簡要說明一下。
1. 首先,如果你想很方便地管理數據庫,那麼你應該裝一個phpmyadmin,可以通過ports裝,很簡單,而且也是默認裝在/usr/local/www/data裏。
2. 其次,如果你想比較方便地監視服務器狀態,也可以裝一個phpsysinfo,ports裝也可以,同樣默認裝在/usr/local/www/data裏。這樣的話,服務器將來託管的時候,可以把/usr/local/www/data這個目錄做成一個只有你知道的虛擬主機即可。從這個虛擬主機裏可以看到整個服務器的狀態、管理服務器的mysql、新增ftp用戶及主機。(ports裝的phpsysinfo2.1對intel板載千兆網卡的工作狀態報告有些問題,從phpsysinfo的網站下載一個2.2版可以修正這個問題,而且2.2版支持簡體中文。)
3. 關於新增虛擬主機。
按照本例中的pureftpd的裝法,每當你在ftp管理頁面生成一個帳號後,例如web1,隨後用ftp軟件登錄server,server就會自動生成一個名爲web1的用戶,並同時在/home裏生成一個web1的目錄,具體爲:
/home/web1
(實際上也就是 /usr/home/web1 )
如果你要限制web1的配額,那麼你在管理頁面裏就可以設置了。
那麼隨後web1的apache2的web虛擬主機目錄,在httpd.conf裏當然也就指定爲
/home/web1
依此類推。簡單吧?

五、遠程控制你自己的web server
除了上面提到的phpmyadmin和ftp之類的web頁面的簡單控制之外,你當然少不了最終極的遠程控制能力:ssh2。我是菜鳥,就不班門弄斧吹噓這東西的好處了。總之,這東西是非常安全的、可以遠程連接到你的server的手段。
我前面都沒有提到ssh,而實際上,自打上面的第三步第1小步完成了操作系統的初始安裝之後,我們就可以使用ssh來遠程控制server了,不僅效果和server的本機console一樣,而且可能會更方便——因爲我們可以用一個win2k的電腦,很方便地看着這裏的帖子,邊看邊裝,還能使用windows的CTRL-C/V,多好啊。
首先聲明,所有有關ssh的安裝和連接的基本知識,都可以在下面這個帖子裏找到:
http://www.freebsdchina.org/forum/viewtopic.php?t=10210

下面我來根據我的實踐,簡單說說本例中的ssh應用方法。
1. 首先在你的win2k上下載sshclient客戶端,它是免費提供的,而且似乎更好用。
http://www.ssh.com/support/downloads/secureshellwks/non-commercial.html
2. 由於我們安裝操作系統的時候已經選擇了ssh,所以,操作系統部分就不需要多設置了,默認就會啓動sshd守護進程的。
3. 之前安裝系統的時候,曾經提示是否添加用戶,我已經提示大家要至少添加一個用戶,例如你自己的英文名字,而且這個用戶必須是wheel組,只有wheel組的用戶,才能遠程su切換爲root。如果你當時沒有添加,那麼在server本機狀態現在添加一個wheel組的用戶吧,這個用戶將是你將來遠程登錄server的用戶。
4. 在win2k上安裝好sshclient後,可以直接連接你的server,此時是用wheel組用戶名及其密碼登錄的。登錄後就可以su,然後輸入root密碼,就可以切換爲root了。
5. 上面這個登錄方式已經足夠安全了,別人無法竊聽,但是將來託管後還是有可能會有漏洞。由於我們和server之間現在還是本地lan方式的連接,不存在安全問題,所以我們此時先用密碼方式連到server,可以先用sshclient生成一個key,轉爲key方式連接,這樣就基本沒有安全漏洞了。做法如下:
打開sshclient,菜單選edit--settings,出現設置對話框。裏面有global settings--user authentications--keys選項,進入後,可以看到Generate New按鈕,按下後根據提示,可是生成一個key,把這個key文件,按下面的按鈕Upload,即可把這個key文件上傳到server上你登錄的home目錄裏,具體位置是/home/yourname/.ssh2。這個.ssh2目錄,是上傳時自動生成的。但Freebsd默認目錄名是.ssh,而不是.ssh2。所以,根據上面提到帖子,我們用剛纔提到的wheel組用戶登錄server,進行如下操作:

$su
password:
#ls

能看見裏面已經有了一個.ssh2目錄。繼續下面:
#mv .ssh2 .ssh

改名爲.ssh
#cd .ssh
#ssh-keygen -X -f yourkey.pub >> authorized_keys

進入ssh目錄,把剛剛上傳的這個key文件導入機器的驗證文件裏。
此時,你已經可以退出sshclient,以key的方式重新登錄你的server了,不需要輸入密碼,可以直接登錄,而且你不用擔心泄密。軟件附贈一個sftp,同樣是加密的,很安全。

六、鳴謝
至此,我這個菜鳥也就沒什麼好說的了。上面這些,在方家來看都是小兒科,見笑了。不過,本着FREE的精神,我寫出來這些亂七八糟的字,一來方便一下後來的新人,二來也是一點點私心——給我自己留個筆記。嘿嘿。(做自己的blog是沒敢想過,只有本事看別人的blog了,kaka)
目前我自己的server運行良好,爲此特別感謝:delphij、ldconfig、jayvan、xiaohua、likuku,以及很多我一時想不起來的朋友。他們給了我很多及時的、有用的提示,使我能在1個月的時間裏,首先啓動這個server,非常感謝!!

七、後記——關於apache日誌輪詢。
服務器至今運行了一個半月了,硬盤並不大,日誌問題成了困擾我的一個大問題。可惜開始我還是不太會用cron及cronolog,這幾天看了chedong的blog,終於搞好了,和大家分享一下吧。我是這麼做的:
首先下載cronolog包,通過ssh傳到server上,解包安裝,默認就會很好的安裝了。

#tar -zxvf cronolog-1.6.2.tar.gz
#cd cronolog-1.6.2
#./configure
#make install

然後打開httpd.conf
#ee /usr/local/etc/apache2/httpd.conf

到虛擬主機的設置部分,把log日誌記錄改成如下的寫法:
CustomLog "|/usr/local/sbin/cronolog /yoursite/log/access%w.log" common
ErrorLog "|/usr/local/sbin/cronolog /yoursite/log/error%w.log"

再運行 crontab -e指令,給cron加入如下兩個任務:
0 5 * * * /bin/rm /yoursite/log/access`date -v-6d +/%w`.log
10 5 * * * /bin/rm /yoursite/log/error`date -v-6d +/%w`.log

重啓apache,以後的日誌將每天做一個備份,並且只保留1周的了。嘿嘿。

附錄A:對新人來說的重要文件,其位置及其用處。
/etc/make.conf
編譯的全局控制配置文件,很複雜,有例子,可以參考。
/etc/rc.conf
rc應該是資源的意思。此文件管理server的重要資源,例如網卡設置、守護進程啓用關閉、功能開啓關閉等等。
/usr/local/etc/rc.d
這不是個文件,而是個目錄,相當於dos的autoexec,這裏面的sh script都會在機器啓動時自動執行。同時,你要關閉apache或者mysql,都可以在這裏通過運行sh script達到目的。
/usr/local/etc
這個同樣不是文件,而是目錄。非操作系統的後裝的軟件的配置文件大都在這裏放置。
/usr/local/etc/php.ini
php配置文件。把同目錄下的php.ini-recommend拷貝一下就很好用。
/usr/local/etc/apache2/httpd.conf
apache2 web server配置文件。
/usr/local/etc/pure-ftpd.conf
pure-ftpd基礎配置文件。
/usr/local/etc/pureftpd-mysql.conf
pureftpd的mysql配置文件。
/usr/db/mysql/my.cnf(這是我的例子,你的或許應該是/var/db/mysql/my.cnf)
mysql配置文件。在/usr/local/share/mysql裏有例子,分別是my-small.cnf...my-huge.cnf。拷貝一份合適的到上述位置即可,我拷貝的是my-large.cnf。

附錄B:還沒想到,嘿嘿。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章