Srpingboot项目的构建
这边是上一篇文章的传送门,如果你感兴趣的话可以去看一看呢:传送门へ
继续上回书说到,我终于在服务器上安装并且调通了tomcat的测试界面,今天需要做的工作就是把项目上传到服务器。
至于项目。。
公司的负责人告诉我这个是Springboot框架写出来的东西,那么就先找一找怎么用吧。。
Google到了各种各样的方法,好像大多数的文章都是要是用IDEA去弄,但是仔细一看,大多数都是如何从0开始来编写一个项目。但是我手里的这个文件是一个完整的项目文件,并且我因为曾经用IDEA时候受过伤,所以就卸载了,我不想再次安装回来。
根据这篇文章^L1,我发现好像只要把文件达成jar包,直接丢到服务器上就可以了。
那么问题来了,怎样打包呢?反正我是真的不想用IDEA,所以。。只好另辟他境了
因此我又找到了一篇文章^SpringBoot项目打包并部署到云服务器,这里描述的方法非常简单
仅需要使用一条命令即可。
1 | mvn clean package |
由于我的笔电没有安装相应的环境,而且我又害怕破坏好不容易配置好的服务器。。于是我又将魔爪伸向了我的Ubuntu虚拟机。
在执行过程中,我发现了问题
1 | [ERROR] COMPILATION ERROR : |
注:上边*******
部分为我故意隐藏了本机真实目标地址所修改的,并不代表其输出时的样子。。算了,我还是再放一张截图吧
难道是我没有使用IDEA,maven不乐意了?
于是我又去Google和很久,找到了这篇文章[^L2]
虽然这篇文章是对于IDEA报错的解决方式,但是我坚信可以用于安抚我这位大哥。
诶不对,等会儿。。IDEA也可能会出现这种问题? 啊哈!原来不是我惹大哥生气了
根据这篇文章解决办法,那就是引入servlet-api.jar
包就可以了。。
但是我不是IDEA啊!不能直接引入这个包啊
然后我又看到了这篇文章^L3,根据文章描述的内容,我将下边内容在项目的.pom文件中的添加dependency属性(先不要动手,往下看)
1 | <groupId>javax.servlet</groupId> |
然后再次运行mvn clean package
命令,结果又双叒叕报错了
1 | [ERROR] The project (/home/*******/*******/*******/pom.xml) has 1 error |
我发现这个81行貌似是我刚刚加入的那个内容。。
于是我苦苦研究了很久,才发现这个作者提供的内容并不全面,应该粘贴入如下部分的代码。
1 | + <dependency> |
直接按照文章的指示,粘贴到对应的pom.xml
文件的相应位置即可。
于是再次执行mvn clean package
命令,终于看到了黎明前的曙光了(好像有哪里不对
看到没有红色的ERROR之后,我送了一口气。。等会儿!war是什么东西,不应该是jar么?(这张图的红色部分是我的项目名称,不是所谓的红色的ERROR
)
根据这篇文章^L4,发现war包也是可以轻松部署的
War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。
当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布。
War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压。
一句话来说,把生成的war包放到/opt/tomcat/webapp/
文件夹中就可以直接通过IP:port/ProjectName/
进行访问了。举个例子,将projectName.war包,复制到Tomcat的webapp下。这样当配置好后的访问路径便为:http://ipaddress:8080/projectName/login.jsp。
于是把这个文件先放到虚拟机的/opt/tomcat/webapp/
文件夹中,然后访问http://192.168.203.131:8081/Demo/。。。
成功!
我太不容易了,终于弄明白大概方向了。
那接下来的工作就是把源文件放到服务器上生成war包,然后再放到tomcat目录中。。
等一下,既然tomcat只读取war包的内容,我何必再生成一边呢,直接扔war包上去不就行了?
我好聪明(已经傻掉了,明明应当早就想明白的说)
于是扔到服务器上。。关键是怎么传上去呢。。用ftp?太麻烦
这时,我突然想到原来折腾路由器的时候,用了一款叫做WinSCP
的应用来修改的hosts文件。就像访问windows下的资源管理器一样可以拥有各种各样的文件管理功能。。下载地址:WinSCP
这个官网有一点迷的就是,写着是无料的软件,但是如果使用Get it from Microsoft
方式进行下载的话,需要$9.99。。。有点迷⊙(・◇・)?
既然梅林也是基于linux,ubuntu也是基于linux,那应该可以诶!我太机智了
试了一下,竟然真的可以!
那就方便多了。。
直接开启两个连接,一个连接服务器,一个连接虚拟机,直接把虚拟机的war包文件复制粘贴到服务器的相应位置。。
然后尝试访问http://hostname:8081/projectName/,成功了!!
那么就完成了!
于是我尝试登陆,发现点击登录没反应。。。
这时候才意识到,我竟然没装数据库,能有反应才怪了
那么接下来就是装数据库了
既然如此,我还是用我最熟悉的MySQL
好了
比起windows我更喜欢linux的原因就是安装各种东西可以直接一条命令安装好
然后网上随便找了一下,ubuntu安装mysql^L5,想着1分钟安装完成后赶快配置项目
直接
1 | 命令1 |
下载完成后,使用sudo mysql_secure_installation
命令初始化mysql
1 | weison@ubuntu19-04:~$ sudo mysql_secure_installation |
根据这个配置完成之后,我发现自己选错了,那个密码强校验我选择了Y
结果因为这个我完全没有办法创建远程账户
如果你不幸和我一样选择了Y for yes
继续跟着刚刚的教程操作
因为MySQL默认无法通过远程去连接,而我需要远程来管理,所以我要进行如下设置
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root'; |
于是又一次报错了
1 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'root'' at line 1 |
根据这篇文章[^L7]的描述,MySQL8不再支持GRANT
命令,我需要使用
1 | mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root'; |
进行配置
顺便一提,'root'@'%'
中root代表创建一个新的用户名叫做root的用户,%代表可以通过任意ip地址进行访问。
如果你这里报错
1 | ERROR 1819 (HY000): Your password does not satisfy the current poli |
那么恭喜你,请点击上边的你可以点击这里查看解决方法
按钮,更换一下安全等级为LOW
就可以了(大概)
于是,再都配置好之后,我打开了Navicate
,尝试连接数据库,却发现又报了一个错误。。
根据这篇内容[^L8],可以尝试使用下边三行命令配置远程用户
1 | USE mysql; |
其中ipReplace
替换成你Navicat所在机器的ip地址,如果想全局访问的话,请将其替换为%
其中pwd
替换为名称为root
的用户的访问密码(root
名称也可以改变)
然后再次尝试使用Navicate
进行连接,成功了!
于是也到时间下班了hhhhhh
又愉快滴度过了一天
[^L2]: IntelliJ IDEA 出现" java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.annotation"等错误:https://blog.csdn.net/wust_lh/article/details/73469789
[^L7]: How to grant all privileges to root user in MySQL 8.0: https://stackoverflow.com/questions/50177216/how-to-grant-all-privileges-to-root-user-in-mysql-8-0
[^L8]: navicat 连接 mysql 出现Client does not support authentication protocol requested by server解决方案:https://blog.csdn.net/u013700358/article/details/80306560
在服务器中住着的AKI娘会检测您的输入内容哦, 如果被判断为垃圾内容是看不到的呢!当然抹茶也会定期检查AKI娘的所作所为的!