Linux运行环境大杂配

简介:
---在redhat 9 下集成apache+jsp+php+mysql 
作者:田逸(sery@163.com) 发表于《开放系统世界》2005年第9期48页 

几天前接到一个任务,要求搭建一个既能跑jsp,又能跑php脚本的一个服务器运行环境,而且要求是在同一个目录下面,就是说在一个目录里面有的文件是*.jsp,有的是*.php,有的是*.html。鉴于这样的需求,其解决方法就是要把jsp和php整合到apache里,另外加上mysql数据库。为了配置这样一个环境,我花了不少时间,在这个过程中出了不少问题,幸好得到张炜宇的大力帮助,问题才得以顺利解决。现在此把这些过程记录下来,希望能对大家的工作有所帮助。 

一、 安装linux 
我在这里介绍ftp的安装方式,以这种方式安装,要比从 cdrom安装要快一些,也不会出现在安装过程出现不能读光盘而无法继续安装。①先在一台windows系统上安装serv_u类似的ftp服务器软件,然后指定用户目录,并且允许匿名访问;然后把redhat 9的三张光盘按光盘的根目录拷贝文件和文件夹到这个用户目录,在拷贝第二和第三张光盘是会提示目录里有相同的文件夹或文件,问是否覆盖,回答yes即可。拷贝完成后启用这个ftp服务器,在浏览器里输入 ftp://ftp 的ip地址,例如: ftp://192.168.100.100,来验证ftp服务器配置的正确性。②把光盘放在要安装系统的服务器的光驱中,让系统从光盘引导,片刻进入linux安装向导界面。这时输入命令行 linux askmethod然后回车,下一步….指定本服务器的ip地址(要与ftp服务器在同一个网段)和默认网关,到系统提示选择安装方式的时候,选中ftp方式,然后需要指定ftp服务器的ip地址和redhat 9的存放目录,正确无误后,安装往下进行,后面的步骤跟用光盘安装差不多。建议在安装时少安装一些套件(但建议把mysql安装好),比如httpd不要安装,安装完后从网上下载新的版本来使用。花一段时间以后,系统安装完成。 

二、 下载所需的软件,把下面这些软件下载到某台windows系统的机器里 
1、 httpd-2.0.54.tar.gz //apache服务器 
2、 php4.3.11.tar.gz //php解释器 
3、 j2sdk-1.4.2-01-linux-i586-rpm.bin //java运行环境 
4、 jakarta-tomcat-5.0.28.tar.gz //jsp解释器 
5、 fedora-core-1-i386.tar.gz //apache与tomcat的连接程序,一般的方法是用jakarta-tomcat-connectors-jk2-src-current.tar.gz,但是这个过程十分麻烦,还需依赖另外好几个包,所以建议使用这个文件. 

三、 上传下载软件到服务器 
在上面的windows 机器上安装ssh客户端软件,我用的是securecrt4.1.5注册版。用这个软件来远程控制linux服务器,非常方便。启动软件securecrt,创建一个会话,输入要连接控制的linux服务器的ip地址,填写用户名为root,输入linux 服务器的root密码,片刻就可以连接到linux服务器,然后就像在linux 本机上操作一样。在linux上创建目录/tmp/upload用来接收从 windows机器上传来的文件。用命令 #mkdir /tmp/upload 来创建目录,然后转到这个目录 #cd /tmp/upload ,再使用securecrt自带的上传工具传输文件到linux服务器的/tmp/upload.上传文件:点击securecrt的菜单项“transfer” “zmodem upload list…”,而后出现选择要传送文件的对话框,按”ctrl”键可以选择多个文件,这一步完成后,点击securecrt的菜单项“transfer””start zmodem upload”,花几分钟就可以把选定的文件 

securecrt 远程控制linux服务器创建目录 /tmp/upload 示意图 
传送到linux的目录/tmp/upload.在/tmp/upload 用命令 #ls ╟al 验证文件是否被正确地上传.我上传了httpd-2.0.54.tar.gz ,php4.3.11.tar.gz,j2sdk-1.4.2-01-linux-i586-rpm.bin,jakarta-tomcat-5.0.28.tar.gz ,fedora-core-1-i386.tar.gz这五个文件。 

