将IDEA的Springboot项目部署到Linux服务器

文章原文: 将IDEA的Springboot项目部署到Linux服务器

在前后端分离的情况下,如何单独将Springboot项目部署到服务器?以下是我的在第一次部署之后的记录和总结,希望可以帮到同样也刚刚用到服务器的你。

部署服务器主要的几个步骤:

  1. 服务器环境配置;
  2. 配置项目并打包;
  3. 部署到服务器;
  4. 后台运行项目。

服务器环境配置

服务器环境:Debian8 x64(vps)

本机环境:Mac,Intellij IDEA,FinalShell

我们需要一个SSH工具来连接到服务器,因为我使用的Mac,所以使用了FinalShell(算是好用吧)。如果安装了brew,你就可以通过brew cask install finalshell来安装FinalShell。Win用户可以使用Putty等软件。

此处假设你已会简单使用SSH,并已经连上了你的服务器。

Linux安装并配置JDK

准备

以root身份登录,因为我的vps默认就是root,所以我不用登录,如果需要的话,你可以输入su回车,然后再输入你的密码(linux输入密码不显示星号或其他替换符号),再回车即可。

确认你的系统是否自带jdk,可以通过输入:

apt-get list installed | grep java

来列举匹配已安装的java。如果没有,则继续;如果有,可以试试:

apt-get -y remove java-1.7.0-openjdk*

来卸载(因为我没有试过)。

接下来,我们新建一个目录来存放jdk。

mkdir /home/java

进入该目录。

cd /home/java

接下来的操作都是基于此路径进行,如果是存放在其他路径下,请注意对应修改。

下载压缩包

先到官网上查看需要的jdk版本,获取压缩包的下载链接,再使用命令下载
这里选用jdk8,在本地点击打开下载主页,选中Accept License Agreement,点击Linux版本的的.tar.gz文件(x64或x86视你的Linux而定,可通过uname -a命令查看,有64即可下x64版本),复制对应的下载链接,这里不需要下载,只是为了获取下载链接。

输入命令:

curl -O https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz?AuthParam=1554125860_f7bf6ea27a443245f5d1cb9fde89b37d

注意O是大写的字母。

-O 后面跟着刚才复制的下载链接,这个貌似要实时获取的链接才能下载,有AuthParam参数来校验,否则你会看到所有项都是 0 ,不会变化;出现这个情况的话,重新去点击那个文件,获取下载链接复制过来再试。

ls命令查看,可以看到当前目录下出现了一个jdk-8xxx.tar.gz文件(后缀的AuthParam=...不用管)。

解压并安装

使用命令解压(输入文件名可以输入前一部分,然后按tab键自动补全)

tar -zxvf jdk-8u201-linux-x64.tar.gz...

此时使用ls命令可以看到路径下多处了一个目录jdk1.8.0_201

检查下载下来的jdk是否正常,输入以下命令验证:

/home/java/jdk1.8.0_201/bin/java -version
/home/java/jdk1.8.0_201/bin/javac -version

如果能够正常显示jdk的版本信息,即为正常;否则,重新下载。

设置环境变量

打开/ect/profile文件,并在文件末尾添加(JAVA_HOME的值根据实际路径填写):

# set java environment
# 注意‘jdk1.8.0_201’需要根据你的实际文件夹名做出更改
export JAVA_HOME=/home/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

你可以通过以下两种方式使配置生效:

  1. 重启机器:reboot;
  2. 使用source命令:source /etc/profilesource ~/.bashrc

分别输入命令 java -versionjavac -version,若显示jdk的版本信息,说明已正确配置。

可能出现的问题

  1. 如果出现了-bash: java: command not found,检查上面的各个步骤,然后出现这个情况的,请仔细检查配置文件!以及/etc/profile的各项值是否设置正确。
  2. 如果出现了-bash: ./java: cannot execute binary file,出现这个错误的原因可能是在32位的操作系统上安装了64位的jdk,检查jdk版本和Linux版本位数是否一致。

安装Mysql|MariaDB

MariaDB 和 MySQL是一家。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

这里 安装 MariaDB 来用用,使用ssh工具连接登录上Linux。

安装MariaDB

