Posts Tagged FreeBSD
LAMP的常用扩展安装
之前已经弄过许多篇关于LAMP搭建的东西,都是基于最简单包的,这次说说几个比较常用扩展的安装:
- FreeBSD + Apache + PHP + Mysql (恶搞版)
- FreeBSD + Apache + PHP + Mysql + Oracle
- Ubuntu + Apache + PHP + Mysql ,比较简单,正常server版安装结束的最后一步可以选择安装LAMP
- Ubuntu + nginx + php
- Ubuntu + php + Oracle
FreeBSD ZFS版本升级的问题
FreeBSD 8.1比较吸引我的一个重要更新就是将ZFS从测试模块升级到了正式模块。这意味着Zfs已经足够的成熟和稳定了。
闲话不说,我这台主机是用zfs来做nfs服务器。刚升级到了FreeBSD 8.1 stable的版本。
通过motd信息简化巡检操作
作为一个Unix系统的管理员,手工巡检几乎成了工作中一个重要的部分。这里不放使用Linux的motd通告信息实现简单的信息通告,至少能省去了不少手工命令的时间。
motd即Message Of ToDay,每天的信息。大部分的固定文本信息放置在/etc/motd下,如果没有你可以直接创建一个,然后修改其中的内容制作一个主机登录Banner以便于区分多台主机。对于Ubuntu来说,特别是启用了server中“landscope管理系统”后,这里没有效果,你需要修改的文件为/etc/motd.tail。
一个怪异的Cron问题
一个朋友向我咨询他遇到的一个问题。
Centos的操作系统,自然是主流应用的WWW。近期无缘无故的Cron失效,所有的任务都无法执行。多次重启主机,重启Cron服务均是如此。
起先我由于没有拿到控制台,怀疑是Cron经典的环境变量问题,修改了半天也是白忙。总算此兄开恩,将root的权限给了我。:)
用ssh tunnel打造安全邮件系统
近期,甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式,通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。
故名思义,tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全,另一方面,由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。
先决条件:
- Unix like的邮件系统,并安装了ssh-server,本例中假定邮件服务器ip为1.2.3.4
- 企业路由器和内网:路由最好有vpn和防火墙功能。
- 内网的 一台主机,配置不必太高(我用了虚拟机,64M内存已经足够近百人使用),安装有ssh-client,如果是win主机,推荐使用putty的安装版本。经过测试,个人觉得FreeBSD下的性能较好。考虑到安全,这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。
- 注意整个系统的安全策略,账户策略等,相比中间人攻击这样的“高级”黑客行为,破解密码,利用漏洞永远是成本最低的方法。
FreeBSD+apache+PHP+OCI支持Oracle
由于FreeBSD的Port中自带了oracle-client可用,但仅支持i386的平台,故此文仅针对于i386,AMD64无法实现oci的连接库。
首先,确定你已经安装好apache + php,没有安装的可以参考这里或者文学化的这里
安装php5-oci8
cd /usr/ports/database/php5-oci8
make install clean
安装到这里,Php的OCI8库已经安装成功,但需要对oracle-client进行设置,否则无法使用。
将tnsnames.ora拷贝到/usr/local/oracle8-client/network/admin/ 目录下
内容大致如下: Read the rest of this entry »
踩到雷
公司的邮件服务器升级了一下perl,从5.8.8到5.8.9。只为更好的支持更新版本的webmail程序。按理说作为FreeBSD系统,升级下perl不是什么困难的事情,可真正的问题才刚刚开始。
首先是要伴随perl升级一系列的模块,这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下,发觉负载已经高达60%以上,而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl,很明显的需要restart一下。这时候问题来了。
restart之后,邮件不能正常接收,检查原因,发觉邮件在MailScanner中不停的check。赶紧检查日志,很明显的报错:
MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be “require”d. Make sure the last line of the file says “1
调用万能的google,关键字perl5.8.9 MailScanner,发觉通篇都是与我一样的报错,最新的记录似乎也没多远。貌似是我幸运的踩到了雷。
临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。
FreeBSD的ZFS
ZFS是sun跟随opensolaris项目一并开源的存储解决方案。具体的优势可以参考这里 。 本文不做累述。总之,使用ZFS可以将所有系统的裸存储设备都利用起来——小到磁盘,大到盘柜,都不需要考虑具体的容量分配。相对来说是低成本的存储解决方案。
Freebsd近期也引入了ZFS这一存储格式,作为存储服务器,个人觉得用Solaris远没有Freebsd成本来的低。具体操作如下:
首先,照例的更新版本库,升级内核
#cvsup -h cvsup.cn.freebsd.org /usr/share/examples/cvsup/stable-supfile //漫长的等待
#cd /usr/src
#make buildkernel ; make installkernel //更加漫长的等待
#halt
关机后为系统安装磁盘,这边由于是测试环境,采用了一个磁盘的两个分区为例。如果是生产环境,建议采用至少2块以上的硬盘作为ZFS的物理设备。
#echo "zfs_enable=YES" >> /etc/rc.conf
# /etc/rc.d/zfs start //启用ZFS服务
# echo ”daily_status_zfs_enable="YES"” >> /etc/periodic.conf //自动更新
开始设置ZFS库
#zpool zpool create zfs raidz ad7s1 ad7s2
这里要注意的是raidz参数可以用mirror、raidz1(raidz默认)、raidz2来代替,分别相当于传统上的Raid 1 Raid5和Raid6
# zpool status zfs
pool: zfs
state: ONLINE
scrub: scrub completed with 0 errors on Wed Nov 19 05:11:29 2008
config:
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad7s1 ONLINE 0 0 0
ad7s2 ONLINE 0 0 0
errors: No known data errors
恭喜,ZSF pool已经成功!
然后是创建文件系统:
# zfs create zfs/www
如果成功,系统将会出现/zfs/www目录
# mount
/dev/ad4s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad4s1g on /data (ufs, local, soft-updates)
/dev/ad4s1e on /tmp (ufs, local, soft-updates)
/dev/ad4s1f on /usr (ufs, local, soft-updates)
/dev/ad4s1d on /var (ufs, local, soft-updates)
zfs on /zfs (zfs, local)
zfs/www on /zfs/www (zfs, local)
设置文件系统参数:
#zfs set compression=gzip zfs/www //设置自动做gzip
设置NFS共享:
#zfs share zfs/www
搞定!
具体命令解释可以参考SUN的官方文档
题外话:
总觉的ZFS的思想有些超前,128位的文件系统倒可以先不谈。光是自动设置gzip这一项,可真是考验机器的设置。4核的Xeon搞个500M左右的文件竟然花费了n久,何况几年前?SUN的技术始终是这么的接近于”实现的边缘“也难怪SUN这些日子可不是那么好过。
用FreeBSD的ports安装apache+php+mysql·改
正如我一贯习惯于规律性的工作和生活一样,昨天,我按照惯例在以往的时间,用电脑里的outlook软件收信——天热,纵然室内空调的温度已经远远低于官方标准的26度,人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲,也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外,我收到了一封网友的E-mail。出乎意料的是,不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论,这次却是发了mail。既然如此,我觉得mail一定是重要的,至少体现了相当一部分访客的心情吧。
那篇E-mail不长,在我的电脑上显示下来仅仅只有三行不到的样子,大抵的内容无非是说本站如何如何的帮了忙,我不免沾沾自喜起来——正如往常的沾沾自喜一样,mail的结尾处指出了小站的几个问题,最重要的是说很多文章过于流程化了,没有一点文字上的修饰和润色,言外之意是字里行间缺乏应有的优雅和细致。要指明的是,所谓优雅和细致,正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表,我想村上春树的小说(或者说林少华翻译的日本小说)、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我,从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架,也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致,字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试,既然有这样的需求,按照目前常说的一句话似乎叫做“需求第一”吧,我决定润色并重写本站访问量最高的那篇文章……
使用带有Dtrace的FreeBSD
Dtrace( Dynamic tracing ),原本是Solaris 10中的新特性。它允许用户跟踪系统内核以及用户进程。是非常优秀的诊断工具。自从OpenSolaris之后,这种特性也被移植到了FreeBSD。需要说明的是,Dtrace的操作均通过内核中的prob来进行的,这需要新的内核,故Dtrace功能的内核不会出现在6.X版本中,要想体验Dtrace,目前还必须使用特殊的FreeBSD内核。
编辑特殊的cvsup :
*default host=cvsup10.freebsd.org*default base=/usr*default prefix=/usr/src*default release=cvs*default delete use-rel-suffixp4-cvs-dtrace
Dtarce For FreeBSD正处于测试阶段,故目前仅有cvsup10.freebsd.org一台主机提供同步。
CVSUP并成功编译后,重启主机。注意的是由于该代码树并非stable,并不保证内核能够通过编译。如果采用最保守的编译方式仍不能通过,建议还是等几天再同步一下看看。
正常的话会出现第6项Boot FreeBSD with DTrace enabled。
建立一个dtrace脚本 hello.d:
BEGIN { trace("Hello world !"); exit(0); }
Dtrace -s hello.d

近期评论