您的位置:首页 > 编程语言 > Java开发

Ubuntu64位下搭建javaWeb小型服务器

2017-06-29 16:46 225 查看
昨天花了28元在腾讯云买了一个12元主机加15元域名,很奇怪就多多付了1元,这不是我们今天的重点,重点是我今年来讲解一下在Ubuntu图下搭建小型javaWed服务器所遇到的坑和自己的一些想法。

首先,我们还是要搭建一个javaWeb小型服务器运行环境,即我们java开发者常说的JDK[Java Develoment Kit]  java开发包集合 。在安装JDK之前,

我们首先要登上腾讯云主机,读者可以使用网页登陆云主机,也可以使用第三方软件登陆云主机,在这里笔者选的是第三方软件Xshell 5,读者可在Xshell的官网下载和安装。安装完成之后,接下来就是怎么使用Xshell 5登陆云主机了











        至于怎么安装JDK,读者课开我这一片博文Linux(Ubantu)下安装java jdk1.8.0_131

在读者看着这篇博文之后,笔者要做一些简单的介绍。

1:我们使用命令行来下载JDK

wget -c "JDK地址"

例如 wget -c http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
我安装JDK的博文中,读者就会知道,.deb文件时Ubuntu官方文件格式,需要把 .rpm 转化成 .deb 文件,接着安装  .deb 文件,在转化成 .deb文件和安装 .deb文件这两个过程中,因为一些  .pack 文件未完全转化为 .jar 文件,所以读者[包括笔者]会遇到一些奇奇怪怪的问题[当然这是基于你环境变量配置正确的条件下]。至于为什么有些
.pack文件没有转化为 .jar文件和 为什么要转化为 .jar文件,在这里笔者不想去深究,毕竟这不是我们的重点,我们的时间和精力时有限的[稍微感慨一下],需要了解的读者请自行研究。

比如在安装JDK那篇博文中,笔者就提到过Error occurred during initialization of VMjava/lang/NoClassDefFoundError:java/lang/Object这个异常,其实就是usr/java/jdk1.7.0_60/jre/lib
的rt.pack 和/usr/java/jdk1.7.0_60/lib 下的tools.pack 这两个 .pack 文件未能转化成 .jar文件,所以需要我们手动转化,在转化之前我们先把用户态切换到root态,以便获取root权限,命令行为 : sudo su 或 sudo su - root 。切换为root太之后,我们分别在相应的文件夹输入这句命令行: unpack200
tools.pack tools.jar  unpack200 rt.pack rt.jar ,把相应的
.pack 转化成 .jar 包 。如果读者不心急,细心观看的话,就会发现这两个文件夹下面会有好些 .pack 包没有转化成 .jar 包,建议初学的读者都转化成 .jar包,避免出现很多奇怪甚至很玄学的问题。

2:安装tomcat

和安装jdk一样,读者可以选择命令行来下载 tomcat 。因为笔者买的腾讯云主机配置比较低,还限制网速,在云主机上下载文件很慢,所以笔者使用第三方软件把在本地下载好的文件上传到服务器上,服务器非root态下允许上装的文件加为 ubuntu/home [腾讯云主机名/home] ,不同主机可能不一样。在这里笔者所使用到的软件时Xftp 5,笔者可自在Xftp的官网下载

怎么是使用Xftp 5呢,读者请看下面两张图片





安装配置Tomcat:大家可看这篇文章Tomcat7安装配置
for Ubuntu

把tar压缩包解压

tar -zxvf apache-tomcat-7.0.52.tar.g

把解压的文件移动到tomcat文件夹

mv apache-tomcat-7.0.52 tomcat

把tomcat文件移动到local文件夹

sudo mv tomcat7 /usr/local/

编辑文件【可用gedit命令,前提是你要安装该软件,安装: sudo apt-get remove gedit ,卸载:sudo apt-get install gedit 或者使用vi或vim 】

[退出命令 先按 esc ,退出编辑状态,输入 : :wq ,表示保存编辑的文件再退出 , :q! 表示不保存编辑文件就退出 , 进入编辑状态的命令: i ]

sudo gedit /etc/profile 或 sudo vi /etc/profile

再文件的末尾输入下述代码

#set tomcat environment
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME

退出编辑状态,保存文件退出。

修改catalina.sh文件

cd /usr/local/tomcat/bin

vi catalina.sh

再文件的末尾输入下述代码

CATALINA_HOME=/usr/local/tomcat7
JAVA_HOME=/usr/java/jdk1.7.0_25

退出编辑状态,保存文件退出

运行 start.sh文件

cd /usr/local/tomcat/bin

./startup.sh



从反馈的信息来看,tomcat貌似已经成功启动了,我们的本地主机输入: 外网ip:8080 ,但是很奇怪,访问不了tomcat的首页。

从上面截图从我们明明看到Tomcat started,说明tomcat已经启动过[是不是成功启动了呢?还是启动到一半因为某些原因而启动不成功呢],

那为什么我们访问不了,这是不是玄学。其实这是因为启动过程中因为某些原因而导致tomcat没有成功启动,导致出现404等界面

我们看看tomcat的日志吧,看看日志能不能给我们提供一些有用的信息

cd/usr/local/tomcat/logs

vi catalina.out

看看catalina的给我们哪些信息

Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:982)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:620)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:997)


很明显,提示我们端口被占用,那我们看看那些进程再运行,占用了8080端口

查看启动进程
ps -a



杀掉进程[读者可以看这篇文章Ubuntu终止进程的方法(kill、pkill、killall)]
kill [信号代码] 进程ID
kill -9 13032

导致多个java进程的原因是 ./startup.sh 启动tomcat次数过多,而没有shutdown.sh 关闭tomcat,事实告诉我们,启动和关闭应该成对出现。

解决了这个异常之后,我们接着看catalina给我们的信息

java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1144)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.lang.Thread.run(Thread.java:748)
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:443)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1588)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:339)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at sun.security.provider.SecureRandom.init(SecureRandom.java:108)
at sun.security.provider.SecureRandom.<init>(SecureRandom.java:79)
at java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:198)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
... 4 more
Caused by: java.security.NoSuchAlgorithmException: SHA MessageDigest not available
at java.security.MessageDigest.getInstance(MessageDigest.java:167)


针对这个异常,笔者再往上百度了好久,说法各有不同。反正笔者找到这篇文章是比较有用的

java.lang.InternalError: internal error: SHA-1 not available  Ubuntu 12.04 安装Tomcat 与 eclipse

上面笔者曾提到过,把 .pack 文件转化成 .jar 文件,而这个错误也是因为 jsse.pack 没有转化成 jsse.jar文件,转化一下就可以了



当然,这对这个问题是众说纷纭,有兴趣的读者可以看看这几篇文章

Tomcat
7 fail to start giving exception: java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available


debian下java的web环境搭建(tomcat+jdk)遇到的版本问题

 ubuntu中启动tomcat,显示404或者503

OpenJDK 1.6
and SecureRandom/KeyGenerator (what is available?)




最后附上一张笔者成功运行Tomcat的图哈

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: