作为一个系统管理员不论你使用的是那个系统,每一款操作系统都有一定的使用技巧。在之前的一篇文章中抚琴煮酒向大家介绍了在CentOS下系统管理员需要注意的常识。在这里,酒哥再次和大家分享在FreeBSD环境下系统管理员需要掌握的技巧。
推荐专题:企业内网开发环境部署与管理全攻略(FreeBSD+PHP)
一、FreeBSD直接可以用命令彪悍的生级的,比如将FreeBSD8.0升级成FreeBSD8.1。
直接在FreeBSD的命令行模式下,输入以下命令
sudo freebsd-update -r 8.1-RELEASE upgrade
中间按提示输入就行了
Does this look reasonable (y/n)? 全 y
大部分都不需要修改,只是文件的版本时间改变
会有一些需要合并的文件,程序会自动用 vi 打开,解决一下就行了
结束后
sudo freebsd-update install
会有如下提示
Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates
然后
sudo shutdown -r now
重新启动后
sudo freebsd-update install
uname -a 查看,已经OK了
FreeBSD www.wsck.com 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
※值得注意的是,线上的生产服务器全部用的是FreeBSD8_release AMD64版本,生级过程可能不一样;建议先用虚拟机或拿一些不是特别重要的线上服务器尝试,不建议直接生级,谨慎操作.
二、FreeBSD的vim确实跟Linux下vim有区别。
很多同学都向报怨说FreeBSD下的 vim不好用,特别跟RHEL比起来,这是不争的事实,其实稍为配置下vim用起来一点也不比Linux差;我的FreeBSD机器,无论是VM学习机, 还是开发机器或线上的系统,均不采用root直接操作,都是用采取用户操作的方式,其vim配置文件如下vim ~/.vimrc
set nobackup set number set cindent set autoindent set shiftwidth=2 set tabstop=2 set softtabstop=2 set expandtab set ruler syntax on
常用设定
下面说说一些常用的设定及其具体含义
set nobackup 不要备份文件,使用backup备份文件(原文件加后缀~)
set number 显示行号
set cindent 设定c风格缩进,使用nocindent取消设置
set autoindent 设定自动缩进,每行缩进与上一行相等,使用noautoindet取消设置
set shiftwidth=2 设定缩进为两个空格
set tabstop=2 设定制表符为两个空格
set softtabstop=2 设定软制表符为两个空格
set expandtab 缩进和(软)制表符使用空格替代,用noexpandtab取消设置
set ruler 显示光标所在行列号
syntax on 启动语法高亮
其中涉及到的名词术语相关解释
cindent
使用C语言的缩进方式,根据特殊字符如“{”、“}”、“:”和语句是否结束等信息自动调整缩进;在编辑 C/C++ 等类型文件时会自动设定;
softtabstop
软制表符宽度,设置为非零数值后使用Tab键和 Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和 expandtab控制;这样配置vim比以前好用多了。#p#
三、FreeBSD下配置网络环境,感觉比Centos简单些。
使用sysinstall进行网络配置的优点是所有的网络数据将在同一个界面下进行设置,不容易发生错误和遗漏现象。但熟练的unix用户在平时维护系统的时候更喜欢使用手工配置,因为手工配置有很多优点:
熟悉命令之后,手工配置更快;
能够使用配置命令的高级特性;
更容易维护配置文件,找出系统故障;
能更深刻的了解系统配置是如何进行的。
仅仅使用sysinstall进行设置,不可能对系统设置有深刻的了解,因而一旦发生问 题,就容易束手无策。 对于管理员来讲,不能被动的仅仅停留在能够使用和操作的阶段,而是要了解系统是如何进行工作的,才能更好的进行系统维 护和管理。因而需要使用命令行方式。一旦熟悉之后,就会发现命令行才能提供全部灵活的操作能力,而全屏幕方式限制很多 ,过于呆板。另外,为了让配置永久生效,我推荐跟centos5.4一样配置,采用文件配置方式,过程如下(这里以FreeBSD8.0为例),感觉比 linux 简单,特别对比centos5.4下的网卡配置/etc/sysconfig/network-scripts/ifcfg-eth0而言,目录足足花了 我三天时间记忆:)
#vi /etc/rc.conf hostname="mail.bolaninfo.com" ifconfig_le0="inet 192.168.1.108 netmask 255.255.255.0" defaultrouter="192.168.1.1"
域名解析DNS配置如下
#vi /etc/resolv.conf nameserver 210.5.4.116 nameserver 210.51.176.71
为了让以上过程永久生效,reboot重启服务器后用ifconfig可验证ip地址,netstat -r可验证网关是否生效,nslookup及dig可验证DNS配置是否正确等。
另外这里稍为解释下名字解析hosts,它的执行顺序是优于DNS,现阶段多用于集群环境,如heartbeat、MySQL cluster等,配置过程如下
#vi /etc/hosts 192.168.1.100 HA1 192.168.1.101 HA2 192.168.1.188 vip.balaninfo.com
远程连接管理我工作中用的是Xmanager3的xshell,但FreeBSD8.0默认root是不能在非本地登陆的,这里需要改动下/etc/ssh/sshd_config文件。
※值得注意的是
A、系统需要改动的是/etc/ssh/sshd_config文件,而非/etc/ssh/ssh_config文件,这个问题让我郁闷了很长时间,这里煮酒为自己的大意要作自我批评了;
B、在sshd_config最后添加三项内容:
PermitRootLogin yes #允许root登录 PermitEmptyPasswords no #不允许空密码登录 PasswordAuthentication yes #设置是否使用口令验证
划红线的内容为必填项,然后重启sshd服务即可,/etc/rc.d/sshd restart。
四、强烈建议FreeBSD下采取sudo操作,可能有些玩Linux的同学不习惯;但你用久了就会发现,好处是利大于弊的。
虽然FreeBSD下可以配置成允许root远程ssh,但强烈建议不要这么做;建议还是分配一个有wheel权限的普通用户进行操作的好,如果有特殊需求就必须要sudo,这样不仅安全,而且遇到毁灭性打击时,起码可以起到一点预警的作用,所以我在FreeBSD下强烈推荐sudo操作。
sudo是一款开源安全工具,它能允许管理员给予某些用户或组以作为root用户或其他用户从而运行特定命令的权利。这个软件还 能记录下特定系统用户的命令和参数。sudo的开发者声明这个软件的基本出发点就是“让人们以尽可能少的权限完成他们的工作。Sudo在1986年夏天首 次发行,Todd Miller先生现在负责这个程序并在BSD方式的许可证下发行它。Sudo主页:http://www.sudo.ws/sudo/ 。Sudo程序是一款在命令行方式下工作的安全工具,并且我们每次只执行一条命令。它支持的功能如表(Sudo几乎支持所有的UNIX类操作系统版本)
#p#
五、很多喜欢用adduser在FreeBSD里增加新用户,其实FreeBSD里可以用PW是来创建、删除、修改、显示用户和组的命令行工具。它还有系统用户和组文件编辑器的功能;其具体用法如下:
1、用户管理
1)用户添加
pw [-V etcdir] useradd [name|uid] [-C config] [-q] [-n name] [-u uid] [-c comment] [-d dir] [-e date] [-p date] [-g group] [-G grouplist] [-m] [-k dir] [-w method] [-s shell] [-o] [-L class] [-h fd | -H fd] [-N] [-P] [-Y] [-V etcdir]
默认当新增组和用户时使用/etc/pw.conf作为pw配置文件,也可以指到别的文件上。pw.conf这个文件可以不存在。当使用这个参数时,需要使
用-C config [-C config] [-q] 在交互式环境中,这个选项使pw支持输出错误信息 [-N] 在添加和更改操作时输出结果,而不真正改变组和用户信息。 [-Y] 自动更新yp数据库。 [-n name] 指定用户名 [-u uid]指定用户id(ps:好像没什么用) [-c comment]用户全称等注释信息(ps:没什么用) [-d dir] 指定用户家目录 [-e date]帐号到期时间,时间格式可以是绝对的日-月-年,2为数字年或4位数字年,月可以是数字或英文月份的简写('Jan', 'Feb', etc)
也可以是相对时间,+n[分时天周月年],n可以是十进制、八进制[0开头]或十六进制[0x开头]。
- [-p date]密码到期时间,时间格式同上。
- [-g group]指定组(组名或组id)。
- [-G grouplist]指定组列表,组以空格分开,如:-G wheel mysql teczm即把某账号置于这三个组内。
- [-L class]在用户创建时指定登录等级。
- [-m] 自动创建用户家目录
- [-s shell]指定用户shell
[-w method]method包括:
- no 新创建的账号禁止登录
- yes 强制新建账号密码和账号一样(ps:这样不安全)
- none 强制新建账号使用空密码(ps:这样不安全)
- random 生成一个随机密码
pw useradd username -g tests -d /home/test -s /bin/sh -h 0
增加参数 -h 0 可以出来password for user username:这样的提示来让你设定username的密码
2)组操作时常用选项
[-M memberlist] 将用户置于组内,会替换掉已经存在的用户
[-m newmembers] 添加新用户到组内,不会替换掉已经存在的用户
示例:
1.新建一个用户bsder使用cshell,家目录为[color]/home/bsder[/color],属于组[color]wheel[/color],口令交互输入
#pw useradd bsder -s /bin/csh -d /home/bsder -m -g wheel -h 0 或#pw user add bsder -s /bin/csh -d /home/bsder -m g wheel -h 0
注: -h 0 可以出来password for user username:这样的提示来让你设定username的密码
2.将bsder使用的shell改为/bin/sh
#pw usermod bsder -s /bin/sh
3.将bsder置于test组内
#pw groupmod test -m bsder
4.锁定bsder用户帐号
#pw lock bsder
5.对bsder账号解锁
#pw unlock bsder
6.显示bsder用户属性
#pw usershow bsder
7、删除bsder用户
#pw userdel bsder 或#ps user del bsder
六、安装axel优化其ports速度,不要用默认的Fetch工具了。
FreeBSD中的ports安装工具默认工具是用fetch,下载时经常出现龟速现象;为了提高ports安装速度,我推荐axel工具,当然具体还得配置下make.conf文件。
cd /usr/ports/ftp/axel make install
#修改/et/make.conf
vi /etc/make.conf
#加入以下内容
FETCH_CMD=axel FETCH_BEFORE_ARGS= -n 10 -a FETCH_AFTER_ARGS= DISABLE_SIZE=yes MASTER_SITE_OVERRIDE?=\ http://ports.hshh.org/${DIST_SUBDIR}/\ http://ports.cn.freebsd.org/${DIST_SUBDIR}/\ ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}
#以上路径是为了用速度比较快的网站代替程序默认的下载源,达到加速的目的;我在家里没配置前大约是20kb/s左右,配置之后是230kb/s,所以强烈推荐。#p#
七、大家都会用ports及pkg_add在FreeBSD安装软件,但它们的高级用法呢?特收录整理,以备不时之需。
①ports的目录在/usr/ports。
②POSTS安装软件有时可能这个包已经安装过了,会有提示,无法继续安装,能够用提示中的参数
#make install clean FORCE_PKG_REGISTER=yes
这样就能够继续安装了,yes不区分大小写。
③PORTS安装软件时有时能够下载回来的包的md5值不匹配,能够加参数强制安装。
#make install clean NO_CHECKSUM=yes
④如何查找安装一个ports软件
假如知道文件的详细名字,能够直接用whereis
#whereis php5
假如不知道细致文件名,能够用:
#cd /usr/ports #make search name=php
假如只知晓描述性主要字,能够用:
#cd /usr/ports/ #make search key=php
⑤如何查找已完装软件包的信息
#pkg_info
用管道命令过滤定位
#pkg_info grep php
⑥如何删除一个软件包
#pkg_delete 软件包细致名,细致名称能够用pkg_info grep 管道命令查出。
加上-f 参数,能够删除一人别的软件对其有依靠联系的软件包
#pkg_delete -f 软件包细致名
⑦PORTS安装软件后,如何修改配置
有些POST包安装时会有蓝色配置挑选页,通常选过一次后就不会再显示了
#make rmconfig 删除配置,须要有root权限
#make reconfig 重新配置,须要有root权限
⑧重新安装已安装ports软件包
#make reinstall
⑨删险已安装ports软件包
#make deinstall #make clean
⑩如果系统默认的下载地址失效了,你可尝试手动下载tbz软件包,然后用pkg_add 软件包名直接安装。
八、FreeBSD的远程连接
感觉pietty比起xshell来,更轻松和方便,远程ssh的FreeBSD机器也很容易,推荐大家尝试使用;记得在某篇文章里看过,这个工具好像也是中国雅虎内部员工推荐使用的,因为FreeBSD基本都是隶属于wheel的用户(推荐sudo)来使用,因为不需要记密码,所以pietty使用起来更实用。
九、FreeBSD下的虚拟机
感觉现在大家较喜欢用Vmwareg下的Exi和Xen来作虚拟机,其实FreeBSD自身就带了jail虚拟机;由于内网开发非常稳定,我们勇敢的将其也用于了生产环境,效果也不是太差,呵呵。
十、FreeBSD下的MySQL
FreeBSD下用MySQL效率确实 比在Centos下差,这个是不争的事实,有兴趣的朋友可对比二个平台环境下进行测试;我的MySQL生产服务器是清一色的64bit的Centos,如果你需要跑Oracle等大型应用的话,而且Oracle在Linux下是支持的比较好的, 那么使用Linux是个好的选择,因为在FreeBSD下安装Oracle是个非常麻烦的事情。
【编辑推荐】