apt-get -y install mariadb-server

安装时会让你设置数据库root用户的密码,这个密码和LInux的root用户密码是不同的。
注:在我后来又一次安装MariaDB时,直接跳过了设置密码的过程,这时密码是空的,所以之后输入密码的时候直接回车即可。关于MariaDB初始的一些配置,我在博客(点击上面的原文)里更新了,简书上懒得做更细致的更改。

Debain上MariaDB好像是自动启动的。

配置和简单使用

通过命令:

mysql -u root -p

进入,然后输入你设置的密码。

修改数据库字符集,使支持中文。先要查看数据库的原字符集设定可登录mysql后,

MariaDB [(none)]> show variables like 'char%';

可以看到:

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

默认character_set_database项不为utf8,可以通过修改/etc/mysql/my.cnf配置文件更改。在该文件的mysqld字段内加上一句character-set-server=utf8

因为我使用systemctl restart mariadb重启mariadb服务无效,所以只能通过reboot来使配置生效。

将本地Springboot项目打包

确保你的项目完整,然后在右侧(或者边栏的其他地方)的Maven Projects中选中package双击或者右键点击Run Maven Build,然后你会看到在运行框程序正在打包。打包默认是你最初建项目时选中的jar工程。

当运行框出现BUILD SUCCESS说明你的项目已经打包成功了,打包好的jar包是在项目的target文件夹下。

将本地数据库上传至服务器

我本地使用的是Mysql+Navicat Premium,如果你也是用的这个组合,那么接下来的操作会很简单。如果你没安装Navicat Premium,可以看Navicat Premium for Mac破解教程。如果是其他情况,我的文章里没有记录,请自行百度。下面是具体步骤:

  1. 打开Navicat Premium,连接到你的服务器的数据库(请注意打开服务器的3306端口);

  2. 在服务器MySQL创建一个和 要迁移数据的数据库 同名的数据库,为了方便,直接在Navicat图形界面操作(有兴趣可以在命令行操作),右键 服务器连接 -> 创建数据库 -> 输入要迁移的数据库名,字符集选择utf8 – UTF-8 Unicode -> 确定;

  3. 进行数据迁移,点击Navicat菜单栏“工具” -> 数据传输… -> 设置“源”为本地数据库“localhost”,设置“目标”为服务器数据库,选择要传输的数据库,和接收数据的数据库 -> 开始传输 -> 确定 -> 传输中… -> 关闭(这是已经传好了,别点“开始”,不然又传一次)。

部署到服务器并运行

部署Springboot项目的话就不用下载tomcat了,Springboot内嵌tomcat。如果是之后还要部署其他项目,也可提前把tomcat下了。如果你配置了安全组或者防火墙,请打开必要的端口(即项目的端口)

将生成的jar文件上传至你的服务器(可以任意位置),比如我上传至了/home下。

cd到jar文件路径下,然后使用命令:

nohup java -jar demo-0.0.1-SNAPSHOT.jar >/home/test.log>&1&

nohupjava -jar 项目名称.jar >/路径名称/输出的日志名称.log>&1&

然后可以直接在对应的端口/接口访问,也可以使用命令进行查看项目是否已经后台运行。可以使用:

ps -ef

查看进程运行的情况。

root     16974  5043  0 08:55 ?        00:00:00 bash -c export LANG="en_US.UTF-8";export LANGU
root     16979 16974  0 08:55 ?        00:00:00 sleep 1
root     16980  5049  0 08:55 pts/0    00:00:00 ps -ef
root     23904     1  0 04:23 ?        00:00:38 java -jar login-demo-0.0.1-SNAPSHOT.jar

可以看到项目的进程号23904正在运行。

如果需要停止项目的运行直接使用命令:kill 23904(进程号)

测试运行

推荐使用Postman进行端口的测试。

参考文献

  1. markix:【入门篇】篇一、Linux服务器安装Java运行环境,即安装JDK
  2. markix:【入门篇】篇三、Linux服务器安装MySQL | MariaDB
  3. markix:【入门篇】篇四、将本地Web项目部署到服务器,迁移本地数据库到服务器
  4. Box_clf:如何将IDEA的Springboot项目打包到服务器进行后台运行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容