安装了阿土14.10(启动盘报gfxboot.c32:not a COM32R image,网上查得输入live,果然可以,对此解决方式只能说),想装一个java servlet的环境,下载了eclipse,通过apt-get install安装了tomcat和open java。但是在运行时,Run On Server中Server Name无法显示,导致无法运行。根据网上的指引,删除了<工作项目>/.metadata/.plugins/org.eclipse.core.runtime/.settings/里面的org.eclipse.jst.server.tomcat.core.prefs和org.eclipse.wst.server.core.prefs。这实际就是坑爹的开始。删除之后,确实可以出现Server Name了,但是一运行就报诸如Could not load the Tomcat server configuration at /Servers/Tomcat v8.0 Server at localhost-config. The configuration may be corrupt or incomplete.这类的错误。在网上查资料,由于已经坑爹地删除了这两个文件,实际上问题不断。
下面说明解决的方式,以及寻找解决方式的过程。
在/usr/share/tomcat8的目录下,运行bin/startup.sh,即启动tomcat,不在Eclipse中启动,因为这里可以看到详细的错误说明:
Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
touch: 无法创建"/usr/share/tomcat8/logs/catalina.out": 没有那个文件或目录
./catalina.sh: 399: ./catalina.sh: cannot create /usr/share/tomcat8/logs/catalina.out: Directory nonexistent
这里就很清楚了,tomcat的logs目录不对,经查tomcat的目录安装在/var/log/tomcat8,因此:
ln -s /var/log/tomcat8 logs
然后继续运行运行bin/startup.sh,结果如下:
wei@wei-OptiPlex-755:/usr/share/tomcat8$ bin/startup.sh
Using CATALINA_BASE: /usr/share/tomcat8
Using CATALINA_HOME: /usr/share/tomcat8
Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
touch: 无法创建"/usr/share/tomcat8/logs/catalina.out": 权限不够
bin/catalina.sh: 399: bin/catalina.sh: cannot create /usr/share/tomcat8/logs/catalina.out: Permission denied
这时,如果用sudo来开启就可以成功,说明剩下的权限问题,如果我们用sudo来开启elipse的话估计也时可以的。下面解决权限问题。在/var/log/tomcat8路径下,执行$ sudo chmod 666 *,然后回到原来的tomcat路径,执行/var/log/tomcat8,发现已经可以正常运行了:
wei@wei-OptiPlex-755:/usr/share/tomcat8$ bin/startup.sh
Using CATALINA_BASE: /usr/share/tomcat8
Using CATALINA_HOME: /usr/share/tomcat8
Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
Tomcat started.
我们将其关闭bin/shutdown.sh。然后开启Eclipse,就整个过程流程。要注意的是之前的工作项目/中已经删除了两个文件,因此我们要重写开一个新的工作项目,这样就一些正常了。
这个问题是ubutu安装tomcat的位置参数以及权限所导致,另一种解决方式是在到tomcat网站上下载tomcat,直接解压。
安装之后tomcat是自动开启的,这导致每次调测的时候都需要人工去shutdown,不方便,可以执行update-rc.d -f tomat8 disable|enable。
倒腾这个,主要是要速成学习servlet,要决定一个系统的架构,需要了解一下servlet的能力。视频学习还是蛮快的,速成完毕,贡献一把学习成果。直接在代码中加入笔记。
1、Servlet速成学习
我们可以通过Eclipse上面运行我们的web 应用,但是这属于开发环境的调测,最终我们要部署到生产环境上。我们要将内容部署到tomcat-dir/webapps/XXX,XXX就是我们的Web应用路径,例如tomcat-dir/webapps/MyServletStudy,我们可以直接将开发目录中的webContent中copy过来,将目录名字修改为项目的名字。此外,还需要将开发目录下build/classes目录copy过来,放为tomcat-dir/webapps/XXX/WEB-INF/classes。
如果我们重启tomcat,web应用就可以部署上去,但是如果tomcat上已经有正在运行的web应用,不可能允许我们重启或关闭的。我们需要使用http://tomcat-ip:port/manager下的应用管理,将新应用加上去,然后start。
配置manager有两个地方,一是conf/tomcat-users.xml文件中,加入管理账号,如下:
<role rolename="manager-gui" />
这样,所有的地址都可以访问,显然不够安全吗,需要限定IP地址,最好是localhost,即127.0.0.1才具备访问权限,进入conf/server.xml,在<host>内添加:
<Context path="/manager" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" />
</Context>
只有本机才能方位,以此提高安全性。 其他机器访问回复403。