部署war包到阿里云服务器

经过两天的折腾, 终于把 Java web 项目部署到阿里云服务器了。
网上的教程有些太老了,现在整理下新的东西,下面来讲讲踩坑的过程。

配置清单

  1. web 开发软件:Intellij idea 2018
  2. 阿里云服务器:Windows 8
  3. MySQL:5.1.6
  4. Tomcat:8.5

一、使用 intellij idea 打包 web 项目

1、点击菜单栏 File->Project Structure

2、依次点击如下图:

注:如果第二步中没有 For xxxxxx,那就是你之前没有配置过Web Application:Exploded,先进行配置,再做第二步即可,name 自行命名,Output directory 指定 war 包的输出路径,最后点击 OK,回到代码界面。

部署war包到阿里云服务器

3、点击菜单栏 Build->Build Artifacts->选择刚添加的Artifacts->build

4、在工程的 /out/artifacts/xxx/ 目录下就可以看到打包好的 war 文件

二、服务器安装MySQL、Tomcat

这里不进行讲解,安装方法网上很多

需要注意的是: 安装 MySQL 过程中,选择密码验证方式时,最好选 5.x.x 那个,因为新引入的密码验证方式很坑,安装好 MySQL 后,连接数据库还需要再修改用户密码,如果使用 5.x.x 的验证方式,直接就可以连接了。

三、部署 war 包到服务器

1、将 war 包放在 Tomcat 的 webapps 目录下

2、启动 Tomcat 服务器,此时,会自动解压 war 包

3、访问 API 接口,格式如下:

http://xxx.xxx.xxx:8080/刚解压的war包文件名/path

xxx.xxx.xxx 是你云服务器的公网 IP,端口号 8080 默认关闭,需要在安全组策略中开放该端口。

访问接口没问题,这就算部署好了!!!!!

不过访问时,还可能遇到一些问题:

1、访问404

如果在本地环境下正常,那么很多情况下就是路径问题
比如:

xxx.xxx.xxx:8080/path

改成

xxx.xxx.xxx:8080/解压后的war包文件名/path

2、连接数据库报错:CLIENT_PLUGIN_AUTH is required

原因:MySQL 版本与 mysql-connector-java.jar 版本存在不匹配的问题

解决:要么升级 MysQL ,要么添加与 MySQl 版本一致的 mysql-connector-java.jar
比如 MySQL 5.x.x,那你的 mysql-connector-java.jar 也换成 5.x.x

3、数据库报错:too many connections

原因:连接数超过限制,以至于数据库无法访问。默认的连接数是100

解决:进入 MySQL 安装目录, 打开 MySQL 配置文件 my.ini
找到 max_connections=100,改为

max_connections=1000
wait_timeout=5

再重启 MySQL 服务即可

最大连接数可视项目需要修改。

好了,这就是本次部署遇到的坑,其他问题也可提出来,一起讨论@@