四、安装和配置 
在配置过程中,可能要对某些配置文件多次进行修改,如apache的配置文件 httpd.c 
(一)安装 
①安装jdk:在当前目录(/tmp/upload)执行命令 
#./ j2sdk-1.4.2-01-linux-i586-rpm.bin ,输入yes 后在当前目录生成文件j2sdk-1.4.2-01-linux-i586-rpm。执行命令 #rpm ╟ivh j2sdk-1.4.2-01-linux-i586-rpm,完成后jdk就会被安装在目录 /usr/java/j2sdk1.4.2. 
②安装tomcat:在当前目录对文件解压,用命令 #tar ╟zxvf jakarta-tomcat-5.0.28.tar.gz,解压完成后生成目录 jakarta-tomcat-5.0.28,然后把这个目录移动到目录 /usr/local ,用命令 
#mv /tmp/upload/jakarta-tomcat-5.0.28 /usr/local ,安装 tomcat就算完成了。 
③安装apache:在当前目录(/tmp/upload)解压httpd-2.0.54.tar.gz,使用命令 
#tar ╟zxvf httpd-2.0.54.tar.gz ,解压完后转到目录 /tmp/upload/httpd-2.0.54,使用命令 #cd httpd-2.0.54 来进行;执行命令 #./c ╟prefix=/usr/local/apache ╟enable-module=most ╟enable-shared=max (注意prefix、enable前是两“-”),一段时间后,如果没有抱错信息出现,那么可以继续执行命令 #make ;和 #make install来完成apache的安装。 
④安装php:回到目录 /tmp/upload , #cd ..(因为刚才转到目录 httpd-2.0.54),解压文件php-4.3.11.tar.gz, #tar ╟zxvf php-4.3.11.tar.gz,解压完成后转到目录php-4.3.11, #cd php-4.3.11,执行命令 #./c ╟prefix=/usr/local/php ╟with-apxs2=/usr/local/apache/bin/apxs,完成后执行命令 #make 和 #make install 完成php的安装。这些过程完成后,会在目录php-4.3.11生成文件php.ini-dist文件,需要把这个文件复制到 #cp php.ini-dist /usr/local/lib/php.ini 。 
⑤解压fedora-core-1-i386.tar.gz:需要用解压后这个目录里的两个文件。 #tar ╟zxvf fedora-core-1-i386.tar.gz. 
安装所用命令汇总(假定当前目录为 /tmp/upload) 
#./ j2sdk-1.4.2-01-linux-i586-rpm.bin 
#rpm ╟ivh j2sdk-1.4.2-01-linux-i586-rpm 

#tar ╟zxvf jakarta-tomcat-5.0.28.tar.gz //解压文件 
#cd jakarta-tomcat-5.0.28 
# mv /tmp/upload/jakarta-tomcat-5.0.28 /usr/local 

#cd .. 
#tar ╟zxvf httpd-2.0.54.tar.gz //解压文件 
#cd httpd-2.0.54 
#./c -╟prefix=/usr/local/apache -╟enable-module=most ╟-enable-shared=max 
#make //编译 
#make install //安装 
#cp php.ini-dist /usr/local/lib/php.ini //拷贝文件 
#cd .. 
#tar ╟zxvf fedora-core-1-i386.tar.gz 
#cp fedora-core-1-i386/usr/lib/httpd/modules/*.so /usr/local/apache/modules //把模块加入到apache里 
#cp fedora-core-1-i386/etc/httpd/conf/workers. properties /usr/local/apache/c //这个文件是tomcat与apache协同工作的脚本,稍后需要对它进行修改 

# tar ╟zxvf php-4.3.11.tar.gz //解压文件 
#./c -╟prefix=/usr/local/php -╟with-apxs2=/usr/local/apache/bin/apxs //正常//完成后会在/usr/local/apache/modules 里生成文件 libphp4.so,并且会在//apache的配置文件httpd.c loadmodule php4_module //modules/libphp4.so 
#make //编译 
#make install //安装 

五、配置 
①配置 jdk : 修改环境变量文件 /etc/profile ,只需在原文件的后面加上以下几行即可。 
export java_home=/usr/java/j2sdk1.4.2 
export classpath=/usr/java/j2sdk1.4.2/lib 
用命令 #vi /etc/profile. 
修改环境变量示意图 

