FreeBSD 5.2.1R Web Server架设实例过程

FreeBSD 10.1 上构建 FEMP 栈:Nginx+MySQL+PHP 部署实践 FEMP(FreeBSD + Nginx + MySQL + PHP)是一种面向高稳定性、强隔离性 Web 服务的类 LAMP 技术栈。其核心在于利用 FreeBSD 原生 kqueue 事件模型、jail 容器机制与 ZFS 文件系统优化,实现比传统 Linux 平台更低的 I/O 延迟和更精细的资源管控。Nginx 在该栈中不仅承担 Web 服务角色,更作为 FastCGI 网关与 TLS 终结点,深度协同 PHP-FPM 和 MySQL;而 MySQL 5.7 与 PHP 7.2 的组合,则兼顾 PH 阅读详情
本文献给和我一样初次接触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
具体操作如下。寻找:
<IfModule prefork.c>
找到这段之后,按照上述帖子的推荐值修改为:
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>

至此,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
文件里面只有这么一行代码:
<? phpinfo(); ?>
此时再访问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:还没想到,嘿嘿。

FreeBSD 10.1 + Apache + WordPress 部署实战指南 WordPress 是基于 PHP 和 MySQL 的主流开源内容管理系统,其稳定运行依赖于底层操作系统、Web 服务器与运行时环境的深度协同。FreeBSD 作为以稳定性与网络性能见长的类 Unix 系统,其 UFS 文件系统、kqueue 事件机制及严格的权限模型,为 WordPress 提供了区别于 Linux 的独特优化路径。Apache 的 event MPM 在 FreeBSD 上可实现更高效的并发处理,PHP 7.2 则在插件兼容性与 opcache 稳定性上仍具工程优势,而 MySQL 5. 阅读详情

相关推荐

FreeBSD 12.0 手动搭建 FAMP 栈:Apache+MySQL57+PHP81 实战指南

FAMP(FreeBSD+Apache+MySQL+PHP)是类Unix系统中稳定可靠的Web基础栈,其核心在于操作系统层与Web服务的深度协同。相比LAMP,FAMP依托FreeBSD内核特性如ZFS原生支持、jail容器机制和强制访问控制(MAC),提供更强的安全性与可审计性。技术价值体现在可控的包管理(pkg vs ports)、数据库兼容性保障(MySQL 5.7对UFS/ZFS的成熟适配)以及PHP运行时优化(OPcache与JIT)。典型应用场景包括WordPress、Nextcloud等PHP

weixin_30740581的博客 341

FreeBSD中配置FTP

 开启FTP服务的操作比较简单,配置过N多次,问题多出在用户权限方面,经过N多个小时的资料搜集,问题终于解决。 在配置FTP中,主要遇到了以下几个问题: 1.FTP用户该设置什么样的权限? 2.如何禁止FTP用户登录SSH? 下面介绍具体的配置方法: (1)编辑/etc/inetd.conf (2)/usr/libexec/ftpd -D -l -l

willhuo的专栏 1570

FreeBSD 10.1 新服务器初始化核心配置指南

FreeBSD 是一款以安全、稳定和显式控制为设计哲学的类 Unix 操作系统,其‘最小默认’特性要求管理员主动完成关键子系统配置。理解 swap 分区机制、NTP 时间同步原理、IPFW 状态化防火墙规则链,是构建可信生产环境的基础技术能力。swap 不仅缓解内存压力,更影响 FreeBSD VM 子系统的稳定性;NTP 不仅校准日志时间,更是 Kerberos 认证、SSL 校验等安全协议的底层依赖;IPFW 作为内核态包过滤框架,通过编号化、状态化规则实现高效访问控制。本文聚焦 FreeBSD 10.

a1311010193的博客 423

FreeBSD平台下Web服务器架设攻略

<!--google_ad_client = "pub-4490194096475053";/* 内容页,300x250,第一屏 */google_ad_slot = "3685991503";google_ad_width = 300;google_ad_height = 250;//--><script type="text/javascript"src="

管子(zero)的杂乱空间 1381

FreeBSD 10.1 部署 Unbound DNS 缓存服务器实战指南

