Linux系统管理入门必须经历的三步

Linux系统管理员如何入门?这是很多Linux新手们关心的问题。一位CentOS的开发者,在英国伦敦工作的系统管理员Karanbir Singh近日撰写了一篇博文,对Linux新人如何进入Linux sysadmin的世界进行了阐述。以下为全文译文:

SA,大神与装机男:运维的工作到底啥样儿?

我们常常会看到这样的问题:面对 Linux 系统管理这个庞大的世界,应该从哪里开始?说实话,我觉得这个问题不存在一个清晰明确的答案。Linux 认证并非最理想的选择。你可以去参加一些培训课程,比如 RHCE。但是,如果没有任何背景信息而去参加培训,你可能无法享受到培训带来的好处,因为所有课程都有一个前提假设:你已经掌握了一些基本知识。

熟悉Linux以及发行版

一个开始系统管理员学习的方法是抓起一本相关主题的书来看(编辑推荐:51CTO读书频道的Linux版块有很多相关图书的样章)。然后安装几 个 Linux 版本(参考:几个比较知名的发行版),然后在你喜欢的版本上搞一些 VM 设置(参考:Linux下三大免费桌面虚拟机评测)。从一个版本开始,然后继续使用这个版本,至少用上几个月。但是,一旦熟悉了那些基础知识,你就要转向 其他发行版本,看看其他版本是如何工作的,这一点也非常重要。无论使用哪个版本,不同之处仅仅在于一些设计和平台常见通讯。最根本的操作系统还是 Linux,这一点不会改变。

使用一个新的平台时,有一点非常重要:你必须真正地投入进去。对此,有一个简单的方法:看看你现在正在做的事情,无论使用哪个平台,试着在这台 Linux 计算机上使用相同的方式去做系统的事情。掌握了那些基础的知识和操作之后,以后你就应该将这个 Linux 版本作为常用的工作平台。从低等级管理能力方面来看,这种方式并不会让你学到太多;不过,它可以让你学会从用户的角度来思考问题。

我一直都认为,最优秀的管理员一定是从用户的角度,从开发者的角度,然后从平台(和管理员)的角度,对问题进行思考。最后我们还要记住,计算机是用来工作的,而管理员的角色就是确保计算机能够充分发挥能力来完成工作。不要迷失了方向:目标仍然是做某件工作。

熟悉相关的应用程序/服务

我最初接触 Linux 的那段时间,常常会感觉很难与其他人的应用程序建立一种关联,很难弄清楚他们如何使用他们的计算机和网络。之所以很困难,因为我没有处于他们所在的位置, 甚至连跟上最新的情况都很困难。在寻找那种亲身体验的机会时,我认识到,和一个应用程序建立关联的最好方式就是加入他们的邮件列表。这样,你就可以看到其 他人遇到的问题,你也可以提出自己的问题,比如为什么那个事情要用那种特别的方式来解决,你还可以查看其他人贴出的 bug 报告。这些信息都清楚了展示了在“真实世界”中人们是如何使用这个应用程序的,这将为提供一个很好的根基。大约 14 年之后,我仍然认为特定程序的用户小组是学习一个应用程序的最好场所,你可以了解到如何对它进行管理,最好的部署方式,还有开发者/用户如何看待这个应用 程序的角度。

编写代码

最后,编程和实际写代码的能力也是有益的。不要相信那种到处流传的说法:管理员无需写代码。和周围优秀的系统管理员聊聊(有很多这样的人),你 会发现,几乎每个人都会告诉你,他们 40-60% 时间用于编写脚本,处理应用程序,而脚本的开发知识是有帮助的。我不是说你需要搞一个 Java 认证,但是你要对 bash 的基本编程有很好理解,至少能够使用 python、perl 和 ruby 中的一门语言(必要)。需要了解 unix/c 的传统想法仍然存在,不过现在,并不是有很多系统管理员需要深入到驱动程序开发那个层次,他们需要了解的大多数函数代码可以利用 bash、ruby、perl 或 python 进行很好的处理。

较为完美的Tomcat虚拟主机设置方法

之前用过很多种不同的方法来设置虚拟主机,包括放置xml配置文件等等,其实那方法是最难用的,这里给出一个我认为比较完美的方法,

1.在server.xml中设置虚拟主机项,添加host属性在engine中,我们以www.qq.com为例,如下:
<Host name=”www.qq.com” appBase=”/usr/local/webapps/qq.com”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”>
</Host>
更多设置可自行添加,包括日志等等。

2.在这里我们看到,appbase是”/usr/local/webapps/qq.com”,但是,此目录不是程序根目录,我们在”/usr/local/webapps/qq.com”目录下建立一新目录ROOT,然后将程序放入,才能保证虚拟主机正常启用,也就是说,程序根目录是/usr/local/webapps/qq.com/ROOT。

3.在本地/etc/hosts文件中设置www.qq.com对应IP为127.0.0.1

Jboss behind a firewall

Jboss的EJB应用如果在防火墙后面,通过端口1098和1099调用,需要另外打开3873端口供socket调用,同时需要修改rmi-server地址为外部IP地址或域名。

