LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1780|回复: 9

让Debian服务器支持jsp程序

[复制链接]
发表于 2008-10-13 14:21:58 | 显示全部楼层 |阅读模式
我用Debian架好了Apache2+PHP5+MySQL5环境,一朋友把他的网站移过来,我倒,竟然用的JSP的程序架的。得,要快点支持jsp。偶以前没弄过,找了N多资料(先鄙视一下那些垃圾站,抓文章都抓的不完整,让人没法看,Y的还把排名弄得这么前,害人命啊。弄垃圾站你也要弄得专业点嘛!)都让我看得头大。最后参考了N多资料把这tomcat给弄起来了。其实也很简单,为什么有人非写得那么复杂,让我一看就不愿意试。没办法,我只好先弄好之后写上一篇,方便自己。

一、安装jdk6

[PHP]$ sudo aptitude install sun-java6-jdk[/PHP]

设定一下环境变量JAVA_HOME,很多人在/.profile或~/.bashrc中加一堆东西。烦,我还是加在environment中好。
[PHP]$ sudo vim /etc/environment
JAVA_HOME=/usr/lib/jvm/java-6-sun[/PHP]

二、安裝tomcat6

本想安装源里的,后来一看有点老,而且安装最新的也不麻烦。就安装最新的吧。

Apache Tomcat 主页地址:
http://tomcat.apache.org/
下载地址:
http://tomcat.apache.org/download-60.cgi

[PHP]#下载最新的版本:apache-tomcat-6.0.18
$ wget -c http://apache.freelamp.com/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz
$ sudo tar zxvf apache-tomcat-6.0.18.tar.gz #解压缩
#移动到 /usr/local 下,这是本地系统管理员用来自由添加程序的目录。
$ sudo mv apache-tomcat-6.0.18 /usr/local/tomcat6   # 重命名新的tomcat6文件夹
$ chmod 755 /usr/local/tomcat6/bin/*.sh  #给.sh文件加个执行权限
#添加一个独立运行此服务的用户tomcat,登陆设置为nologin。防止他拥用root权限给系统带来安全隐患。我们用下面的命令:
$ sudo useradd -d /usr/local/tomcat6 -s /usr/sbin/nologin tomcat
#设置用户tomcat对tomcat的权限
$ sudo chown -R tomcat:tomcat /usr/local/tomcat6[/PHP]

如果不想每次进系统还需要手动启动tomcat,就可以在/etc/init.d/加个tomcat来用。
[PHP]$ sudo vim /etc/init.d/tomcat

# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid
export JAVA_HOME=/usr/lib/jvm/java-6-sun
case $1 in
start)
        sh /usr/local/tomcat6/bin/startup.sh
        ;;
stop)  
        sh /usr/local/tomcat6/bin/shutdown.sh
        ;;
restart)
        sh /usr/local/tomcat6/bin/shutdown.sh
        sh /usr/local/tomcat6/bin/startup.sh
        ;;
esac   
exit 0[/PHP]

编辑好文件保存后,再给文件加个权限。

[PHP]$ sudo chmod 755 /etc/init.d/tomcat[/PHP]

再给系统启动目录中加上软链接,rc1.d目录中的打头字母用K,rc2.d目录中用S,因为系统先执行K再执行S。
[PHP]$ sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat;
$ sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat;[/PHP]

这样你就可以通过 /etc/init.d/tomcat start/stop/restart 来控制了。

[PHP]$ sudo /etc/init.d/tomcat start
Using CATALINA_BASE:   /usr/local/tomcat6
Using CATALINA_HOME:   /usr/local/tomcat6
Using CATALINA_TMPDIR: /usr/local/tomcat6/temp
Using JRE_HOME:       /usr/lib/jvm/java-6-sun[/PHP]

看到有这四行,就说明tomcat6配置好了。

三、mod_jk的安装

经过上面两个步骤后,apache跟tomcat应该都可以正常执行了,只是两个互不认识,所以要把他们连在一起还要个mod_jk。你也可以到这里下载 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/ 合适的版本。

当然最简单的方法就是用Debian系统源里的版本。
[PHP]$ sudo apt-get install libapache2-mod-jk[/PHP]

1、请注意以下目录及档案,将来要修改时比较清楚要改哪

[PHP]/usr/lib/apache2/modules/mod_jk.so  # 链接模块
/usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf  #配置模版文件
/etc/libapache2-mod-jk/workers.properties[/PHP]

2、好了,先查看一下Apache2 模块文件夹下有没有jk.load文件。没有就建一个。

[PHP]$ cat /etc/apache2/mods-available/jk.load
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so[/PHP]

3、然后将/usr/share/doc/libapache2-mod-jk/httpd_example_apache2.con内容直接copy到/etc/apache2/httpd.conf中,看着文字一大堆,大多数都是注释,删除注释,只有五行,把这五行字加入httpd.conf中。基本上除了JkMount要改的外,应该没什么要更动的,这里我用默认的就行了,什么也没改。

[PHP]$ sudo vim /etc/apache2/httpd.conf

JkLogFile       /var/log/apache2/mod_jk.log
JkLogLevel      info
JkMount /*.jsp ajp13_worker
JkMount /*/servlet/ ajp13_worker
#JkUnMount /servlet/*.gif ajp13_worker[/PHP]

4、查看workers.properties 文件,注意workers.tomcat_home这行,如果不是你安装Tomcat6的目录,就改一下,其他的不要改动。

[PHP]$ cat /etc/libapache2-mod-jk/workers.properties

workers.properties -
workers.tomcat_home=/usr/local/tomcat6   #这一行是tomcat服务器地址
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker[/PHP]

四、Apache2的配置