DNS 缓存服务器是提升系统网络响应速度与解析稳定性的基础组件,其核心原理是通过本地递归解析、结果缓存及 DNSSEC 验证,减少对外部 DNS 的依赖并增强安全性。技术价值体现在毫秒级响应、抗上游故障、隐私保护(如 QNAME 最小化)和合规性(如 DNSSEC 强制验证)。典型应用场景包括 FreeBSD 系统优化、pkg 包管理加速、容器化环境 DNS 可靠性加固,以及家庭 NAS 或开发主机的自主解析需求。本文聚焦于在 FreeBSD 10.1 这一经典稳定版本上,基于 Unbound 实现轻量、安

csdn785029689的博客 500

FreeBSD Web服务器配置教程

您已经成功在FreeBSD上配置了一个基本的Web服务器,并设置了虚拟主机和启用了HTTPS加密。在本教程中,我们将详细介绍如何在FreeBSD操作系统上配置和设置一个基本的Web服务器。我们将涵盖安装和配置所需的软件包,以及设置虚拟主机和启用HTTPS加密。这是一个基本的配置示例,并且您可以根据您的需求进行进一步的自定义和优化。您可以编辑Apache的配置文件和虚拟主机文件,以添加更多的网站和自定义设置。接下来,我们将配置一个虚拟主机,使我们能够在同一台服务器上托管多个网站。安装Apache软件包。

TpCode的博客 531

安装 - FreeBSD + Nginx 环境搭建教程(推荐)

前言:本文是关于如何搭建基于“FreeBSD7.2 + Nginx0.8.24 + PHP5.2.11(FastCGI) + GD2.0.53 + ZendOptimizer3.3.9 + Mysql5.1.40 + 系统优化 + 防ddos攻击”高性能、高负载Web服务器的文章,安装方式为源代码安装。  文档目录 为什么要选择 FreeBSD? 为什么要选择 N...

weixin_34198762的博客 2604

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

在FREEBSD 5.2中使用Pureftpd + MySQL + Pureftpd_php_manager架设FTP SERVER

樊礼(梦飞) 前些日子都想写的﹐但由于忙着安装新SERVER﹐一直想着弄完成后可以把其中的过程写出来。现在新SERVER也上架了﹐有时间慢慢写几篇文章出来了﹐*^_^*本文是傻瓜式的教程﹐目的就是让初学FREEBSD的朋友可以一步一步做下去﹐就建立了自己的FTP SERVER了。其中过程可能有一些罗嗦,有水平的朋友可以跳着看即可,谢谢!如果你是第一次使用pureftpd,可以按步就班的做,对你理清

逸天的Blog 1303

Containerd容器运行时的私有仓库镜像推送push和镜像拉取问题解决

向/etc/containerd/config.toml配置添加如下配置,然后重启containerd。向/etc/containerd/config.toml配置添加如下配置,然后重启containerd。通过crictl为k8s拉取镜像如下所示。可以通过ctr命令进行镜像推送。往私有仓库推送镜像如下。

Bulut0907 1万+

python爬取《你好, 李焕英》豆瓣评论数据

# 导入工具包 import requests from bs4 import BeautifulSoup import time import pandas as pd import numpy as np # 请求头 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'} # =

python技巧分享 3457

FreeBSD 11.0 下 Lighttpd+MySQL+PHP 高性能 Web 栈部署指南

Web 服务器是现代应用架构的基石,其选型直接影响并发能力、资源效率与运维稳定性。Lighttpd 作为轻量级事件驱动服务器,依托 FreeBSD 的 kqueue 机制和 Capsicum 沙箱,在高并发低延迟场景中展现出独特优势;MySQL 5.7 提供在线 DDL、JSON 原生支持与 ZFS 快照一致性保障,契合生产环境对数据可靠性的严苛要求;PHP 7.2 则在 ABI 兼容性、opcache 性能与 FreeBSD rc.d 服务集成方面实现精准匹配。该技术栈特别适用于教育 SaaS、中小型企业

weixin_34405354的博客 368

WordPress主题开发实战:从零开始手把手教你创建自定义主题(含常用函数大全)

本文是一份WordPress主题开发实战指南,从零开始手把手教你创建自定义主题。内容涵盖主题核心文件结构、模板层级与循环机制、函数与钩子的运用,并附有详细的常用函数大全,帮助开发者彻底掌握主题开发的核心技能,实现从使用者到创造者的转变。