配置文件一共需要修改四处,下面以域hnair.com内,防火墙后主机IP192.168.1.25为例,

1.首先修改jboss-service.xml,在ejb端口1098附近,修改CallByValue值为true
<attribute name=”CallByValue”>true</attribute>

2.然后修改ejb3.deployer中jboss-service.xml文件,主要是添加域名到3873的调用中
——
<mbean code=”org.jboss.remoting.transport.Connector”
name=”jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3″>
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name=”Configuration”>
<config>
<invoker transport=”socket”>
<attribute name=”numAcceptThreads”>1</attribute>
<attribute name=”maxPoolSize”>300</attribute>
<attribute name=”clientMaxPoolSize” isParam=”true”>50</attribute>
<attribute name=”timeout” isParam=”true”>60000</attribute>
<attribute name=”serverBindAddress”>${jboss.bind.address}</attribute>
<attribute name=”serverBindPort”>3873</attribute>
<!– that’s the important setting –>
<attribute name=”clientConnectAddress”>hnair.com</attribute>
<attribute name=”clientConnectPort”>3873</attribute>

<attribute name=”backlog”>200</attribute>
</invoker>
<handlers>
<handler subsystem=”AOP”>org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</config>

</attribute>
</mbean>
——

3.设置java启动选项,添加rmi-server的外部地址和禁用本地域名解析到启动脚本
Windows脚本例:set JAVA_OPTS=-Djava.rmi.server.hostname= hnair.com -Djava.rmi.server.useLocalHostname=false
Unix脚本例:添加到jboss启动配置文件run.conf中即可。

4.用run.sh –host=192.168.1.25启动服务或添加–host=192.168.1.25到启动脚本。

Tomcat集群和Oracle EMS…..

这两天一直在搞tomcat的集群,网络上很多资料都是过时的,还有很多是错误的,不过没关系,我一般不看中文资料,一是翻译不到位,二是那些SB根本不 知道怎么去翻译一些专有名词,就像洋人始终理解不到成语的意思一样,tomcat的documents里面有一个简单的clustering,先用上,因 为javagroups使用的也是多播,和tomcat自带的这个是一个原理,在网络良好的状态下,这种方式应该没什么问题,虽然是执行的会话all to all copy,tomcat也说了,下一个发行版本会推出适用于大型集群的session复制体系,5.5是beta的,我想是不是要等到6.0哦。
———————————————–
In this release of session replication, Tomcat performs an all-to-all replication of session state. This is an algorithm that is only efficient when the clusters are small. For large clusters, the next release will support a primary-secondary session replication where the session will only be stored at one or maybe two backup servers. In order to keep the network traffic down in an all-to-all environment
———————————————-
总而言之呢,昨天和今天测试的集群看起来就像下面这样,不过呢,我不确定是不是每一个程序都能在上面正常的运行,而且分别是在redhat9和freebsd上面。

Oracle还是有问题,我想可能是我使用了额外的JDK1.1.8导致了错误,虽然表面上看起来一切都是正常的……找不出来问题所在就是最大的问题,下午开会的时候33打电话来了,没接,不知道她找我干嘛呢。

一只命令行浏览器

一直在想命令行下面怎么浏览3W网页,偶然发现了lynx,安装试用了一下,不错,至少下jdk的时候可以直接在命令行下面下载了…..不过浏览中文网页之前先要把默认编码改成GB2312,不然是乱码….
—————————
Lynx is a fully-featured World Wide Web (WWW) browser for users on Unix, VMS, and other platforms running cursor-addressable, character-cell terminals or emulators. That includes vt100 terminals, other character-cell displays, and vt100 emulators such as Kermit or Procomm running on PCs or Macs.
http://lynx.isc.org
—————————

重拾FreeBSD

我早料到有这么一天,阿金要我配置unix服务环境,重拾FreeBSD,我已经落后了,小红魔它已经升级到了6.0,5.0的终结版本是5.4,java不适用BSD平台已经成为过去,freebsd甚至有一个java project:http://www.freebsd.org/java/,可是我疑惑了,用6.0还是5.4呢?
————————————
This is the official port of Sun’s Java&#8482; Development Kit for FreeBSD. No known significant bugs exist at this time, but there are no guarantees of usability. However, many commercial companies rely on this port, so it should be safe to use.
————————————

之所以使用freebsd的原因:因为它是最正统的unix,不含有那些什么特有的linux命令,aix命令,solaris命 令等等…..就像吃肉吃多了吃咸菜一样爽口的感觉,我是很不愿意在日记里面提到亦彩的,所谓出其不意,攻其不备,亦彩的服务器架构于 freebsd5.3+apache2+php4+mysql4.1+icecast2+proftpd1.2+openssh4,比较难配置的就是 icecast,其他的还是比较简单,这次的任务有了新内容,要配置oracle10,java,tomcat,有挑战性,我喜欢!不过就是不知道我能不 能忍受256M内存下的oracle运行速度,oracle的标准配置是4G运行内存,看起来只有曙光的机器能担当这个重任……