本来不想说Apache2配置的,因为我想省点事,没有配置虚拟主机中Alias 中7行,最后只能输入:8080才能看到JSP程序。最后加上就没问题了。JSP也可与PHP等一起共用80端口。

1、开启 NameVirtualHost开关选项,在httpd.conf中增加。
[PHP]$ sudo vim httpd.conf
NameVirtualHost *:80[/PHP]

这里要注意一点,在虚拟主机的配置中指定端口和不指定端口混合使用是不支持的。

2、在dir.conf文件中加入index.jsp,你的Apache就支持.jsp程序了。

[PHP]$ cat /etc/apache2/mods-available/dir.conf
<IfModule mod_dir.c>
     DirectoryIndex index.html index.htm index.shtml index.php index.cgi index.jsp
</IfModule>[/PHP]

3、配置你的虚拟主机,下面是一个样例:

[PHP]<VirtualHost *:80>
ServerName www.examples.com
ServerAlias examples.com
ServerAdmin examples@gmail.com
DocumentRoot "/var/www/examples/htdocs/"
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/examples/htdocs/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/examples/cgi-bin/
        <Directory "/var/www/examples/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/www/examples/log/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/www/examples/log/access.log combined
        ServerSignature On
       
        Alias /docs "/var/www/examples/htdocs/"
        <Directory "/var/www/examples/htdocs/">
            Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>

</VirtualHost>[/PHP]

这里请注意配置里 Alias /docs "/var/www/examples/htdocs/" 开始的这7行。
在虚拟主机配置里一定要加上。否则,你只能http://localhost:8080才能看到界面了。
在网上看到有N多人把 /usr/local/tomcat6/tomcat6/conf/server.xml 文件中tomcat 8080端口改成80,可能就是虚拟主机配置省了这段。

4、编辑 /usr/local/tomcat6/conf/server.xml 在里面加入一行。

[PHP]$ sudo vim /usr/local/tomcat6/conf/server.xml

<Context path="" docBase="/var/www/examples/htdocs/" debug="0" reloadable=" true" />[/PHP]

5、设置Tomcat管理员帐号
Tomcat的用户帐号信息都保存在tomcat-users.xml的文件中。在</tomcat-users>的标签前添加一行。

[PHP]$ sudo vim  /usr/local/tomcat6/conf/tomcat-users.xml
<user username="用户名" password="密码" roles="admin,manager"/>[/PHP]

最后都重启一下:

[PHP]$ sudo /etc/init.d/tomcat restart
$ sudo /etc/init.d/apache2 restart[/PHP]
发表于 2008-10-14 10:17:52 | 显示全部楼层
挺好的资料,学习!
回复 支持 反对

使用道具 举报

发表于 2008-10-17 15:25:52 | 显示全部楼层
这样不一定行,java的宗旨是:一处编写,多出调试。
要修改程序或程序的war包的
回复 支持 反对

使用道具 举报

发表于 2008-10-18 21:37:22 | 显示全部楼层
要是哪天直接 apt-get install apache-jdk-tomcat 一个命令能安装出能支持php和jsp的网页就好了,呵呵~~~
回复 支持 反对

使用道具 举报

发表于 2008-10-21 10:05:20 | 显示全部楼层
很详细!多谢楼主
相信也花了不少时间,能为更多朋友提供便利的参考
回复 支持 反对

使用道具 举报

发表于 2009-5-8 15:41:02 | 显示全部楼层
很棒很认真很细致,非常非常值得感谢的人。谢谢您的好文。
回复 支持 反对

使用道具 举报

发表于 2009-7-2 17:10:50 | 显示全部楼层
我添加了一虚拟主机,但jsp依然是无法解析啊。
8080倒是可以访问。在host文件中添加了解析,不知是否可行

<VirtualHost *:80>
ServerName abc.com
ServerAlias abc.com
ServerAdmin abc@gmail.com
DocumentRoot "/var/www/abc/htdocs/"
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/abc/htdocs/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /var/www/abc/cgi-bin/
    <Directory "/var/www/abc/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/www/abc/log/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/abc/log/access.log combined
    ServerSignature On
     
    Alias /docs "/var/www/abc/htdocs/"
    <Directory "/var/www/abc/htdocs/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>
回复 支持 反对

使用道具 举报

发表于 2009-7-2 18:23:15 | 显示全部楼层
我不喜欢用Debian和Ubuntu Server源里的Tomcat6,因为把binary和配置文件分开,配置文件在/etc/tomcat6下,很不习惯。

和楼主一样还是自己从Apache下,然后改一下源里的tomcat的启动脚本比较好。

现在用一个Ubuntu Server跑Tomcat,跑了一个Confluence和JIRA,很稳定,都快2年半了;-)
回复 支持 反对

使用道具 举报

发表于 2009-7-2 22:22:21 | 显示全部楼层
与你相反,最反感的就是不把配置文件放在/etc下。。。

Post by 至尊宝;2002992
我不喜欢用Debian和Ubuntu Server源里的Tomcat6,因为把binary和配置文件分开,配置文件在/etc/tomcat6下,很不习惯。

和楼主一样还是自己从Apache下,然后改一下源里的tomcat的启动脚本比较好。

现在用一个Ubuntu Server跑Tomcat,跑了一个Confluence和JIRA,很稳定,都快2年半了;-)
回复 支持 反对

使用道具 举报

发表于 2009-7-3 08:20:59 | 显示全部楼层
Post by tjpm;2003056
与你相反,最反感的就是不把配置文件放在/etc下。。。


我只是针对Apache Tomcat说,因为考虑到跨平台,跨OS迁移方便,当然是下个core的压缩包直接用方便而不去用Debian官方源里面的包。Production的系统不可能频繁升级所以手动去作升级也不麻烦,另外也不能指望你的同僚个个都是*NIX高手不是么?

怪我没说清楚:yun:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表