感谢支持
我们一直在努力

Linux平台下Java程序员的基本功

一、概述
 
1、该系列文章主要介绍Linux下tomcat集群的安装与配置,其中涵盖了Linux,vsftpd,jdk,tomcat,apache,jkconnector等相关知识,还包括Linux下的常用命令,作为一个Java程序员,这些技术是我们在Linux平台下的基本功。
 

在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。集群系统(Cluster)主要解决下面几个问题

1.高可靠性:利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

2.高性能计算:即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。

3.负载 均衡 :即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

何为集群?
是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
 
何为负载均衡?
先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。

 
 
2、配置环境
 
Linux:Red Hat Enterprise Linux Server release 5
JDK:java version 1.7.0_21
Tomcat:apache-tomcat-7.0.22
Apache:httpd-2.2.17.tar.gz
Jkconnector:jakarta-tomcat-connectors-1.2.15-src.tar.gz
 
下载地址:自己google吧,注意是Linux版本。如果这都找不到,这篇文章我劝你就别看了。
 
3、Linux下tomcat集群原理
 
Linux平台下Java程序员的基本功
 
Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:
  
  <!– Define a non-SSL Coyote HTTP/1.1
  Connector on port 8080 –>
  <Connector port=”8080″
  maxThreads=”150″
  minSpareThreads=”25″
  maxSpareThreads=”75″
  enableLookups=”false”
  redirectPort=”8443″
  acceptCount=”100″
  debug=”0″
  connectionTimeout=”20000″
  disableUploadTimeout=”true” />
  
  <!– Define a Coyote/JK2 AJP 1.3
  Connector on port 8009 –>
  <Connector port=”8009″
  enableLookups=”false”
  redirectPort=”8443″ debug=”0″
  protocol=”AJP/1.3″ />
  
  第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
  
  第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。
  
  Web客户访问Tomcat服务器上JSP组件的两种方式如图所示。
 
Linux平台下Java程序员的基本功

上图反映了Web客户访问Tomcat服务器上的JSP组件的两种方式
  
   在图中,Web客户1直接访问Tomcat服务器上的JSP组件,他访问的URL为http://localhost:8080 /index.jsp。Web客户2通过HTTP服务器访问Tomcat服务器上的JSP组件。假定HTTP服务器使用的HTTP端口为默认的80端口, 那么Web客户2访问的URL为http://localhost:80/index.jsp 或者 http://localhost/index.jsp。
  
