Ubuntu Linux 上安装TomCat的过程

1. 从TomCat官网上下载二进制安装包,http://tomcat.apache.org/download-70.cgi。我下载到是apache-tomcat-7.0.39.tar.gz。

2. 我按照这里http://www.linuxidc.com/Linux/2011-08/40787p2.htm所讲的来安装到。

3. 将apache-tomcat-7.0.39.tar.gz拷贝到Home目录下。

4. 启动Root Terminal,输入超级用户密码。

5. 在/usr/local下面创建一个webserver的文件夹,用mkdir -p /usr/local/webserver/。

6. 解压安装包到webserver目录下:tar xvzf apache-tomcat* -C /usr/local/webserver/

7. cd到webserver目录下: cd /usr/local/webserver/

8. 将安装目录改名为tomcat: mv apache-tomcat-7.0.39 tomcat。

9. 启动tomcat: /usr/local/webserver/tomcat/bin/startup.sh

10. 打开网页浏览器,键入http://localhost:8080,能看到Tomcat的页面,表示安装成功。

11. 停止tomcat: /usr/local/webserver/tomcat/bin/shutdown.sh,重新在浏览器中键入http://localhost:8080,发现网页出不来了!

12. 添加Tomcat管理账户:键入以下命令 gedit /usr/local/webserver/tomcat/conf/tomcat-users.xml。在文本中写入如下内容:

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

13. 启动tomcat,在浏览器中键入http://localhost:8080,然后点击Manager App按钮,此时则会提醒你输入用户名和密码,输入admin和admin,你就会看到所要管理到内容。

14. 下面讲解以守护进程运行tomcat。

15. 因为下面要用到JAVA_HOME, CATALINA_HOME等环境变量,我们要设置它。

16. 修改环境变量:gedit /etc/environment,然后在文本中加入如下内容:

JAVA_HOME="/usr/lib/jvm/java-6-openjdk"

CATALINA_HOME="/usr/local/webserver/tomcat"

17. 保存文件之后,在Root Terminal中输入ctrl+C结束gedit,然后键入source /etc/environment使环境变量生效。你可以直接键入$JAVA_HOME来查看它是不是存在并等于你之前所设的值。

18. 根据http://tomcat.apache.org/tomcat-7.0-doc/setup.html所指示:

cd到$CATALINA_HOME/bin: cd $CATALINA_HOME/bin。

解压commons-daemon-native.tar.gz:tar xvfz commons-daemon-native.tar.gz。

19. 然后cd commons-daemon-1.0.x-native-src/unix 进入unix目录,我们下一步是要生成jsvc程序。

20. 执行 ./configure,然而给我报错说JAVA HOME没定义,实在搞不清楚为什么,不得已重新用 ./configure --with-java=/usr/lib/jvm/jdk1.6.0_41,终于成功了。

21. 执行make,成功以后会看到在unix目录下有一个jsvc程序。

22. 拷贝jsvc到tomcat/bin目录下:cp jsvc ../..

23. cd到bin目录:cd ../..

24. 利用下面到命令可以使tomcat以守护程序运行:

cd $CATALINA_HOME

./bin/jsvc -cp ./bin/bootstrap.jar:./bin/tomcat-juli.jar \

-outfile ./logs/catalina.out -errfile ./logs/catalina.err \

org.apache.catalina.startup.Bootstrap

可是我得到到是Segmentation fault,晕倒了!

25. http://tomcat.apache.org/tomcat-7.0-doc/setup.html上还有一段话: The file $CATALINA_HOME/bin/daemon.sh can be used as a template for starting Tomcat automatically at boot time from /etc/init.d with jsvc. 也就是说用deamon.sh也可以实现以守护进程启动Tomcat。于是我尝试在root terminal中运行 ./bin/daemon.sh start,结果发现还是提示JAVA_HOME不存在,不得已用 export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_41来设定JAVA_HOME。后来我发现这篇文章比较正确的描述了如何蛇者环境变量 - http://stackoverflow.com/questions/6477415/how-to-set-java-home-in-ubuntu。用它设置JAVA_HOME,在~/.bashrc里面设置环境变量,重启机器,成功了!

26. 继续运行./bin/daemon.sh start,结果提示Invalid user name 'tomcat' specified。我找到了这篇文章http://hi.baidu.com/xucha00/item/578bcc3c7ce88a23b2c0c53e。但是我没这么做,我准备增加一个用户tomcat去运行tomcat,因为官网上说:jsvc has other useful parameters, such as -user which causes it to switch to another user after the daemon initialization is complete. This allows, for example, running Tomcat as a non privileged user while still being able to use privileged ports. Note that if you use this option and start Tomcat as root, you'll need to disable the org.apache.catalina.security.SecurityListener check that prevents Tomcat starting when running as root. 于是我添加了一个新的tomcat用户,如下:

添加一个系统用户tomcat,并且设置为不可登录系统:useradd -d /usr/local/webserver/tomcat -s /usr/sbin/nologin tomcat

设置用户tomcat对tomcat目录的访问权限:chown -R tomcat.tomcat /usr/local/webserver/tomcat/

27. 所有到似乎都成功了,于是我启动 ./bin/daemon.sh start,结果是"Segmentation Fault",妈的,怎么回事,搞不懂了!