Posts Tagged FreeBSD

FreeBSD ports的修复

习惯上用portupgrade -a命令升级全部软件包。可是近期有两个库一直跟我过不去GD和Jpeg,系统提示pkgdb.db文件的依赖性有问题,需要修复。

按照提示输入pkgdb -F修复了半天,回答的问题一道道,像是考试一样,很烦,于是杀掉后,pkgdb -aF自动修复得了,谁知这下玩了蛋,系统提示:

—>  Updating the pkgdb
[Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]

呵呵,损坏了!

在man里面找了半天,得出了解决方法。

  • rm /var/db/pkg/pkgdb.db
    删除pkgdb.db软件包数据库。俗话说:旧的不去,新的不来。
  • portversion
    重建软件包数据库。

所有问题迎刃而解,就是这么简单!

No Comments

给FreeBSD Ports加速的方法

  • 使用代理。

在/etc/make.conf中设置:
FETCH_ENV= "HTTP_PROXY=IP[:端口]"
如果需要,在FETCH_ENV值后面加入空格,
HTTP_PROXY_AUTH=basic:*:user:password

  • 利用其他机器下载的文件

首先,请确保2台机器cvsup的一致,然后将A机的/usr/ports/distfiles拷贝至B机的相同位置。
更有甚者……开NFS吧。

方法c:使用wget/axel加速你的port下载

以下所述功能均通过修改make.conf实现

对于wget
========
FETCH_CMD= wget
FETCH_BEFORE_ARGS= -c -t 1
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes #这行是必要的,否则…

前面3行也可以换成
FETCH_CMD=wget -c -t 1

如果你要wget穿透代理服务器,请加上下面两行
FETCH_ENV=http_proxy=http://proxy2.zsu.edu.cn:3128
FETCH_ENV=ftp_proxy=http://proxy2.zsu.edu.cn:3128

或者使用其他的穿越代理工具例如proxychains 或者socks5(runsocks)
则FETCH_CMD=proxychains wget或者runsocks wget

什么?不知道wget是什么?那就先
cd /usr/ports/ftp/wget/
make install clean

对于axel
========
同样,也可以使用axel来替换fetch来进行多线程下载
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
或者只写一行
FETCH_CMD=axel -a

axel 穿透代理服务器的方法与wget一致

axel在/usr/ports/ftp/axel位置

  • 添加更快的port下载站点

在make.conf文件中使用配置MASTER_SITE_OVERRIDE参数,可自行增加软件镜像以及修改镜像服务器的优先级。
如,以下是解决教育网用户下载慢的问题
MASTER_SITE_OVERRIDE=
ftp://ftp2.tsinghua.edu.cn/mirror/FreeBSD/ports/distfiles/
ftp://freebsd.csie.nctu.edu.tw/pub/FreeBSD/ports/distfiles/
ftp://ftp.hk.freebsd.org/pub/FreeBSD/ports/distfiles/
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/

1 Comment

FreeBSD下整合Apache和Tomcat

首先,建议大家检查 /etc/rc.conf,看看有没有开启Linux二进制兼容模式!

代码:
  linux_enable="YES"

安装之前,需要你安装JDK – Java Develop Kit,对应的需求如下:

  • Tomcat 4.x.x 以下版本 – JDK 1.3.X ~ JDK1.4.X
  • Tomcat 5.0.x 版本 – JDK 1.4.X or upper
  • Tomcat 5.5.x 版本 – JDK 5.0

自从发布了JDK的官方For FreeBSD版本后,安装JDK变得容易了许多。

下面开始进行….首先,请针对所需要安装的ports进行cvsup !

(1)安装Apache Web Server

代码:
  # cd /usr/ports/www/apache13/
  # make
  # make install


完成后,请在 /etc/rc.conf 加入如下内容:

代码:
  apache_enable="YES"

(2)安装Apache Tomcat

代码:
  # cd /usr/ports/www/jakarta-tomcat5/
  # make
  # make install


安装完成后,请确认是存在/usr/local/bin/tomcat50ctl!并确认server.xml是有开启AJP1.3的:

代码:
  <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">

(3)配置一些环境变量