保存文件,用命令 #source /etc/profile 使修改马上生效。用命令 #java ╟version 检验配置的正确性。 
②配置tomcat:这个过程比较复杂,要分几步进行。 
a 修改文件 web.xml. #vi /usr/local/jakarta-tomcat/conf/web.xml ,把web.xml文件中的如下部分: 
<!-- 
<servlet> 
<servlet-name>invoker</servlet-name> 
<servlet-class> 
org.apache.catalina.servlets.invokerservlet 
</servlet-class> 
<init-param> 
<param-name>debug</param-name> 
<param-value>0</param-value> 
</init-param> 
<load- 
</servlet> 
--> 
和 
<!-- 
<servlet-mapping> 
<servlet-name>invoker</servlet-name> 
<url-pattern>/servlet/*</url-pattern> 
</servlet-mapping> 
--> 
两部分的注释去掉即可(就是把<!-- --> 去掉)。做这一步的原因是,tomcat 4.1.12以后的版本的 servlet 调用器开关在默认状态下是关闭的。 
b 修改文件 jk2.properties。#vi /usr/local/tomcat/conf/jk2.properties 
## this file may be overriden at runtime. make sure tomcat is stoped 
## when you edit the file. 

## comments will be _lost_ 

## documentation of the format in jkmain javadoc. 

# set the desired handler list 
handler.list=apr,request //去掉了前面的注释符号# 
# override the default port for the socketchannel 
channelsocket.port=8009 //去掉了前面的注释符号# 
# default: 
# channelunix.file=${jkhome}/work/jk2.socket 
# just to check if the the c is working 
shm.file=/usr/local/apache/logs/jk2.shm //手动添加的 
# in order to enable jni use any channeljni directive 
# channeljni.disabled = 0 
# and of the following directives: 

# apr.jnimodeso=/opt/apache2/modules/mod_jk2.so 
# if set to inprocess the mod_jk2 will register natives itself 
# this will enable the starting of the tomcat from mod_jk2 
# apr.jnimodeso=inprocess 

在这里可以先验证一下tomcat是否可以正常工作。启动tomcat #sh /usr/local/jakarta-tomcat-5.0.28/bin/startup.sh , 正常情况会输出tomcat 和jdk的目录。 
tomcat 启动输出示意图 

然后再在windows的计算机的浏览器里输入linux服务器的ip地址和端口号,形如:http://192.168.0.100:8080 ,如果没有意外,则可出现那只可爱的小猫。 
③配置apache:因为php和jsp都要整合在apache里(可以把apache想象成一个容器),这一步的配置过程也是很复杂的。配置前可以先验证一下apache,看它是否可以正常工作。与tomcat相试,只是不用输端口号而已,形如 http://192.168.0.100 ,如果出现apache 的测试web页面,表明一切正常。 
a 对文件workers2.properties的修改。其目的是让tomcat与apache系统工作。使用命令 #vi /usr/local/apache/conf/workers2.properties 编辑文件如下所示 
[shm] 
info=scoreboard. requried for rec and status with multiprocess servers. 
file=/usr/local/apache/logs/shm.file //这行是改动过的 
size=1048576 //手动添加的 

# defines a load balancer named lb. use even if you have machine. 
[lb:lb] 

# example socket channel, override port and host. 
[channel.socket:localhost:8009] 
port=8009 
host=127.0.0.1 
# define the worker 
[ajp13:localhost:8009] 
channel=channel.socket:localhost:8009 
group=lb 

# map the tomcat examples webapp to the web server uri space 
[uri:/*.jsp] //jsp脚本交给tomcat 解释器完成,其它的由apache处理, 如果不是这//样,就会出现/usr/local/jakarta-tomcat/webapps/root里的php脚本//不能被正确解析。感谢张炜宇在这个问题上的大力帮助。 
[uri:/servlet/*] 
[uri:/*.do] 
worker=ajp13:localhost:8009 //手动添加的 
group=lb 
[status:] 
info=status worker, displays runtime information 

[uri:/jkstatus/*] 
worker=ajp13:localhost:8009 //手动添加的 
info=the tomcat /jkstatus handler 
group=status: 
b 修改apache 的配置文件 /etc/httpd/conf/httpd.conf. #vi /usr/local/apache/conf/httpd.c , 
loadmodule jk2_module modules/mod_jk2.so //jk2以apache 的模块方式运行 
directoryroot “/usr/local/jakarta-tomcat-5.0.28/webapps/root” //默认的 
//为”/var/www/html” 
typeadd application /x-httpd-php .php3 //让apache 能解释php脚 
//本,注意.php3 前面有空格 
六、测试 
自己搞几个*.php和*.jsp文件拷贝到目录,然后分别启动apache和tomcat . 
#/usr/local/apache/bin/apachectl start //启动apache (可惜不是直升机) 
#sh /usr/local/jakarta-tomcat/bin/startup.sh //启动tomcat 

在任意计算机的浏览器地址栏输入linux的ip地址,形如 http://192.168.0.100/index.jsp , http://192.168.0.100/index.php ,如果能正常的在浏览器里显示,恭喜了!!! 



再次感谢张炜宇的大力支持。




















本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/5551 ,如需转载请自行联系原作者



相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
20天前
|
JSON Kubernetes Linux
Linux环境签发CA证书和K8s需要的证书
Linux环境签发CA证书和K8s需要的证书
23 0
|
1月前
|
存储 缓存 Linux
如何在Linux环境下对pip的缓存地址进行修改
如何在Linux环境下对pip的缓存地址进行修改
|
1月前
|
NoSQL Linux 开发工具
【Linux】环境基础开发工具的使用之gdb详解(三)
【Linux】环境基础开发工具的使用之gdb详解(三)
|
1月前
|
Linux 编译器 开发工具
【Linux】环境基础开发工具的使用之gcc详解(二)
【Linux】环境基础开发工具的使用之gcc详解(二)
|
1月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
|
7天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
20 6
|
1月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
3月前
|
应用服务中间件 Linux 网络安全
windows+linux环境下nginx部署环境
windows+linux环境下nginx部署环境
|
22天前
|
Java Linux
linux安装jdk环境
linux安装jdk环境
27 0
|
27天前
|
安全 Shell Linux
【Shell 命令集合 系统设置 】Linux 创建一个与主系统分离的独立的运行环境 chroot命令 使用指南
【Shell 命令集合 系统设置 】Linux 创建一个与主系统分离的独立的运行环境 chroot命令 使用指南
29 0