下面,介绍Tomcat与HTTP服务器之间是如何通信的。

Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客 户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。
  
   假定在预先配置好的URL映射信息中,所有”/*.jsp”形式的URL都由Tomcat服务器来处理,那么在图22-1的例子中,JK插件将把客户请 求转发给Tomcat服务器,Tomcat服务器于是运行index.jsp,然后把响应结果传给HTTP服务器,HTTP服务器再把响应结果传给Web 客户2。
  
  对于不同的HTTP服务器,Tomcat提供了不同的JK插件的实现模块。本章将用到以下JK插件:
  
  与Windows下的Apache HTTP服务器集成:mod_jk_2.0.46.dll
  与Linux(RedHat)下的Apache HTTP服务器集成:mod_jk.so-ap2.0.46-rh72..46-rh72
  与IIS服务器集成:isapi_redirect.dll
 
这里我们主要介绍与RedHat继承
 
4、安装配置步骤
 
(1)安装linux和putty
(2)安装vsftpd和LeapFTP,并做相关配置
(3)jdk安装和配置
(4)tomcat安装和配置
(5)Apache安装和配置(如果Linux上没有安装GCC,先安装GCC)
(6)Jkconnector安装和配置
(7)整合配置
 
5、参考资料
(1)网上各位大牛
(2)《鸟哥的Linux私房菜》 http://www.linuxidc.com/Linux/2011-06/36804.htm
 
下篇继续……  http://www.linuxidc.com/Linux/2013-07/871180p2.htm
一、安装linux和putty
 
1、安装比较简单,不再重复贴图,具体参考以下文档 http://www.linuxidc.com/Linux/2011-07/38051.htm
 
如果是在一台全新的机器上安装,文档中虚拟机安装部分忽略即可。
也可以参考
http://www.linuxidc.com/Linux/2010-06/26892.htm
 
2、安装putty
 
下载绿色版,直接解压即可
 
参考:
Linux下Putty的复制与粘贴实现 http://www.linuxidc.com/Linux/2012-06/63131.htm
Putty连接VMWare中Ubuntu的问题解决 http://www.linuxidc.com/Linux/2013-05/84819.htm
如何通过Putty实现远程登录控制Linux平台 http://www.linuxidc.com/Linux/2013-06/85266.htm
 

(1)何为Putty?
 
Putty是一个免费的Windows平台下的telnet、rlogin和ssh客户端,Putty的功能丝毫不逊色于商业的telnet类工具
 

一般我们的Linux服务器都在电信机房,而且一般配置好,就插根网线,键盘鼠标显示器都不要。我们要在服务器上做任何操作,不可能总是搬着这些东西去机房操作吧,我们希望坐在办公室里,就能远程控制这一切,这个时候就用到了Putty,而Putty就是基于以下几种协议的。
当然有些棘手的问题,还是需要我们带着键盘显示器去现场的。

 
(2)何为telnet?
 
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

 

(3)何为ssh
ssh为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

 

(4)何为rlogin
因特网上较早提供的服务。用户通过该命令使自己的计算机暂时成为远地计算机的终端,直接调用远地计算机的资源和服务。

 
看上去,telnet、rlogin和ssh似乎是一样的,其实不然,他们是有区别的。简而言之:
 

telnet:就是远程登陆,通讯的数据是明文传输,所以不太安全
ssh:安全的shell,即你在与主机通讯的数据是加密传输的,这样别人要用网络工具什么来截取包获得信息就困难了。
rlogin: 主机之间的信任关系,如果条件满足,可以不用输密码而登陆远程主机

 
Putty主界面
Linux平台下Java程序员的基本功
 

输入服务器ip,选择协议,然后Load,就可以看到我们熟悉得命令行,其他功能,自己挖掘吧。

 
在命令行中输入:
[root@localhost conf]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0C:29:6E:BA:CE
inet addr:192.168.40.128 Bcast:192.168.40.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe6e:bace/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1907 errors:0 dropped:0 overruns:0 frame:0
TX packets:1322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:182415 (178.1 KiB) TX bytes:198995 (194.3 KiB)
Interrupt:169 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3978 (3.8 KiB) TX bytes:3978 (3.8 KiB)
 
Linux下的常用命令不知道?在google搜下“Linux常用命令”。

一、安装vsftpd和LeapFTP,并做相关配置
 
1、先扫盲
 
(1)何为vsftpd?
如果你想在你的Linux/Unix服务器上搭建一个安全、高性能、稳定性好的FTP服务器,那么vsftpd可能是你的首选应用。vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。
 
(2)何为ftp?
FTP的全称是File Transfer Protocol(文件传输协议),顾名思义,就是专门用来传输文件的协议。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着 FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
 
RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm
 
2、验证vsftpd是否安装
 
在安装RedHat的时候,如果我们勾选了vsftpd相关选项,那么系统中这个时候已经带了vsftp,就不需要再手动安装了,否则,我们需要手动安装。
 
如何验证?
 
打开putty(上节介绍过,不懂点我),连接上远端linux服务器
命令行下输入:rpm -qa| grep vsftpd
如果已经安装就会出现vstfp的版本号相关的信息,如果没有出现就是没有安装

如果未安装,那就得选择安装方式了。
 
(1)用安装盘安装
 

插入Red Hat Enterprise Linux 5安装光盘(第二张光盘) ,使用如下命令 :
 
1)先把光盘挂载到系统上:

mount /dev/cdrom /mnt
这样光盘的内容就被挂载到/mnt的设备上,现在可以通过/mnt访问光盘上的内容了

2)在光盘上安装vsftp,并且启动vsftp

rpm -ivh vsftpd*

3)修改启动方式,改为系统启动时,自动启动

chkconfig vsftpd on
也可以查看启动方式
chkconfig –list |grep vsftpd
只要在第2–5为on就能随机启动

4)启动ftp

service vsftpd start
 
5)连接测试
 
windows+r打开windows的命令行,输入ftp 服务器ip,例如ftp192.168.40.128
 
如果出现

连接到……等字样,说明安装成功。
 
 
(2)用下载包安装
 

比如我们下载的是 vsftpd-2.0.3.tar.gz ;
 
[root@localhost ~]# tar zxvf vsftpd-2.0.3.tar.gz
[root@localhost ~]# cd vsftpd-2.0.3
[root@localhost ~]# make ;make install (这里应该需要GCC,后面我们会提到它的安装方式)
[root@localhost ~]# cp vsftpd.conf /etc
然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行;
 
listen=yes
源码包安装的方法,如果您的系统是RPM包管理的系统,可以删除/etc/xinetd.d/vsftpd 这个文件;然后启动xinetd 服务器;
 
[root@localhost ~]# /etc/init.d/xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
vsFTPd运行有两种模式,在RPM包管理的系重审统,大多是由Fedora/Redhat 开发而来,对于这样的系统有xinted服务器一说;对于非RPM包管理的系统,一般没有xinted这一说。为了保证本文档的统一,我们都不要用xinetd模式,而用initd运行模式来启动和管理服务器,也就是独立运行模式。
 
相关阅读:什么是xinetd模式和initd模式?
 
像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。简单解释一下, standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。
 

xinetd模式和standalone模式的区别
 
以xinetd模式运行的服务表示该服务进程并不以守护进程执行,以FTPD进程为例吧,以xinetd模式运行这个服务,情况是这样的,本身FTP服务是会监听21号端口的,但是以这种模式运行这个服务的话,21号端口则由xinetd进程来监听(此时FTPD服务并没有运行),如果你的网卡接收到有21号端口请求,则有xinetd进程会去调用FTPD程序,将在21号端口接收到的请求数据移交给FTPD进程去处理,处理完后FTPD进程退出,而xinetd进程继续监听21号端口,这有点类似windows的svhost进程;而以 standalone模式运行的服务则是服务进程,如ftpd以守护进程在内存中运行,接收到21号端口的请求后由FTPD进程fork出一个子进程进行处理,而原进程继续监听21号端口。

 
¥xinetd运行模式
 
大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:
 
disable = no
socket_type = stream
wait = no
# 这表示设备是激活的,它正在使用标准的TCP Sockets。
如果“/etc/vsftpd.conf”中的有选项为“listen=YES”,注销它
最后,重启xinetd,命令如下:
$ /etc/rc.d/init.d/xinetd restart
需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。
 
¥standalone模式
 
standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置
 
“disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.con
 
f”中的选项为“listen=YES”。
 
如果是standlone模式,那么它是作为单独的一个服务启动的,不需要系统协作,不作为系统服务,
 
如果要是成为xinetd模式,那么它的服务就要受系统服务的限制,比如创建一个新的服务进程,但是也有缺点,如果xinetd服务本身出了问题,那么相关的服务也是会受到影响的。
 
————————————————————————–
可能会遇到的问题
¥vsftpd匿名用户不能上传文件和删除
¥root用户无法登陆
 
这就需要我们vsftp进行简单的配置
 
3、vsftpd配置

主配置文件有三个:
/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list

修改前建议使用“cp”命令备份这三个文件,修改完成后需要重启vsftpd服务才能使设置生效。

匿名用户访问配置
¥启动后FTP服务器就可以登陆了
  匿名用户在text模式下,要用用户名ftp,密码也是ftp,来进行登陆;如果是用FTP工具来匿名登陆的话,用户名和密码都为:anonymous。默认情况下匿名用户可以访问和下载,但不能进行上传、删除、新建目录、执行文件等操作!
  本地用户可以登陆,并可以离开自家目录至有权访问的其他目录,并在权限允许的情况下进行上传和下载,写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。

¥允许匿名用户上传文件
需要修改/etc/vsftpd/vsftpd.conf文件,把以下两项前的“#”去掉。
anon_upload_enable=YES
anon_mkdir_write_enable=YES
重启vsftpd服务。

¥仅允许匿名用户访问
指需要限制本地账号访问,修改/etc/vsftpd/vsftpd.conf文件,把以下两项前的“#”去掉。
local_enable=YES
write_enable=YES
重启vsftpd服务。

¥设置欢迎信息
修改/etc/vsftpd/vsftpd.conf文件
ftpd_banner=*****
*****即为设置的欢迎信息。
重启vsftpd服务。

¥设置最大传输率
修改/etc/vsftpd/vsftpd.conf文件
设置匿名用户的最大传输速率为20Kbps,应添加以下语句:
anon_max_rate=20000
设置本地账号的最大传输速率为1Mbps,应添加以下语句:
local_max_rate=1000000

¥设置服务器最大并发数和用户最大线程数
修改/etc/vsftpd/vsftpd.conf文件
设置服务器最大并发数为99,应添加以下语句:
max_clients=99
设置用户同一时段的最大连接数,应添加以下语句:
max_per_ip=5

¥禁止某些IP段的主机匿名访问服务器
修改vsftpd.conf文件,确认有如下语句:
tcp_wrappers=YES
修改/etc/hosts.allow文件,增加1行命令:
vsftpd:192.168.1.1:DENY
表示限制IP为192.168.1.1的主机访问FTP服务器。
重启vsftpd服务。

¥用ASCII方法传送数据
修改/etc/vsftpd/vsftpd.conf文件,
ascii_upload_enable=YES
ascii_download_enable=YES
重启vsftpd服务。

¥设���数据传输中断间隔时间
修改/etc/vsftpd/vsftpd.conf文件,
idle_session_timeout=600
表明空闲会话时间为600秒。
data_connection_timeout=120
表明数据连接超时时间为120秒。
重启vsftpd服务。

本地用户访问配置


¥使用用户列表进行访问控制
修改/etc/vsftpd/vsftpd.conf文件,按以下语句设置:
userlist_enable=NO
表明vsftpd.ftpuser文件中的用户将被禁止访问FTP服务器。
userlist_enable=YES
userlist_deny=NO
表明仅允许vsftpd.user_list文件中的用户访问FTP服务器。
userlist_enable=YES
userlist_deny=YES
表明vsftpd.ftpuser和vsftpd.user_list文件中的用户都不能访问FTP服务器。

¥限制用户目录的访问权限
修改/etc/vsftpd/vsftpd.conf文件
chroot_local_user=YES
表明用户登录后不能访问自己目录以外的其它目录或文件。

¥修改默认端口
FTP服务器默认的端口是21,如需要修改端口,请修改/etc/vsftpd/vsftpd.conf文件,以下语句:
listen_port=4444
表明FTP服务器的端口号为4444,应该尽量大于4000

 
3、安装leapFtp
 
接着扫盲

(1)何为LeapFTP?
LeapFTP是一款小巧强大的FTP工具之一,友好的用户界面,稳定的传输速度,LeapFTP与FlashFXP 、CuteFTP堪称FTP 三剑客。FlashFXP传输速度比较快,但有时对于一些教育网FTP站点却无法连接;LeapFTP传输速度稳定,能够连接绝大多数FTP站点(包括一些教育网站点);CuteFTP虽然相对来说比较庞大,但其自带了许多免费的FTP站点,资源丰富。总之来说,三者各有所长。

 下载绿色版,直接解压即可。使用起来很简单。

一、Linux下jdk安装和配置
 

对于Linux安装JDK,需要进行以下几个步骤:

1、从sun公司网站下载JDKLinux安装版本

本文采用jdk-7u21-linux-i586.rpm

2、通过ftp将该文件上传到Linux

如果ftp不能上传,请参考上一节,我是采用的LeapFTP上传工具。

3、修改该文件的运行权限

如果是root登陆,这一步可以忽略。

扫盲:Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 

详细参见: http://www.linuxidc.com/Linux/2012-06/61857.htm 

4、查询安装文件是什么类型的文件,如果是.bin的文件表示为可以直接运行的文件,如果是rpm文件表示需要通过rpm来进行安装的文件。通过.bin的文件安装很简单,直接输入./jdk就可以了,注意:如果直接输入文件名没有效果,因为该文件名并没有在path变量中,所以需要告诉其路径
 
继续扫盲:
 
(1)何为rpm

 
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念 是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
 
直接把它理解成“命令行式的windows控制面板下的添加/删除程序”就可以了。
 
(2)path变量有什么用
%PATH% 代表的是可执行文件的搜索路径,只有在这个path变量中配置的路径,系统才会搜索,这些命令你才能直接使用,不用写完整路径。
 
在运行安装文件之前,我们应该首先看看是不是已经安装了jdk
命令:Java -version
 
[root@localhost /]# java -version

java version “1.7.0_21”
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)
[root@localhost /]#

如果出现版本信息,即可知道已经安装,如上,我这里已经安装了。
 
多版本JDK是可以一台服务器上共存的,这里先不讨论了。
 
因为有可能原来机器中有相应的jdk存在,它不会默认去找新安装的jdk,必须手动设置相应的环境变量,可以通过设置/etc/profile文件,注意一般用户重新登录后 profile生效,如果不想重启,那就用source /etc/profile命令执行即可
 
如果不想要了,那如何卸载已经安装的jdk呢?
 
卸载相应的jdk可以通过rpm工具来卸载,使用rmp –qa可以查询Linux中安装的rpm软件,通过rpm –qa|grep jdk,可以查询安装的相应的jdk文件。使用rpm –e jdk-1.7.0_21-fcs可以卸载已经安装的jdk[-q(query)表示查询,-a(all)表示查询所有,-e(erase),-nodeps(表示强制卸载)]
 
开始安装新的吧!

 
通过rpm进行jdk的安装,首先确定jdk的目录中存在相应的jdkxxx.rpm的文件,之后直接运行rpm –ivh jdkxxx.rpm就可以安装了[-i(install)表示安装,-v(verbose)表示打印详细的安装信息,-h(hash)表示安装时输出hash记号]
 
以后我们手动安装的东西,例如jdk,tomcat,mysql等等,都统一放在 /usr/local/下.为什么?
首先便于我们管理,另一方面,有利于我们进行重要数据的备份。

 
完整实例:

 
注:遇到这种Do you aggree to the above license terms? [yes or no]提示,直接y即可

进入安装目录

#cd /var/ftp/pub

#cp jdk-1.7.0_21 -linux-i586.rpm /usr/local

#cd /usr/local

给所有用户添加可执行的权限(如果直接就是rpm文件,这步可省)

#chmod +x jdk-1.7.0_21 -linux-i586.rpm.bin

#./ jdk-1.7.0_21 -linux-i586.rpm.bin

此时会生成文件 jdk-1.7.0_21 -linux-i586.rpm,同样给所有用户添加可执行的权限

#chmod +x jdk-1.7.0_21 -linux-i586.rpm

安装程序

#rpm -ivh jdk-1.7.0_21 -linux-i586.rpm

出现安装协议等,按接受即可。

 

2.设置环境变量。

#vi /etc/profile

在最后面加入

#set java environment

JAVA_HOME=/usr/local/java/jdk-1.7.0_21

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

保存退出。
 
source /etc/profile使profile生效

 

要使JDK在所有的用户中使用,可以这样:

vi /etc/profile.d/java.sh

在新的java.sh中输入以下内容:

#set java environment

JAVA_HOME=/usr/local/java/jdk-1.7.0_21

CLASSPATH=.:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh

 

3.在终端使用echo命令检查环境变量设置情况。

#echo $JAVA_HOME

#echo $CLASSPATH

#echo $PATH

 

4.检查JDK是否安装成功。

#java -version

如果看到JVM版本及相关信息,即安装成功!

一、Linux下tomcat安装和配置
 

1、从www.apache.org网站中下载tomcatLinux版本tar.gz (pgp, md5) 

2、将该文件通过ftp上传到Linux

如果不会上传,请参考第二节

对于tomcat而言,文件很有可能是apachxxx.tar.gz的文件,对于该文件而言需要进行两次解压,首先通过gzip解压,使用gzip –d apachexx.tar.gz[-d(decompress)表示解压],解压之后会得到一个apachxx.tar的文件,之后使用tar进行tar文件的解压。使用tar –xvf apachxx.tar[-x(extract)表示解压缩,-v(verbose)表示显示解压缩到全过程,-f(file)表示以文件的形式进行解压缩]

解压缩完成之后,将该文件夹拷贝到相应的目录中,建议将其拷贝到/usr/local/tomcat中去,使用mv apachexx.tar/usr/local/tomcat

如此在完成拷贝的同时又完成了相应的命名 

3、设置环境变量。

#vi /etc/profile

在最后面加入

export Java_HOME=/usr/java/jdk1.7.0_21
export JRE_HOME=/usr/java/jdk1.7.0_21/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
 
如果在上一节中配置jdk环境变量,上面几行可以省略
 
CATALINA_BASE=/usr/ local/tomcat
CATALINA_HOME=/usr/ local/tomcat
export CATALINA_BASE CATALINA_HOME
TOMCAT_HOME=/usr/local/tomcat
export TOMCAT_HOME
 

保存退出。

 
source /etc/profile使profile生效
 
扫盲:何为vi?
vi是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi。vi命令繁多但是如果使用灵活之后将会大大提高效率。
详细参见: http://www.linuxidc.com/Linux/2013-06/86583.htm 

4、通过使用catalina.sh可以直接开启tomcat的服务,开启之后可以通过ps – ef | grep tomcat查看tomcat的运行情况,但是此时tomcat在别的机器上不能访问,因为防火墙的原因。可以通过wget http://localhost:8080来测试该网站是否可以在本机访问。如果可以访问但是其他机器不能访问,就说明是防火墙的问题,可以通过步骤5来完成防火墙的配置。

5、如果打开了防火墙有可能是防火墙将相应的端口关闭了,可以通过修改/etc/sysconfig/iptables文件来修改防火墙的访问控制,可以增加如下一条记录

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

#User Defination—————-start———————-

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 8080 -j ACCEPT

#User Defination—————–end———————–

以上打开了相应的808080端口,可以根据需求添加不同的规则来打开相应的端口。之后通过service iptables restart重新启动一下防火墙就可以了。可以通过iptables –L –n |more来查询防火墙的配置。 

如果不想配置,可以直接使用命令把防火墙关掉: 

(1)默认开启,重启后生效:chkconfig iptables on

默认关闭:chkconfig iptables off

(2) 即时生效,重启后失效:

开启:service iptables start

关闭:service iptables stop

(3)/etc/init.d/iptables status 会得到一系列防火墙状态信息,说明防火墙开着。

/etc/rc.d/init.d/iptables stop 关闭防火墙 

6、配置了其他机器可以访问之后,需要配置开机自动启动,如下几种方案,首先可以修改/etc/profile,在其中添加上启动的命令!但是这样设置最大的问题是,该文件需要登录之后才能运行,所以在重启并没有登录的情况下,该文件不会被执行;另外一种方式就是修改相应的/etc/rc.local,在该文件中加入相应的配置信息,rc.local表示在机器启动之后会自动执行的文件。在该文件加入以下一些代码

##添加java_home

JAVA_HOME=$JAVA_HOME

export JAVA_HOME

##自动启动tomcat

usr/tomcat/bin/startup.sh,如果配置了环境变量,直接startup.sh或catalina.sh即可

下篇继续……

一、Linux下Apache安装和配置(包含GCC的安装)
 
由于有了前面几节的安装经验,这里的安装步骤的具体说明,我就从简了。
 
1、下载apache
 
何为apache?
Apache HTTP Server(简称Apache)是一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
 

2、安装apache:
解压Apache压缩包 httpd-2.2.17.tar.gz 到/usr/local,解压: -zxvf httpd-2.2.17.tar.gz
进入安装目录 :cd /usr/local/apache/httpd-2.2.17
进行安装配置: ./configure –prefix=/usr/local/apache –enable-module=so
make ——-出错啦?缺少GCC,参考下文
make install
 
常规解压命令?

.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

参见:http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html
 
3、测试安装是否正常
启动Apache:/usr/local/apache/bin/apachectl start
查看进程:
 

2947 ? Ss 0:00 /usr/local/apache/bin/httpd -k start
2948 ? S 0:00 \_ /usr/local/apache/bin/httpd -k start
2949 ? S 0:00 \_ /usr/local/apache/bin/httpd -k start
2950 ? S 0:00 \_ /usr/local/apache/bin/httpd -k start
2951 ? S 0:00 \_ /usr/local/apache/bin/httpd -k start
2952 ? S 0:00 \_ /usr/local/apache/bin/httpd -k start

 
见到上述进程,说明启动成功!
 
ps命令知多少?
大家在windows下都用过任务管理器吧,这个就相当于命令行式的任务管理器
参见:http://blog.csdn.net/JsuFcz/article/details/5044932
 
 
测试一下
在远端浏览器输入服务器IP,如
http://192.168.40.128/

It works!

 
提示it works! 说明apache已经安装成功
 
如果安装过程中,报了缺少GCC的错误,那么请先安装GCC
 
何为GCC?
GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。
 
 
步骤如下:

1、插入第一张安装盘,首先在/mnt下创建cdrom文件夹,然后挂载安装盘:mount /dev/cdrom /mnt/cdrom

2、进入/mnt/cdrom/Server,按顺序安装以下包:

1[root@localhost Server]# find -iname kernel-headers*

./kernel-headers-2.6.18-128.el5.i386.rpm

[root@localhost Server]# rpm -ivh ./kernel-headers-2.6.18-128.el5.i386.rpm

warning: ./kernel-headers-2.6.18-128.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:kernel-headers ########################################### [100%]

 

挂上第二张光盘

2[root@localhost Server]# find -iname glibc-headers*

./glibc-headers-2.5-34.i386.rpm

[root@localhost Server]# rpm -ivh ./glibc-headers-2.5-34.i386.rpm

warning: ./glibc-headers-2.5-34.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:glibc-headers ########################################### [100%]

 

3[root@localhost Server]# find -iname glibc-devel*

./glibc-devel-2.5-34.i386.rpm

[root@localhost Server]# rpm -ivh ./glibc-devel-2.5-34.i386.rpm

warning: ./glibc-devel-2.5-34.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:glibc-devel ########################################### [100%]

 

4[root@localhost Server]# find -iname libgomp*

./libgomp-4.3.2-7.el5.i386.rpm

[root@localhost Server]# rpm -ivh ./libgomp-4.3.2-7.el5.i386.rpm

warning: ./libgomp-4.3.2-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:libgomp ########################################### [100%]

 

5[root@localhost Server]# rpm -ivh gcc-4.1.2-44.el5.i386.rpm

warning: gcc-4.1.2-44.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:gcc ########################################### [100%]

 

6[root@localhost Server]# find -iname libstdc++-devel*

./libstdc++-devel-4.1.2-44.el5.i386.rpm

[root@localhost Server]# rpm -ivh ./libstdc++-devel-4.1.2-44.el5.i386.rpm

warning: ./libstdc++-devel-4.1.2-44.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:libstdc++-devel ########################################### [100%]

 

7[root@localhost Server]# find -iname gcc-c++*

./gcc-c++-4.1.2-44.el5.i386.rpm

[root@localhost Server]# rpm -ivh ./gcc-c++-4.1.2-44.el5.i386.rpm

warning: ./gcc-c++-4.1.2-44.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing… ########################################### [100%]

1:gcc-c++ ########################################### [100%]

 

3、最后进入/mnt,输入rpm –qa gcc*,如过成功安装了gcc,可以查出以下内容:

gcc-c++-4.1.2-44.el5

gcc-4.1.2-44.el5

可能还会在装这些包之间装上这三个包:

binutils-2.13.90.0.18-9.i386.rpm

cpp-3.2.2-5.i386.rpm

 
为什么需要那么多rpm文件?
在我们安装某一个rpm包的时候,系统有可能提示某一个库文件或者rpm的支持,当想在安装需要该rpm包倚赖的这个库文件或者rpm包时,该库文件或者rpm包又依赖另外的文件或rpm包,导致安装很难快速解决包之间的以来关系达到安装需要的组件的目的。RedHat提供的解决方案,安装依赖关系库,就可以解决此问题,该文件可以用find -name rpmdb* 在rpm包所在文件夹中找到,然后运行rpm -ivh –aid abc.rpm,abc.rpm为需要安装的包即可。当然复杂的时候还需要手动解决少数包依赖关系,简单的情况下,可以一次性解决所有以来关系。

一、Jkconnector安装和配置,并整合tomcat集群
 
1、下载
我选择的是jakarta-tomcat-connectors-1.2.15-src.tar.gz
 
何为Jkconnector?
Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客 户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。
 
2、安装
(1)将jakarta-tomcat-connectors-1.2.15-src.tar.gz包解压到/usr/local目录下
命令:
(2)解压jakarta-tomcat-connectors-1.2.15-src.tar
命令:tar -zxvf /usr/local/jakarta-tomcat-connectors-1.2.15-src.tar
(3)进入jakarta-tomcat-connectors-1.2.15-src/jk/native目录
命令:cd /usr/local/jakarta-tomcat-connectors-1.2.15-src/jk/native
(4)执行buildconf.sh 脚本刷新配置文件
(5)配置apxs连接
命令: /usr/local/jakarta-tomcat-connectors-1.2.15-src/jk/native/configure -with-apxs=/usr/local/apache/bin/apxs
(6)编译配置文件
命令:make
(7)生成mod_jk.so模块
命令:make install
(8)将mod.jk.so模块拷贝到apache服务器的modules目录下
命令:cp /usr/local/jakarta-tomcat-connectors-1.2.15-src/jk/native/apache2.0/mod_jk.so /usr/local/apache/modules
 
3、配置apache与jkconnector集成,并整合tomcat
 
 
(1)打开apache配置文件,添加jk模块,就是我们刚才上面生成的so文件
vi /usr/local/apache/conf/httpd.conf
在263行加入:
LoadModule jk_module modules/mod_jk.so
 
vi如何显示行号?
在VI的命令模式下输入“:set nu” 或者修改vi配置文件“vi ~/.vimrc”,在其中添加“set nu”
 
 
(2)在httpd.conf末尾加入:

 
#这个指定在apache启动时调用,告诉apache调用可用的tomcat worker实例,这些worker被定义在worker.propertise文件中。该指令必须被定义在全局变量中
JkWorkersFile /usr/local/apache/conf/workers.propertise
 
# 这个指定作用是通过调用uriworkermap.propertise中定义的内容处理映射关系,将相对应的文件请求教给对象的worker处理。该指令必须被定义在全局变量中
JkMountFile /usr/local/apache/conf/uriworkermap.propertise
 
#指定tomcat连接模块的日志文件存放位置
JkLogFile /usr/local/apache/logs/mod_jk.log
 
#日志级别能被定义为debug,info,warn,error,trace
JkLogLevel info
 
#将请求的内容指向一个worker处理
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13

 
#修改访问组权限303行
User nobody
Group nobody
 
注:User和Group是Apache的安全保证,访问权限缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了服务器本身和由他启动的CGI进程没有权限更改文件系统。
 
 
(3)配置worker.propertise
 
在/usr/local/apache/conf下,新建worker.propertise文件
命令:vi /usr/local/apache/conf/workers.propertise
 
添加如下内容:

 

 
worker.list=tomcat1,tomcat2,loadbalancer

 
#========tomcat1========
worker.tomcat1.port=8180
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#========tomcat2========
worker.tomcat2.port=8280
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
 
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2
worker.loadbalancer.sticky_session=1

 
保存退出
 
说明:
¥这里我们配置了两个tomcat,所以,我们将原来安装好的tomcat复制一份,改名为tomcat2即可,所以现在我们的tomcat_home分别为
/usr/local/tomcat和/usr/local/tomcat
 
¥定义了两个worker名字为tomcat1和tomcat2,监听端口为8180,8280,主机名为localhost或ip地址,通过ajp13协议与服务器通讯。
定义了第三个worker名字为Loadbalancer,这个worker是用作负载均衡的,worker类型为lb,通过调用tomcat1和tomcat2两个worker做负载均衡, worker.tomcat2.lbfactor参数,它是节点的负载加权,它的值越大,获得负载的机会就越大,即分配到此节点的请求越多。以上两个节点的权重比为1:1,即平均分配,负载甲醛的设置可以根据node的硬件性能进行调整。
 
¥在定义tomcat1和tomcat2端口时,要和tomcat自身的tomcat_home/conf/server.xml文件中定义的端口号一致,这里定义的8180和8280都是从8009端口修改的
 
(4)配置uriworkermap.propertise
在/uri/local/apache/conf下,新建uriworkermap.propertise文件
命令:vi /usr/local/apache/conf/uriworkermap.propertise
 
添加如下配置:

/*=loadbalancer
!/*.gif= loadbalancer
!/*.jpg= loadbalancer
!/*.png= loadbalancer
!/*.css= loadbalancer
!/*.js= loadbalancer
!/*.htm= loadbalancer
!/*.html= loadbalancer
!/*.jsp=loadbalancer

 
说明:感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件
 
 
(5)修改tomcat配置
 
¥修改server.xml
命令:vi /usr/local/tomcat1/conf/server.xml
修改:<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat2″ />(即把jvmRoute项修改为workers.propertise文件中定义个worker名tomcat2,修改tomcat2的配置文件时,将这里修改为tomcat1,根据你自己的实际情况)
 
修改端口分别为,8005(关闭端口)\8009(启动端口,该端口和上述workers.propertise文件中指定的相同)
举例:
<Server port=”9005″ shutdown=”SHUTDOWN” /> 改自8005
<Connect port=“8180”enableLookups=”false” redirectPort=”8443″ protocal=”AJP/1.3″ /> 这句话默认是被注释掉的,去掉注释,并加入ajp13协议。修改tomcat2时,将这里修改为8280,根据你自己的实际情况
 
¥修改/etc/profile文件,加入如下内容。在前面安装jdk,安装tomcat的时候,我们已经部分加入,现在只需根据自己的实际情况改动即可。
 

export Java_HOME=/usr/java/jdk1.7.0_21
export JRE_HOME=/usr/java/jdk1.7.0_21/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CATALINA_BASE=/usr/local/tomcat1
CATALINA_HOME=/usr/local/tomcat1
export CATALINA_BASE CATALINA_HOME
CATALINA_2_BASE=/usr/local/tomcat2
CATALINA_2_HOME=/usr/local/tomcat2
export CATALINA_2_BASE CATALINA_2_HOME
TOMCAT_HOME=/usr/local/tomcat1
export TOMCAT_HOME
TOMCAT_2_HOME=/usr/local/tomcat2
export TOMCAT_2_HOME

 
保存退出
 
source /etc/profile使profile生效
 
¥修改tomcat启动脚本
 
添加如下内容:

export CATALINA_BASE=$CATALINA_BASE
export CATALINA_HOME=$CATALINA_HOME

 
修改tomcat2时,这里修改为

export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME

 
¥配置完tomcat测试一下,tomcat是否能正常运行。
启动命令:user/local/tomcat1/bin/startup.sh
查看进程:ps -ef|grep tomcat
有进程信息即正常
停止命令:user/local/tomcat1/bin/shutdown.sh
 
 
至此,linux下的tomcat集群已经配置完毕了。
 
 
测试一下:
 
在tomcat1和tomcat2中的webapps中分别定义两个测试目录,名字都定义为test,在该目录下新建index.jsp文件,在tomcat1下的index.jsp中写“this is tomcat1”,在tomcat2下的index.jsp中写“this is
tomcat2”
分别启动tomcat1,tomcat2,apache,通过远程浏览器访问,你的服务器ip/test访问,多次F5刷新,看访问结果。
 
Linux平台下Java程序员的基本功

 
别忘记配置防火墙,或���掉防火墙,如若设置随RedHat一起启动apache,都参考第五节
 
 

看到这样的结果,说明我们的集群已经起作用了。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux平台下Java程序员的基本功
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