最近需要将一个用了websocket和netty的java服务端项目放在服务器上,然后由我们的硬件设施发送数据给服务端
先匿了自己的服务器ip,就假设为128.219.147.135吧,我的服务器是Ubuntu 18.10系统
一、我们需要在远程服务器上下载jre。(jre是java程序运行时需要的环境,包含了jvm和java核心类库;而jdk是java开发的工具包,包含了jre、java工具和一些基础类库。)
1、先看一下能在你的系统中可用的openjdk包
apt-cache search openjdk
每一行代表啥就不说了,附上一张别人的注释,原网址链接原作者连接,我安装的时候看的就是这篇
2、安装jre
可以在服务器中直接输入java,如果你没有安装jdk/jre会提示你安装命令,形式和下面这条差不多
apt-get install openjdk-8-jre
安装完java可以通过命令java -version看一下版本,接下来设置一下JAVA_HOME
在设置JAVA_HOME之前需要知道java安装路径
下面这条命令需要确保在根目录下运行,cd ..多敲几遍
find -name libjvm.so 2>/dev/null
可以看到我服务器这边下载了两个版本
分别运行下列两条语句设置环境变量
echo "JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64/" >> /etc/environment
source /etc/environment
再运行下面这条语句检查一下环境变量的配置
echo $JAVA_HOME
二、将java项目打包
我用的是idea,打包的流程如下
1、打包的一些属性设置
File-Project Structure-Artifacts-点加号-jar-From modules and dependencies(如果你的程序中引入了第三方包,并且需要在项目jar包中包含引入的jar包,就需要选这个;如果没有引入第三方包或者不需要把引入的第三方包夹杂进去,可以选Empty),把你项目的mudule加进去。如下图,Output directory就是你之后打包完jar包存放的地址,Include in project build要勾上,否则接下来build module不会生成jar包,至于为啥别问,问就是不知道。
2、打包项目
Build-Build Module 项目名
就能在之前设置的Output directory下看到生成的jar包了。
3、测试(我这边的jar包叫SocketCommunication)
terminal中首先要通过cd命令进去SocketCommunication_jar目录,然后执行下列命令
java -jar SocketCommunication.jar
可以看到我的socket项目已经跑起来咯
当然有一些运行时的优化命令
方法一:&表示后台运行,ssh窗口不被锁定,但是关闭窗口程序会终止
java -jar xxx.jar &
方法二:nohup表示不挂断运行,即使关闭中断程序依然是运行的
nohup java -jar xxx.jar &
方法三:>/usr/local/temp.txt表示将所有启动时的日志都记录大temp.txt文件中
nohup java -jar xxx.jar >/usr/local/temp.txt &
岔开一下话题,如果用了nohup,如何关闭java进程呢?
查看java进程,会有端口号xxxx显示出来
ps -ef | grep java
终止进程
kill -9 xxxx
三、将jar包上传到服务器运行
1、连接到服务器之后我创建了一个demo目录,你要是想直接把jar包放在根目录也不是不可以
linux下创建目录:mkdir 目录名
删除文件:rm 文件,这个只能删除文件不能删除文件夹目录
删除目录及下所有子目录:rm -rf 目录
修改文件名:mv 旧文件名 新文件名
2、接下来就是通过scp命令上传了
scp 文件目录 服务器用户名@服务器ip:服务器目录
以我的目录服务器举例,注意到下面的 /* 了吗,这条命令会把SocketCommunication_jar目录下的所有子目录都上传上去
scp /Users/***/IdeaProjects/WebPro/out/artifacts/SocketCommunication_jar/* root@128.199.170.175:/demo
上传完成可以通过ls命令看一下,可以看到我demo目录下已经有这些文件了
3、服务器上执行之前的java -jar命令运行jar包即可
over!这时候就可以通过公网ip访问你的项目啦
参考的大佬文章
https://www.linuxidc.com/Linux/2017-11/148941.htm
还有很多找不到了,感谢