OpenBSD和它构建动态网站的黄金组合
原创:五步追魂(雁南飞)
在FreeBSD日臻完美并在性能上空前激进的时候,她的同门姐妹OpenBSD正身披银甲悄然崛起,为其安全高效而心慕之余,她的简约之美则是一朵洁白的雪莲,静静地绽放到我午夜的梦中。如果说完美的编程平台让OpenBSD及其家族迅速风靡全球各科研院校,那么出色的密码学和防火墙应用,会让人们对她再难割舍。今天我们通过安装apache,mysql和php这被誉为黄金组合的建站三剑客,来近距离感受OpenBSD的迷人魅力
我们开始,首先是安装OpenBSD4.2,这是最新发行版本了,没什么要说的,CDROM优先启动,逐步根据屏幕提示,分割磁盘区块后,进入安装组件的选择,这里有一点提醒:尽管不准备运行X11,也要安装xbase42.tgz,许多第三方软件需要这里的图形库的支持。最后定义所处的时区,重新启动。
root登录后,配置网卡类型,毕竟这是个对网络很依赖的系统:
ifconfig -a
例如intel网卡,将会返回芯片值fxp0,于是:
cd /etc
touch hostname.fxp0
echo inet 192.168.1.254 255.255.255.0 NONE > hostname.fxp0
#指定本机IP地址
touch mygate
echo 192.168.1.1 > mygate
#建立网关文件
touch resolv.conf
vi resolv.conf
search 9966.org
#搜索域
nameserver 61.177.7.1
nameserver 221.228.255.1
#指定缓冲式DNS服务器,具体要参照当地线路运营商
lookup file bind #解析次序
够雅致吧,简单而独立的三个文件,即勾勒出本机的地址位置。
vi myname
mxj.9966.org
#设主机名,就我的名字首拼缩写吧
其他相关设置
vi /etc/hosts
#加入
192.168.1.254
mxj.9966.org
#IP和机器名对应
vi /etc/rc.conf
#修改成
sendmail_falgs=NO
#关闭相关邮件服务,做这些会节约解析时间,释放资源加速OpenBSD的启动动性
passwd root
#设root密码
chmod g-w,o-r /var/log/*
#禁止一般用户查看系统日志
vi /etc/sysctl.conf
echo kern.maxfiles=65535 #这两行管道传递参数,优化核心堆栈
kern.maxfilesperproc=32768
修改/root/.profile文件,个性化用户环境变量,添加:
export PS1='[\u@\h\w]\$'
#导出提示符变量
export PKG_PATH=ftp://ftp.freebsdchina.org/pub/OpenBSD/4.2/packages/i386/
#导出packages安装路径的变量,这很重要。本文涉及软件全部遵守OpenBSD官方推荐的packages二进制包安装方式,确实做到高效原汁,尽管我有时很喜欢ports定制。
重启刷新系统,同步系统时间:
ndate -n time.cn99.com
#中国国家中心级时间服务器
安装我喜欢的shell
pkg_add -r bash-3.2.17.tgz
cp /usr/local/bin/bash /bin/bash
echo /bin/bash >> /etc/shells
chsh -s /bin/bash
安装cvsup 接下来升级系统要用,amd64架构的机器不被cvsup支持,且在磁盘IO方面据说存在瑕疵,慎用。
pkg_add -v cvsup-16.1h-no_x11.tgz
安装nmap,之于系统,这不是必要的,可我喜欢它,毕竟是扫描之王。好多时间我用得着,嘻嘻
pkg_add namp-4.20-n11.tgz
安装wget,准备用它取代默认系统里的fetch,达到加速的目的
pkg_add -r wget-1.10.2p0.tgz
touch /etc/mk.conf #建立mk.conf文件
vi /etc/mk.conf
加入:
FETCH_CMD=/usr/local/bin/wget
升级原码,ports树和核心文件:
cd /root #进入用户主目录,从远程下载相关文件到此处,因为这些默认是不会被OpenBSD安装的
wget ftp://ftp.freebsdchina.org/pub/OpenBSD/4.2/src.tar.gz
#原码文件
wget ftp://ftp.freebsdchina.org/pub/OpenBSD/4.2/sys.tar.gz
#编译核心文件
wget ftp://ftp.freebsdchina.org/pub/OpenBSD/4.2/port.tar.gz
#ports树
释放它们到系统中:
tar xzvf src.tar.gz -C /usr/src/
tar xzvf sysar.gz -C /usr/src/
tar xzvf ports.tar.gz -C /usr/
定义升级策略文件
touch cvsup-supfile
vi cvsup-supfile #编辑这个文件,注入以下内容:
*default release=cvs
*default delete use-rel-suffix
*default umask=002
*default host=anoncvs.tw.openbsd.org
#当前大陆地区还没有提供openbsd的升级节点,就用台湾的吧
*default base=/usr
*default prefix=/usr
*default tag=OPENBSD_4_2
*default compress
OpenBSD-ports
OpenBSD-src
OpenBSD-www
执行:cvsup -g -L 2 cvsup-supfile&&cvs -d /usr checkout src 升级系统
等吧,机器会自动下载更新文件,用时会因机器配置和网络环境而不同,甚至会很漫长,借空聊点生活花絮。又是三月了,家乡的田野里也该又是草长莺飞了吧,昨夜的梦里我怎么也捡不起童年的足迹。阳光明媚地从窗外照进来,掠过我零乱的床,我听到自己的肠鸣声。
... ...
好了,系统成功返回提示符,更新完成。对于内核,如果不是特殊需要或是兼容问题,本人不建议改变,默认的通用内核已经很精炼了,而且是绝对的pnp。此处为了篇幅完整,姑且简述编译过程:
cd /usr/src/sys/arch/i386/conf
#进入核心文件编译位置
cp GENERIC xiaojun
#复制通用内核并重新命名
vi xiaojun #编译新的内核文件,通常都是删除当前无用的设备簇
config xiaojun #测试并产生临时工作域
cd ../compile/xiaojun #进入临时工作域
make depend && make #编译,这里需要耽误一些时间。
cp /bsd /bsd-old
#备份现役内核,当然是有备无患,以防万一
cp bsd /bsd
#安装新核心
reboot
#重新启动系统,准备工作结束。
金屋既成,自当邀约娇颜了
A;首先是apache,因为影响深远,系统已经预先默认安装了,我们只需要在启动服务里,把它解禁出来:
vi /etc/rc.conf
修改
httpd_falgs="-u"
#默认httpd服务被系统采用了安全性极高的chroot机制,参数“-u”的应用,将在系统启动时
打开httpd服务并摆脱chroot的束缚。
B;安装mysql数据库,这是一个以查询速度见长的精灵
pkg_add -v mysql-server-5.0.45.tgz
#安装时,系统会自动安装必要的关联文件
/usr/local/bin/mysql_install_db
#初始化数据库!一些教不负责的、甚至是传抄来的教程大多缺少这个关键动
作,真不知道他们接下来是怎么起动数据库的。
/usr/local/bin/mysqld_safe &
#启动数据库
/usr/local/bin/mysqladmin -u root password '13773933407'
#修改数据库root密码
注入启动脚本
vi /etc/rc.local
加入:
if [ -x /usr/local/bin/mysqld_safe ]; then
echo -n ' mysql'
/usr/local/bin/mysqld_safe &
fi
这样,系统每次启动加载rc.local进程链时,会自动打开mysql服务.mysql运行端口3306.早先时候,如在win机上运行,配合黑软瑞士军刀,反向注入,可以被远程获取系统最高权限。
vi /etc/my.cnf
加入
bind-address = 127.0.0.1 #只允许本机连接数据库
C;安装php5
pkg_add php5-core-5.2.3.tgz
/usr/local/sbin/phpxs -s
#激活
cp /usr/local/share/examples/php5/php.ini-recommended /var/www/conf/php.ini
#复制php设置文件
vi /var/www/conf/php.ini
#修改文件
修改下述两行:
doc_root = "/htdocs"
register_globals = On
注意:如果apachp是以chroot方式运行的,这里还要建立/var/www/tmp目录,并chmod 1777 /var/www/tmp,以支持
php运转需要
pkg_add php5-extensions-5.2.3.tgz
#安装php括展和常用组件
pkg_add php5-gd-5.2.3-no_x11.tgz
#GD库支持
/usr/local/sbin/phpxs -a gd
pkg_add php5-mysql-5.2.3.tgz
#mysql支持
/usr/local/sbin/phpxs -a mysql
修改apache环境文件,vi /var/www/conf/httpd.conf 令其支持php,修改或添加:
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
测试:
rm -rf /var/www/htdocs/* #扫荡默认主页内容,我不喜欢那些
touch /var/www/htdocs/maxiaojun.php
#建立php测试文件
echo <?php phpinfo(); ?> > /var/www/htdocs/maxiaojun.php
apachectl start #启动阿帕奇
http://ip/maxiaojun.php
应该会看到php信息页面的,一定会看到的,因为细心的人总会获得成功。
至此,安装结束。当然这只是个基本站点框架,也是各种动态web应用的基础,限于篇幅,象支持jsp的tomcat,虚拟主机等,均不能尽述。apache设置点很多,以后如有机会,再另撰成文吧。
写在后面:事实上,比起泛滥的windows系统,OpenBSD仍是一个晦涩难懂的作业平台,国内普及率极低,然只要我们潜心并投入热情来接近她,就会有机会拥有和享受这片纯净的世界。我是学中文的,接触计算机亦较早些,熟识Linux;BSD;和shell语言,需要我加盟或技术援助的请联系我 QQ:75905279 TEL:13773933407 谨以此文献给曾关心过我的江苏籍网络工作者和远在宿迁地区的恋人,我爱你。
请尊重原创,如须转载,烦注明出处
2008.03.28
于魏营