weixin_27943395的博客 256

FreeBSD 11.2 上源码编译 Nginx 的定制化部署实践

Nginx 是高性能 Web 服务器与反向代理的核心组件,其运行效能高度依赖操作系统底层支持与构建配置。FreeBSD 作为独立演化的类 Unix 系统,拥有独特的内核机制(如 ULE 调度器、ZFS sendfile 优化)、软件构建体系(Ports)及安全策略模型。在 FreeBSD 11.2 这一长期稳定但已停止主流更新的版本上,二进制包(pkg)虽提供开箱即用体验,却无法满足 Brotli 压缩、stream_ssl_preread 等现代协议模块及 CPU 指令集深度优化需求。因此,通过 Port

conghuang7343的博客 420

OpenSceneGraph编译、安装、开发环境

详细描述WIndows 10下使用Visual Studio 2019编译OpenSceneGraph 3.6.5的操作流程

国产CAx(CAD/CAE/CAM)软件研发 8772

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

FreeBSD 10.1 手动部署 FAMP 栈:原生适配与生产级实践

FAMP(FreeBSD + Apache + MySQL + PHP)是类 Unix 系统中区别于 LAMP 的关键服务架构,其核心在于操作系统原生机制的深度协同。理解 FreeBSD 的 rc.d 服务管理、www 用户权限模型、kqueue 事件驱动及 base OpenSSL 依赖链,是实现稳定部署的前提。Apache 在 FreeBSD 上通过 prefork MPM 与 mod_php 实现低内存友好型 PHP 执行,MySQL 需适配 /var/db/mysql 路径与 Jail 隔离,PHP

weixin_30274627的博客 352

Tesseract in Java - Intellij IDEA对Tess4J的配置和使用

最近要弄OCR,搜到这个,官网全英文,很烦,看看有没有中文的博客介绍,擦,一个比一个奇葩,还是自己按照官方的来吧,外网慢的很,传到csdn给大家下载。中文训练库下载地址: http://download.csdn.net/detail/d_dmelon/9916532Tess4J3.4下载地址: http://download.csdn.net/detail/d_dmelon/9916519安装

Lewis的博客 1万+

FreeBSD 10.1 手动构建 FAMP 栈:Ports 编译与 ZFS/ kqueue 深度优化

FAMP(FreeBSD + Apache + MySQL + PHP)是面向类 Unix 系统的 Web 服务基础架构,其核心在于操作系统内核、文件系统与应用层的协同。在 FreeBSD 平台上,ZFS 提供数据完整性保障,kqueue 实现高效事件驱动,而 Ports 系统赋予开发者对编译参数、依赖链和安全基线的完全掌控力——这远超 pkg 二进制分发的黑盒封装。相比泛化的 LAMP 教程,FAMP 在 FreeBSD 中强调可审计性、可复现性与底层适配,尤其适用于工业采集(如 php rs485)、安

weixin_33737774的博客 324

Unet++改进33:添加ConvolutionalGLU(2024最新改进方法)|紧凑的网络结构和高效的运算

由于残差连接的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉变形模型往往不能形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,在本文中,我们提出了聚合注意力,这是一种基于仿生设计的令牌混合器,它模拟生物中央凹视觉和连续眼运动,同时使特征映射上的每个令牌具有全局感知。此外,我们结合了可学习的令牌,与传统的查询和键交互,这进一步多样化了亲和矩阵的生成,而不仅仅依赖于查询和键之间的相似性。我们的方法不依赖于堆叠进行信息交换,从而有效地避免了深度退化,实现了自然的视觉感知。

AIcurator的博客 684

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

freebsd php 编译 mysql sql2005,FreeBSD 8 mysql apache php java整合

1.下载安装FreeBSD 8,DVD12.安装mysql 5 - 利用ports安装cd /usr/ports/databases/mysql50-server/make install clean # n长的编译过程rehashmysql_install_db --user=mysqlchown -R mysql /var/db/mysql/chgrp -R mysql /var/db/mys...

weixin_39520199的博客 116

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: FREEBSD升级和优化全攻略
下一篇: 使php程序无后缀名也能解析的apache 设置
slamdunk3
博客等级 码龄24年 6粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值