图简单可以把它们放在/etc/rc.conf中!

代码:
  export JAVA_HOME=/usr/local/jdk1.5.0
  export CATALINA_HOME=/usr/local/jakarta-tomcat5.0
  export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

(4)阶段性测试

看看Tomcat是否正常:

代码:
  # cd /usr/local/jakarta-tomcat5.0/bin/
  # ./startup.sh


应该看到如下的内容,并请你用Web浏览器测试Tomcat!

代码:
  Using CATALINA_BASE:   /usr/local/jakarta-tomcat5.0
  Using CATALINA_HOME:   /usr/local/jakarta-tomcat5.0
  Using CATALINA_TMPDIR:   /usr/local/jakarta-tomcat5.0/temp
  Using JAVA_HOME:   /usr/local/jdk1.5.0

(5)开始进行整合Apache & Tomcat

首先安装mod_jk:

代码:
  # cd /usr/ports/www/mod_jk
  # make
  # make install


完成后,请修改/usr/local/etc/apache/httpd.conf,找到下面2行,把行首的注释符号#去掉!

代码:
  LoadModule jk_module  libexec/apache/mod_jk.so
  AddModule  mod_jk.c


新增下面的配置内容:

代码:
  Include /usr/local/etc/apache/mod_jk.conf


修改/usr/local/etc/apache/mod_jk.conf的内容:

代码:
   <IfModule mod_jk.c>
       JkWorkersFile /usr/local/etc/apache/workers.properties
       JkLogFile  /var/log/mod_jk.log
       JkLogLevel warn
       JkMount /*.jsp default
       JkMount /servlet/* default
       JkMount /examples/* default
   </IfModule>


接下来,需要修改/usr/local/etc/apache/workers.properties (注意2个文件中的default只是一个代号!):

代码:
  workers.tomcat_home=/usr/local/jakarta-tomcat5.0
  workers.java_home=$JAVA_HOME
  ps=/
  worker.list=default
  worker.default.port=8009
  worker.default.host=localhost
  worker.default.type=ajp13
  worker.default.lbfactor=1

好,到这里配置基本上完成了,接下来开始祈祷并运行吧!

代码:
  # touch /var/log/mod_jk.log
  # /usr/local/bin/tomcat50ctl start
  # /usr/local/sbin/apachectl start

写一个测试的test.jsp放到/usr/local/jakarta-tomcat5.0/webapps/ROOT/,用 http://localhost/test.jsp 看看!

更多信息,请参考:ApacheTomcat.com FlashGuides

, ,

1 Comment

”httpready” Accept Filter

在FreeBSD下使用ports安装apache22会出现类似的warming:
No such file or directory: Failed to enable the ”httpready” Accept Filter

解决方法是:
#kldload accf_http

并将/boot/defaults/loader.conf中,以便下次启动自动装载模块
accf_data_load="YES"
accf_http_load="YES"

个人觉得这好像是一个apache22的bug,不能启动FreeBSD自带的一个基于http端口过滤的模块。这个模块的作用很不错——检查HTTP请求是否完整,符合规则accpt一个Http进程,
否则就扔掉。

linux下也有一个类似的东西,工作在 accept 的 socket 上面。代码:

val = 5;      setsockopt(srv_socket->fd, SOL_TCP, TCP_DEFER_ACCEPT, &val, sizeof(val)) ;

,

No Comments

六大商业Unix操作系统

Unix是IT世界仅存的几个神话之一,自1969年诞生以来,它就一直被人们使用着。它过去的历史,简直就像一个民族的历史。我们应该庆幸,全体的Unix使用者终于安全渡过了它成长中的阵痛。那些曾经被忽略的用户则开始安装最新的Unix。Unix不是一个急功近利的奋斗者。要把Unix的执行效率和稳定性调整到最优状态,需要几个月的时间。它和硬件间令人难以捉摸的联系、众多的版本和补钉都会让人生畏。Unix之所以能长久使用,是由于其强大的自我调整能力,可以承载任何负荷。它可以一直运行,直到机器的某个部件被烧毁。

很多人认为,免费Linux 对于多年来以昂贵著称的商业Unix操作系统是一种伤害。对于SCO和SGI而言,这的确不错,然而,对于IBM、Sun 和HP来说,Linux则给Unix带来了复兴和繁荣。使用Linux作为教学工具,使大学里开始有大量的具有Unix管理能力及开发能力的大学生和研究生。虽然Linux的知识不能直接应用于企业Unix系统,但是应用Linux的经验给企业级的应用培训打下了坚实的基础,同时也使人们明白了为什么 Linux不能代替Unix。商业Unix的开发、改进,尤其是错误的修正,都是由整个公司、整个生产线来保证的。

  SGI Irix
  目前状况:一般

  当前版本:Irix 6.5

  硬件平台:SGI MIPS 服务器和工作站

  遵循标准:Unix 95

  优势:Irix可扩展到512个CPU和1TB的RAM,它可以达到惊人的服务器I/O处理能力,并且Irix在SGI上拥有高端和数字媒体的市场。
  劣势:缓慢的MIPS CPU和在PC领域的失败;其兼容性和工具问题妨碍了其商业开发。 
  前景展望:SGI公司试图使其脱离MIPS处理器,并且其Irix OS也将移植到Intel PC、Windows和Linux。它们放弃了SGI现存的Irix用户。SGI在创建高速服务器I/O子系统方面能力有限。这项服务是SGI的传统市场(电影和电视动画、医学和科学的可视化高端数字媒体),但是这个领域要想维持SGI还是显得太小。
  我们可以看出,Irix已经只是在艰难维生。它的用户群将很有可能支持基于Linux或者其它操作系统的服务器。

  IBM AIX
  目前状况:好

  当前版本:AIX 5L

  硬件平台:IBM RS/6000和其它使用IBM Power 和PowerPC系列处理器的系统,Intel IA-64版。

  遵循标准:Unix 98

  优势:强大、稳固的IBM 64位Power/PowerPC CPU;一个操作系统可用于整个RS6000生产线;Linux代码移植是一个标准选项;IBM的Visual Age Java 和C/C++工具非常利于开发。
  劣势:企业计划使用IA-64和Linux系统时需要考虑 RS/6000 和 AIX。
  前景展望:AIX 5L,代号“Montery 项目”,借鉴了其它一些Unix,创建了一个通用的、高度兼容的操作环境。IBM想使其和Linux成为统一的操作系统,并且承诺将开发基于Intel的64位 CPU体系结构的AIX。
  这不由得让人对IBM给AIX和RS/6000的承诺产生怀疑。不过AIX的用户不用担心,Linux或者Intel要达到IBM目前企业级Unix 的标准,还要很长的时间。
  IBM有很多合作伙伴,但是IBM一般是不会通过改变自己的策略去取悦他们,所以,相信AIX将会继续存在下去。

  Compaq Tru64 Unix
  目前状况:良

  当前版本:Tru64 Unix 5.1

  硬件平台:Compaq Alpha 工作站和服务器

  遵循标准:Unix 95

  优势:Tru64使用的是强大、精巧的Carnegie-Mellon Mach内核;对于中小型服务器而言,64位的Alpha CPU的利用率是最高的;它遵循Digital Equipment遗留下来的传统:能创建强大的、用户能够支付得起的服务器系统。
  劣势:在Intel 的服务器市场上,Compaq缺乏经验和信誉;在Alpha用户中,Linux非常的流行;系统V中的兼容性漏洞有时会使应用程序碰到困难。
  前景展望:Alpha 遵循一流的SPEC(Standard Performance Evaluation Corporation)标准,对于特定的时钟频率,它是最快的CPU。Compaq把名字由Digital Unix改为Tru64 Unix是为了强调Alpha芯片是真正的64位的家族。对于Compaq来说,现在所要做的是要占领更大的服务器市场份额。
  Compaq在PC机上的声望对其似乎有害无益。与专有的Tru64相比,Linux和成熟的OpenVMS可能会更多地赢得企业的青睐。Intel 则会毫无疑问地建议Compaq转去使用IA-64而不是Alpha。Tru64 Unix在Alpha上有上佳的表现,但是其前景还要等到IA-64推出时Compaq会有何举动才能定论。

  Hewlett-Packard HP-UX
  目前状况:好

  当前版本:HP-UX 11i

  硬件平台:HP 9000服务器

  遵循标准:Unix 95

  优势:HP在可靠性和服务方面的声誉人所共知;HP-UX和一个丰富、实用的操作系统包一起推出,它包括Web server、C/C++、 Windows网络、 WAP (无线应用协议) 服务、 Linux APIs、 iPlanet 目录服务器和 Veritas文件系统。
  劣势:相对于竞争者而言,HP PA-RISC体系结构在性能上有待改进。
  前景展望:HP很少是第一或者是最快的,但是它在其Unix产品中捆绑了很多有价值的东西。就整体而言,HP-UX和Linux非常的接近。时间将证明,企业工具和服务应该包括在一起。HP有真正的日志文件系统,这使HP-UX 11i表现不俗。
  可以相信,一旦HP在性能上赶上其竞争对手并使其HP-UX顺应Unix 98,那么它将可以超过Sun和IBM。

  SCO UnixWare
  目前状况:一般

  当前版本:UnixWare 7.3

  硬件平台:Intel PC工作站和服务器

  遵循标准:Unix 95

  优势:SCO是Unix System V源代码的所有者;UnixWare是最强大的,也是最完善的PC Unix;它有优秀的、价格合理的开发工具。
  劣势:近来开发停滞不前;销售上也受到了Linux和Solaris的强烈冲击;很多功能强大的应用程序,它都不支持。
  前景展望:因为持有Unix System V的源代码,所以UnixWare 7.1是我们所能看到的Unix中最正宗的Unix,并且SCO环境里有一些很不错的工具和服务。然而,这并没有使SCO的情况有所好转。PC Unix的市场空间一直以来都非常的狭小。如今,Linux正在被公众所认可,而Sun又将其Solaris的源代码开放,显而易见,SCO将从原有的市场中被排挤出来。
  除非能够开发出一种强大的基于Web的应用服务器,否则这位PC Unix的先驱将有可能消亡。

  Sun Microsystems Solaris
  目前状况:好

  当前版本:Solaris 10

  硬件平台:Sun Sparc、Intel PC工作站和服务器

  遵循标准:Unix 98

  优势:其光辉的市场业绩使Solaris成为了事实上的Unix;Sparc和Intel版是同一个操作系统;对于基于Unix的商业应用系统,Solaris可以提供最广泛的支持。
  劣势:Sparc处理器的可伸缩性不如其竞争对手;具良好伸缩性的Sun系统以昂贵而著称;Solaris本身所带标准软件贫乏,而其可选软件包又非常昂贵。
  前景展望:牢固的市场和及时的开发,使得Sun身处第一的位置,这个位置Sun一直在小心翼翼地保护着。很简单,Solaris取得了领先的位置是因为Sun保证了所有的应用系统都可以在其上运行。 去年的OpenSolaris计划,也使Sun从开源社区中获得了大量的软件支持,以弥补其自身的不足。
  Sun的顾客从它的训练有素的员工处获益。它有优秀的业务咨询员。Sun对Solaris错误的修正也非常的快。此外,Sun是Java的所有者。

,

No Comments

FreeBSD6.1 Released

最新版本的FreeBSD6.1现在已经推出,没什么好介绍的了,本站现已提供本地下载,需要的朋友赶快了!

1 Comment

关于Ports的“牢骚”

公司里的文件服务器操作系统为FreeBSD,安装Samba3作为文件服务。为了便于共享打印,又特别安装了HPIJS的驱动程序,驱动一台HP LaserJet1010。

按道理来讲,比较简单的系统了,没有什么难度。可前一段时间老是随机性打印出现乱码。本以为就是客户端出了问题,可近一周,几乎所有的机器全都轮了个遍。问题肯定出现在服务器上了。

事先说明的是,这台机器,我为了维护起来偷懒,特别每个礼拜天自动CVSUP,并portupgrade,反查过去的更新日志,发现第一次出现打印错误的前一天正好升级过Samba,于是到Samba的论坛上询问,正巧碰到有不少人发现类似的问题,于是提交了一份错误报告给Samba,几天后,Samba回复大意:“没有在打印模块作实质上的改动”,言外之意,不是他们的问题。弄得我很是尴尬。

回到起点,继续反查。那天同时升级的还有perl,Perl是samba的一个依赖包,同时也是HPIJS的一个依赖包。一番测试总算发现:新版本的perl跟HPIJS的兼容性有点问题,这就是该Bug的来源!

ports的优势就是在于它能够自动解决依赖包问题——几乎大多数*nix系统都很难摆脱的阴影。可现在的状况到有点类似于当初win下的“dll陷阱了”,可能是HPIJS这个包太长时间没有人维护的缘故(几乎现在大多数linux的发行版都选用了HPLIP),对于新版本的perl没有彻底测试。过度依赖于旧的软件包的确叫人头痛不已。

2 Comments

恶搞的df命令

用portupgrad更新FreeBSD的软件包无法更新,报错:“/usr: write failed, filesystem is full"。(/usr分区已满),用df -h查看得到结果:#

# df -h Filesystem     Size    Used   Avail Capacity  Mounted on /dev/ad0s1a    496M     59M    397M    13%    / devfs          1.0K    1.0K      0B   100%    /dev /dev/ad0s1f     66G     28G     33G    46%    /data /dev/ad0s1e    496M    406K    456M     0%    /tmp /dev/ad0s1g    3.4G    3.3G   -174M   105%    /usr /dev/ad0s1d    1.2G     76M    1.0G     7%    /var 

何以谓之"-174M"?

2 Comments

FreeBSD下使用HP LaserJet

按:这个方法是原先我在FB下架设Samba服务器,为实现与windows用户共享打印时,参考了HP英文官方站点(中文站点没有提供相应的解决方案,很是气人)总结出来的。

安装驱动程序HPILJS

#cd /usr/ports/print/hpijs
# make install clean

比较漫长的等待

设置远程控制cupsd

cupsd是一个*nix下管理打印机的小工具,如果起初没有安装的话,利用比较懒汉化的ports到这一步应该已经自动添加了cupsd包,你可以采用pkg_info |  grep cups命令确认一下。
cupsd提供也一个web界面的管理工具,但默认只允许用户从本地登录,如不得不从远程登录(比如只安装了控制台界面),需要修改一下 /usr/local/etc/cupsd.conf :
添加BrowseAddress *
并将类似于(2处):
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
改为:
Order Deny,Allow
Allow From All

重启服务
#killall cupsd
#cupsd

cupsd设置本地打印
用浏览器访问631端口 http://服务器地址:631/
浏览器会提示你输入口令和密码,用户名为root,密码是你的root密码。


单击“printers"

单击"add printers"

  1. Name 打印机名称,可以随便写,但不允许有空格.
  2. location : 端口,新的打印机都是USB口的了吧?
  3. Description随便随便,不写都成.
  4. Continue.

在上图所示的地方填入hp:/usb/你的打印机型号?serial=打印机序列号,打印机序列号贴在机器背面,如果没有请参见说明书。

厂商:本文介绍的就是HP喽。
题外话:看到一篇报道,有超过70%的打印机不提供linux的驱动程序,而相对于其他打印机厂商,HP对于linux的支持还是非常不错的。如果你需要买一款linux支持的比较好的打印机,推荐购买HP的laser jet系列(广告之嫌)。

选择型号,不用多说,不过好像没有一个型号拥有中文的驱动,很是郁闷。
Continue 添加结束,来张测试?

添加网络打印机

其实上面添加打印机的过程中你已经可以看到location下拉中有网络的选项了。选择后:

选择"AppScoket/HP JetDirect"


URI地址写成: hp:/net/打印机型号?ip=打印服务器IP"


照旧

还是照旧

, , ,

1 Comment

合理使用FreeBSD降低你的服务器成本

BSD 和 SYSV 是世上最正统的 UNIX 操作系统,在 LINUX 出现之前,他们统治了整个 UNIX 世界。也正因为此,这两个最正统的 UNIX 核心流派都在实践中积累丰富的经验。
SYSV 偏向于商业,BSD 更偏向于自由和实用。
现在,本文只讨论 BSD 流派最活跃的发行版 FreeBSD。FreeBSD 作为最重要的一个 BSD 发行版,它保持了 BSD 自由和实用的原则。但亦因为此而忽略很多商业的考虑的相应的功能。凭藉我自己多年 UNIX 的使用经验,列出一些 BSD 的优势与不足,希望以此作为读者的参考。
 
不足之处:

文件系统:
FreeBSD 的文件系统属于中上水平,但未达至企业级的应用需求。主要体现于文件系统本身存在的脆弱性。在高负载的情况下,文件系统存在有崩溃的可能性。需要注意的 是,导致这样的结果,也有可能由于磁盘控制器(SCSI, RAID 等等)驱动程序本身导致的。没有原厂设备驱动程序是个比较大的问题。

网络:
FreeBSD 的网络性能是无用置疑的!但是网卡驱动(是的,设备驱动是个很重要的因素)不完善会导致性能和稳定性大打节扣。虽然这与 FreeBSD 的核心没有关系,但对于一个可提供服务的整体来说,驱动程序却是一个很重要的组成部份。
另外,由于一个网卡接口上的线的松动,有可能导致网络中断。而一些商业化的 UNIX 操作系统可以在当主网卡不可用时将该网卡上的 IP 转移至可提供正确连接的网卡上。

多处理器(超线程)支持:
在 6.0 出版之前,FreeBSD 对多处理器支持是不尽人意的。INTEL CPU 提供有 HT(超线程)功能。FreeBSD 在 HT 开启的状态下会比在关闭的状态下差。我忘记了超线程的原理,只记得拥有超线程功能的 CPU 在过多的切换情况下性能就会降低,不过在什么时候切换和切换些什么我忘记了。FreeBSD 在开启 HT 后性能会变差,可能与这个有关。

出众之处:

网络:
FreeBSD 的网络性能非常好,可以同时处理海量的网络请求,这使 BSD 非常适合作为防火墙的环境。另外,在网络聊天服务器,如 IM 这种应用上,FreeBSD 也是很合适的选择。网易的 POPO 聊天软件服务器端就是在 FreeBSD 下开发并投入到实际环境中使用的,通过对内核的修改,可以轻松支持数以万计的用户连接,要注意,是永久性的连接,除非用户点击注销按钮。

内存:
你会发现你服务器上的内存会被 FreeBSD 很好地利用,以使你的服务达至最佳的状态。FreeBSD 不会因为将过多的内存用于磁盘 CACHE 而使更重要的程序获取不到物理内存而让系统使用 SWAP。在实际的环境中,我就遇到过 LINUX 为保持磁盘的 CACHE,而让新任务使用 SWAP,导致新任务执行时间大大拉长。在执行 swapoff -a 操作后,运行同样的新任务只需要原来时间的一半。而系统并没有因为关闭 SWAP 而停机,表示物理内存并没有因为新任务而被耗尽。

一个例子:
Memcached 是一个非常出众的基于内存的缓存服务器。它可以为被其支持的程序语言提供串行化数据保存的功能,这样可以让同一份数据被多台服务器共享,而更重要的是,它的速度非常快。 我可以利用 PHP 或 JAVA 从数据库中获取数据结果集,然后将结果集的内容保存进 Memcached,其他服务器上的程序同样可以相应的 key 从 Memcached 中获得相同的拷贝。在分布式的环境,这种需求非常明显。我自己也尝试当 SESSION 数据保存至 Memcached 而无需为共享 SESSION 数据而专门架设一台 MYSQL 数据库。
在利用 Memcached 作为数据的中心点,网络的流量会非常大,内存的使用会非常频繁,基本上不与磁盘打交道,而且整个系统的稳健性要求非常高。在这种应用需求下, FreeBSD 自然地成为首选。因为它为高效的网络性能,更合理的内存利用率,和稳健的系统基础。

展望:

由于 JAVA 在 FreeBSD 上并不是太优秀,因此我正在考虑和尝试在 FreeBSD 的系统上布署基于 python 的应用。

大致是:FreeBSD + Python + Memcached + PostgreSQL

,

No Comments