x264-- H.264/AVC编码器
/usr/ports/multimedia/x264
x264是完全从头开始编写的H.264/AVC格式的视频流的编码器。以GPL协议发布。x264还处于早期开发阶段。
http://developers.videolan.org/x264.html
/usr/ports/multimedia/x264
x264是完全从头开始编写的H.264/AVC格式的视频流的编码器。以GPL协议发布。x264还处于早期开发阶段。
http://developers.videolan.org/x264.html
/usr/ports/security/gnupg
gnupg是完全替换pgp的软件,没有使用专利的IDEA算法,所以可以不受限制的自由使用。 GnuPG完全符合RFC2440(OpenPGP)文本。
/usr/ports/www/autoindex
/usr/ports/www/autoindex2
AutoIndex可以用表格的方式列出目录下的文件,有php4和php5两个版本,php4版本在autoindex目录,php5版本在autoindex2目录。可方便用户访问目录下的文件及子目录。提供了搜索、管理面板、上载、文件描述等特性,还为每一种文件类型提供图标。
/usr/ports/net-mgmt/sting
sting是一个基于TCP的端到端网络路径特性测量工具,sting可测量单向特性,如丢包率(通过小心处理和观察TCP的行为)。此外使用TCP也是为了适应现在的互联网基础设施,任何TCP服务都可用来进行测量服务,从而避免了使用ICMP出现的一些问题,如被阻止、伪装和速率限制等。
/usr/ports/net-mgmt/sing
Sing是一个命令行工具,可以发送定制的ICMP包,用来补充ping的不足,主要增强包括:
yabm, Yet Another Bandwidth Meter,使用图形化png文件的方式显示当前网卡的带宽使用情况。可在FreeBSD 4.10以上版本运行。在FreeBSD 4.10 ,4.11,5.3和6.0上测试过。
使用ports安装:
#make
#make install
安装了脚本 /usr/local/etc/rc.d/yabm.sh
如果要监测端口fxp0和ip地址192.168.0.1,就在/etc/rc.conf文件中加入:
yabm_enable="YES"
yabm_if0="fxp0"
yabm_if0_output="/usr/local/www/bw-fxp0.png"
yabm_if0_flags="-m 512k -t" //这里的-m 参数表示显示的最大端口速率,默认是使用端口的实际最大速率,如果网卡是100Mbps,则很多时候网卡数据流量很小,图示数据会很不明显。
yabm_alias0="192.168.0.1"
yabm_alias0_output="/usr/local/www/bw-ip.png"
yabm_alias0_flags=""
使用/usr/local/etc/rc.d/yabm.sh start启动,/usr/local/etc/rc.d/yabm.sh stop停止运行。
监测结果如下图:
![]()
Zabbix是一整套网络监测工具。可运行在AIX, FreeBSD, HP-UX, Linux, MacOS X, NetBSD, OpenBSD, Solaris, Tru64/OSF等平台。它可以使用SNMP v1 v2 v3进行监测,也可使用zabbix agent进行监测。zabbix agent可运行在windows平台。它使用SQL数据库存储配置、数据信息等。使用web方式进行管理和展现,可实现无处不在的管理(即只要把管理平台放在互联网上,就可在任何联网的地点进行管理)。
zabbix具有丰富的图表表现能力,可以展示历史数据、趋势分析等等。可进行服务器性能监测、网络监测,并集成故障管理和性能管理功能。
从ports安装
#cd /usr/ports/net/zabbix
#make
#make install
安装过程中会自动编译安装依赖的软件包。
awstats早已进入FreeBSD ports,通过ports安装非常方便。
#cd /usr/ports/www/awstats
#make
#make install
安装结束提示信息有:
Please add the following to your apache config, and restart.
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/www/awstats/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
软件主要文件安装在 /usr/local/www/awstats 目录下。可按照上述提示信息,修改apache的配置文件,并修改apache的log文件格式,在httpd.conf文件中加入:
LogFormat "%h %l %u %t \"%r\" %>s b \"{Referer}i\" \"%{User-Agent}i\"" combined
并修改 CustomLog一行为:
CustomLog /var/log/httpd-access.log combined
重起httpd服务,或使用下面的方法:
这里注意FreeBSD ports安装时在/usr/local/www/awstats/ 目录下创建了6个目录:cgi-bin,classes,css,icons,js和tools,需要创建新目录wwwroot,并把除tools以外的其他五个目录移到wwwroot下。
可使用 tools目录下的awstats_configure.pl脚本创建awstats的配置文件,该脚本可自动检查apache的配置文件并进行适当修改,并创建相应的配置文件,默认存储在/etc/awstats目录下。
需要的时候需要对生成的配置文件进行修改,如修改配置文件中指定的log文件的存储路径等。
配置完成后,可执行 cgi-bin/awstats.pl -config=
0 1 * * * root /usr/local/www/awstats/cgi-bin/awstats.pl -update -config=
让该命令每天周期性运行,以保持数据更新。
本文介绍在FreeBSD下安装qmail+vpopmail+mysql,并实现smtp邮件发送认证的过程。采用MySQL数据库作为用户数据库,进行用户信息的保存和认证,稳定、高效速度快,使用vpopmail支持虚拟域名用户,简捷方便。所有的安装过程采用FreeBSD的ports进行安装 (参看FreeBSD上的软件安装方法),以下步骤在FreeBSD Release 4.4下测试通过。
1. 安装mysql
cd /usr/ports/database/mysql322-server
make
make install
cd /usr/ports/database/mysql322-client
make
make install
2. 安装qmail-1.03
cd /usr/ports/mail/qmail
make
make install
3. 安装 ucspi-tcp-0.88
cd /usr/port/sysutils/ucspi-tcp
make
make install
FreeBSD下面可以使用的数据库系统很多,比较常用的免费数据库系统就是MySQL和PosgreSQL了,这篇文章里将介绍这两个数据库系统的安装方法。另外,使用Apache辅以PHP和MySQL或PostgreSQL建设一个优秀的数据库驱动的WEB环境是很流行的,这里也一并进行介绍。
如果有了专为FreeBSD设计开发的软件包,那么使用pkg_add进行安装是最简便的方法,那么你最重要的任务可能就是找到这个包在哪里,或者在你的光盘上,或者在网络上,找到了,安装也就容易的多了。这里介绍的是使用软件源码编译安装。
安装MySQL
以mysql-3.22.32版为例,这个版本是推荐使用的稳定版本的最高版本,首先取得源码文件mysql-3.22.32.tar.gz,按以下步骤进行操作:
1.选择适当的目录,解压缩文件。
#tar xzvf mysql-3.22.32.tar.gz 。
2.#cd mysql-3.22.32
3.#./configure --with-low-memory
参考在FreeBSD 4.0上编译MySQL
4.#make
5.#make install
6.#scripts/mysql_install_db
7.#/usr/local/bin/safe_mysqld &
启动mysql后端程序。如果要在每次系统启动时就启动mysql,那么将 /usr/local/bin/safe_mysqld &加到/etc/rc.local中即可。
安装PostgreSQL
以postgresql-6.5.3为例,使用ports进行安装,取得源码 postgresql-6.5.3.tar.gz放在 /usr/ports/distfiles/目录下,然后进行如下操作:
1.#cd /usr/ports/databases/postgresql
2.make
3.make install
4./usr/local/etc/rc.d/pgsql.sh 启动postgreSQL。
编译PostgreSQL需要使用gmake-3.78.1,所以需要首先安装这个包。
如果不从ports进行安装,而直接进行编译的话,将非常繁杂,解开postgresql-6.5.3.tar.gz 这个文件,里面包括有INSTALL这个说明文件,详细讲述了进行编译安装的过程,可以进行参考。使用ports安装的方便在于ports将许多工作自动完成了。
安装PHP和Apache
PHP是服务器端执行的、跨平台的HTML嵌入式脚本语言,有着方便的数据库接口。FreeBSD的 packages中提供了多个不同编译条件下生成的Apache包,但它们可能不能完全适合你的使用。因此自己编译适合自己需要的 Apache WEB服务器时非常必要的,这里介绍编译一个支持用PHP访问MySQL和PostgreSQL数据库的Apache服务器。
首先取得php和apache的源码。这里以php-3.0.12.tar.gz和apache_1.3.12.tar.gz为例。
1. tar xzvf apache_1.3.12.tar.gz
2. tar xzvf php-3.0.12.tar.gz
3. cd apache_1.3.12
4. ./configure -prefix=/www
5. cd ../php-3.0.12
6. ./configure --with-mysql --with-pgsql --with-apache=../apache_1.3.12 --enable-track-vars
必要的时候需要指出mysql和pgsql的安装位置,使用--with-mysql=[DIR]的形式。
7. make
8. make install
9. cd ../apache_1.3.12
10. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
11. make
12. make install
使用这种安装方式将PHP安装成Apache的一个模块,还可以单独将PHP编译成一个解释程序,这里不再做进一步讨论了。安装结束后需要编辑apache的配置文件httpd.conf,使Apache能够正确处理PHP文件,采用上述编译过程的Apache的配置文件在/www/conf/目录下,编辑httpd.conf文件,加入:
AddType application/x-httpd-php3 .php3
使用/www/bin/apachectl restart重新启动apache服务器,这时你的Apache服务器就支持使用PHP了,编辑一个简单的php文件测试是否成功,文件名为test.php3,如下:
phpinfo() ?>
注意文件名一定要以php3作为扩展名,要使用其它扩展名,如php,就要在httpd.conf里加入:
AddType application/x-httpd-php3 .php
要想在系统每次启动时就启动Apache,在/etc/rc.local中加入/www/bin/apachectl start即可。
在清华BBS上看到有些朋友在 FreeBSD 4.0 Release上编译MySQL时通不过,停留在编译sql/sql_yacc.cc文件处,很长 时间都通不过,有网友说编译了三个多小时都通不过,我真的很佩服他的耐心了。我也 遇到了同样的问题,还有过错误的判断。通过与清华BBS的网友交流,我相信找到了问题 所在。
有网友说用ports安装就没有什么问题,但并没有进一步说明 到底是因为什么。看了一下ports中对mysql-server的说明,原来用ports编译mysql需要 一个包:libtool-1.3.3。
请看FreeBSD对libtool这个包的描述
This is GNU Libtool, a generic library support script. Libtool hides the complexity of using shared libraries behind a consistent, portable interface.
To use libtool, add the new generic library building commands to your Makefile, Makefile.in, or Makefile.am.
这是GNU Libtool,通用的库支持脚本。Libtool 用一致的方便的接口隐藏了使用共享库的复杂性。(蹩脚的翻译)要使用libtool,将新的通用库 编译命令加入Makefile,Makefile.in,或Makefile。am中。
使用ports安装需要先安装libtool-1.3.3这个包,但是不用ports安装, 直接编译也需要么?实验证明是不需要的,在没有安装libtool包的情况下直接编译mysql也可以通过, 只是停留在编译sql_yacc.cc这个文件的时间非常长,一般人都会觉得编译出了问题而中断编译过程。 如果你耐心等待,并且有足够的内存和交换分区,应该是可以编译通过的。
如果在编译sql_yacc.cc的时候出现了下面的错误:
Internal Compiler error: program cc1plus got fatal signal 11或
Out of virtual memory或
virtual memory exhausted
该问题是gcc要求大量的内存编译带有嵌入函数(inline function)的sql_yacc.cc, 而系统内存和交换分区不足,那么可以使用./configure --with-low-memory重新配置,再进行编译。
如果你正在使用gcc,该选项使得将-fno-inline加到编译行,如果你正在使用 其他的编译器,则加入-O0。即使你有特别多的存储器和交换空间,也应该试一试--with-low-memory 选项。
我通过测试表明,使用--with-low-memory显著的降低了编译时间,而用ports安装时, ports中的patch将-O0加入了Makefile,不使用--with-low-memory也同样可以快速的编译完成。
其实,FreeBSD 4.0 Release的ISO安装盘中有mysql的二进制安装包, 不用编译,pkg_add就ok了,何必如此麻烦呢?
From http://www.apache.org/docs/misc/perf-bsd44.html
Cernet译
和其他操作系统一样,监听队列(listen queue)是首要限制条件。下面是Aaron Gifford
编辑下面两个文件:
/usr/include/sys/socket.h
/usr/src/sys/sys/socket.h
在每个文件中,搜寻:
/*
* Maximum queue length specifiable by listen.
*/
#define SOMAXCONN 5
将5修改为任何可以工作的值即可。经测试调整到32是不会有什么问题的。修改后,重新编译kernel和Apache Server然后重新启动。 FreeBSD 2.1在SOMAXCONN设置为32时工作的非常好。
附录:BSD服务器在重负载下Apache的性能调整
From Chuck Murcko
如果正运行着一个非常繁忙的BSD Apache服务器并且系统的反应很慢,那么如下工作将很有用处:
运行vmstat检查内存使用情况、page/swap利用率等
运行netstat -m检查mbuf使用情况
运行fstat检查文件描述符使用情况
这些应用提供给你该如何调整kernel的信息以及是否应该增加一些内存。下面是一个有很重负载的BSD服务器的kernel配置参数(实际是BSDI服务器,但是与FreeBSD和4.4-Lite相关),系统其他参数没有变化。
maxusers 256
maxusers对其他kernel参数产生影响:
进程的最大数目
每个用户进程的最大数目
系统打开文件数目限制
每个用户打开文件数目限制
mbuf clusters最大数目
Proc/pgrp hash表大小
这些引申参数的定义公式在/usr/src/sys/conf/param.c中。这些计算出来的参数部分会被kernel配置文建里自己定义的值覆盖:
# Network options. NMBCLUSTERS defines the number of mbuf clusters and
# defaults to 256. This machine is a server that handles lots of traffic,
# so we crank that value.
options NMBCLUSTERS=4096 # mbuf clusters at 4096
#
# Misc. options
#
options CHILD_MAX=512 # maximum number of child processes
options OPEN_MAX=512 # maximum fds (breaks RPC svcs)
在许多情况下,NMBCLUSTERS应该设置的比第一眼看上去需要设置的值大的多。这是因为如果浏览器在传输中中断了连接,与特定连接相关的socket fd要在TIME_WAIT状态等几分钟才释放,在等待时mbuf并没有释放。另外,在服务器的timeouts中,一些连接会停留在FIN_WAIT_2状态,这个状态不会超时,浏览器又不会发出最终的FIN信号。
关于mbuf clusters更多的信息(From sys/mubf.h)
/*
* Mbufs are of a single size, MSIZE (machine/machparam.h), which
* includes overhead. An mbuf may add a single "mbuf cluster" of size
* MCLBYTES (also in machine/machparam.h), which has no additional overhead
* and is used instead of the internal data area; this is done when
* at least MINCLSIZE of data must be stored.
*/
CHILD_MAX和OPEN_MAX设置成允许512个子进程(与每用户最大进程数不同)和文件描述符。这个值可以根据你的特殊配置进行修改(如果你的模块或CGI要打开许多文件时,就设置一个较大的OPEN_MAX)。如果在同一机器上除httpd外还有其他许多工作,就需要设置较大的 NPROC。该例中NPROC的值来源于maxusers。
增大listen() queue的大小,需要调整SOMAXCONN的值。SOMAXCONN不是来自于maxusers的。所以需要自己增大这个值。目前,这个值在 sys/socket.h中设置。调整这个参数最好的方式时run-time(运行时更改),这要比在头文件中修改要好。要在运行时更改,编辑 /etc/rc.local,增加:
/usr/sbin/sysctl -w kern.somaxconn=256
这里使用256,可以进行更改以适合你的需要。许多情况下,设置成128就可以了。
警告:
如果配置的kernel使用的资源超过了你可使用的系统RAM的数量,系统可能不能启动。保证任何时候有一个可以启动系统的kernel。使用一些系统工具了解一下你是否需要增加一些内存。
当OPEN_MAX大于256时,RPC服务会失败。这是由于原始的RPC库的一个函数使用1 byte保存文件描述符导致的。BSDI release 2.1解决了部分问题,但最终的解决需要等待重新设计RPC。
最后还有一个在Apache中对子进程配置的硬限制。
对Apache 1.0.5以后的版本,需要改变httpd.h中HARD_SERVER_LIMIT的定义并重新编译才能运行超过150个httpd进程。
在conf/httpd.conf-dist中:
# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# Unix with it as it spirals down...
MaxClients 150
在增大这个值之前,要检查一下你的系统,RAM 扩展,并调整kernel。
M. Teterin"
对kernel和经常使用的应用程序进行优化非常有用。在AMD-133(486类CPU)上重新编译FreeBSD kernel时加上
-m486 -fexpensive-optimizations -fomit-frame-pointer -O2
可以减少 "unable" errors。