目录

  • 0.购买服务器
  • 1.端口开启
  • 2.环境安装
  • 2.1使用宝塔可视化安装
  • 2.2 Linux常用操作
  • 3.项目部署
  • 3.1 JSP项目部署
  • 3.1.1 打war包
  • 3.1.2 部署到服务器
  • 3.1.3 数据库连接
  • 3.1.4 排错指南
  • 3.1.5 绑定域名
  • 3.1.5 网站备案
  • 3.2 SSM项目部署
  • 3.3 SpringBoot/Vue项目部署
  • 4.踩的一些坑
  • 4.1mysql莫名其妙看不到自己的数据库
  • 4.2宝塔安装Nginx
  • 4.3 关于部署vue到nginx访问空白
  • 4.4 Nginx跨域问题
  • 4.5 关于打包失败
  • 4.6 关于如何让springboot持续运行
  • 4.7 关于端口占用

0.购买服务器

首先来到阿里云官网 传送门(点我)

Linux云服务器运行war linux云服务器部署_java

Linux云服务器运行war linux云服务器部署_linux_02

这里我选择的是学生计划,通过认证和测试后,可免费使用2个月(这个时间根据官网活动不等)

学生计划链接 传送门(点我)

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_03

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_04

购买(获得)云服务后,利用官网给的公网IP和账户密码登陆。这里我使用的是Putty

Putty下载链接:传送门(点我)

账号默认为root,密码可在控制台重置

Linux云服务器运行war linux云服务器部署_阿里云_05

1.端口开启

由于阿里云的安全组默认没有放行一些我们需要的端口,为了正常访问,我们需要开启这些我们所需要的端口。教程 传送门(点我)

常用端口

工具

8888

宝塔面板

22

SSH

80、443

网站及SSL

3306

数据库远程连接

888

phpmyadmin

如果你进入面板里修改了面板端口或FTP端口,记得要在安全组和面板防火墙放行相应端口

2.环境安装

2.1使用宝塔可视化安装

宝塔面板官网 传送门(点我)

在Linux中安装完成后,会给出一个 URL 、账号、密码

将URL复制到浏览器中,使用账号密码登陆

Linux云服务器运行war linux云服务器部署_云服务器_06

则可以在此面板中完成傻瓜式的环境安装。记得一定要在阿里云中开启8888端口(第一步已经提到)


同时,我们也需要在Linux中放行我们需要的端口例如8080,3306等,这里通过宝塔面板操作

Linux云服务器运行war linux云服务器部署_java_07

2.2 Linux常用操作

Linux教程 传送门(点我)


3.项目部署

3.1 JSP项目部署

3.1.1 打war包

关于Web Application:Exploded和Web Application:Archive的区别可以去看这几篇文章传送门1(点我) 传送门2(点我) 传送门3(点我)简单总结如下

方式

web Application Exploded

以文件夹形式发布项目,发布项目时就会自动生成文件夹在指定的output directory

Web Application Archive

就是war包形式,将项目打成一个war包在指定位置

artifacts是maven中的一个概念,表示项目/modules如何打包,比如jar,war,war exploded,ear等打包形式,一个项目或者说module有了artifacts就可以部署到web应用服务器上了(注意artifact的前提是已经配置好module,如果连项目都不是,怎么配置artifacts来定义发布项目的形式呢)

打包方式

作用

jar

通常是开发时要引用通用(JAVA)类,打成包便于存放管理

war

是做好一个(web)应用后,通常是网站,打成包部署到容器中是做好一个(web)应用后,通常是网站,打成包部署到容器中

ear

企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。通常是EJB打成ear包。

war包的组成部分

作用

WebContent目录

代表其是一个web项目, 主要存放的是前端代码、Web.xml、lib等文件

classes目录

编译过后的java文件的二进制文件.( .class ) 后台逻辑都是由这里管控

WebContent目录里面有一个名为WEB-INF的文件夹,我们将classess文件放入这个文件夹,再将整个WebContent目录进行打包,就形成了我们在tomcat发布时使用的war包。

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_08

Linux云服务器运行war linux云服务器部署_阿里云_09

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_10

选中当前项目的Web根目录

Linux云服务器运行war linux云服务器部署_云服务器_11

Linux云服务器运行war linux云服务器部署_java_12

点击ApplyLinux云服务器运行war linux云服务器部署_Linux云服务器运行war_13OK,然后按Ctrl+F9,就会看到在你设置的目录下出现了一个war包

Linux云服务器运行war linux云服务器部署_阿里云_14


或者 Build Artifacts 然后选中你刚刚配置的,效果也是一样

Linux云服务器运行war linux云服务器部署_阿里云_15

Linux云服务器运行war linux云服务器部署_阿里云_16


Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_17

3.1.2 部署到服务器

首先需下载Xftp用来 将windows的文件传输到Linux服务器上。

这里我提供一个Xftp个人版的链接(仅供学习使用),也可以自行在网上搜索 下载链接:点我

Linux云服务器运行war linux云服务器部署_java_18

连接成功后,右侧会出现Linux文件显示

Linux云服务器运行war linux云服务器部署_linux_19

将打好的war包拖到Tomcat webapp目录下

Linux云服务器运行war linux云服务器部署_linux_20

这个时候在宝塔面板中重启Tomcat

Linux云服务器运行war linux云服务器部署_java_21

重启之后会发现Webapp目录下多出来这个文件夹

Linux云服务器运行war linux云服务器部署_linux_22

3.1.3 数据库连接

  • 在Linux环境的mysql中允许远程连接
use mysql;
select user,host from user;
update user set host="%" where user="root";
flush privileges;

这里我使用IDEA自带的远程工具(这个其实挺好用的,可以自动补全和提示,不知道为什么有人黑)来连接,注意:使用之前一定要记得在宝塔中放行端口。(如果你是按照步骤来的,这步肯定已经完成了)可翻到最上面查看目录,端口放行。

  • 在IDEA最右侧找到Database点击+号
  • 如果右侧没有可以,这个不同版本的IDEA略有不同,可自行搜索 连接成功后就和本地一样操作数据库了。一个坑,搞完之后一定要把之前项目中的数据配置文件的localhost换成服务器IP,我找半天才发现这个错

到这里,我们就可以通过公网IP的方式来访问自己的项目了

例如我的

Linux云服务器运行war linux云服务器部署_linux_23

Linux云服务器运行war linux云服务器部署_java_24


3.1.4 排错指南

如果没有成功部署,需检查这几个地方

①阿里云面板中安全组设置端口是否放行 上面已提到

②宝塔面板中设置Linux端口是否放行 上面已提到

③Linux中是否设置mysql运行远程访问 上面已提到

④Linux环境是否安装

部署JSP项目时,我安装了如下环境,如下环境足够用IP+端口号+项目名的方式去访问项目了。

Linux云服务器运行war linux云服务器部署_云服务器_25

Linux云服务器运行war linux云服务器部署_阿里云_26

这里对Tomcat提个建议,因为我开始安装的是Tomcat7,结果发现JDK是JDK7。所以建议安装Tomcat8。Tomcat9是否默认为JDK9这个我没有测试。关于Apache的作用可以参考下面文章。 传送门(点我)

3.1.5 绑定域名

域名购买地址(新人一块钱)传送门(点我) 为了方便绑定域名等其它操作我又安装了一些工具

Linux云服务器运行war linux云服务器部署_阿里云_27

当我们购买完域名之后,要对此域名进行解析,所谓解析,也就是将我们买的域名和IP关联起来。

Linux云服务器运行war linux云服务器部署_java_28

Linux云服务器运行war linux云服务器部署_java_29

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_30

在宝塔面板中添加站点

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_31

接着在网址栏输入自己的域名

Linux云服务器运行war linux云服务器部署_java_32

3.1.5 网站备案

尬住了,要3个月以上的服务器才能备案,按照指示填身份证等信息就行。 白嫖的两个月的服务器备案不了。。。


3.2 SSM项目部署

使用maven打成war包,然后和上面操作一样

Linux云服务器运行war linux云服务器部署_阿里云_33

3.3 SpringBoot/Vue项目部署

安装如下插件即可

Linux云服务器运行war linux云服务器部署_linux_34

将使用npm run build生成的dist文件夹(我重命名为web了),放入linux服务器如下目录下

Linux云服务器运行war linux云服务器部署_云服务器_35

将springboot生成的jar包,放入任意一个目录下并执行

nohup java -jar 包名 &

查看运行情况

ps -ef|grep 包名

Linux云服务器运行war linux云服务器部署_阿里云_36

这个grep进程的意思是,我们这个查询本身也是一个进程

查看所有运行的进程

ps aux | less

4.踩的一些坑

4.1mysql莫名其妙看不到自己的数据库

第二天在linux登录mysql数据库时,发现之前新建的数据库都消失了, 而且明明修改了root的密码,却可以不输入密码直接回车登录。更离谱的是我通过远程连接又可以连接到之前的数据库。也就是说,数据库没消失,只是当前权限不够了。 搜索了一下,找到了解决办法:删除匿名用户。传送门(点我)

service mysqld stop
mysqld_safe --skip-grant-table
mysql -u root mysql
delete from mysql.user where user='';
flush privileges
service mysqld restart

4.2宝塔安装Nginx

配置路径在这里。。。

Linux云服务器运行war linux云服务器部署_Linux云服务器运行war_37

而且如果你访问出现了这个情况

Linux云服务器运行war linux云服务器部署_阿里云_38

那是因为宝塔无聊,他的index.html居然是这个,真的害人了。

Linux云服务器运行war linux云服务器部署_java_39

4.3 关于部署vue到nginx访问空白

传送门(点我)

location /aaa {
            alias   D:/bbb/ccc;
            index  index.html index.htm;
            try_files $uri $uri/ /aaa/index.html;
        }

其中/aaa是需要访问的地址, D:/bbb/ccc是你文件真实存放的路径,index指的就是你的入口文件,你的文件名如果不是index.html的话就替换成你的入口文件的名字,这里面最重要的是 try_files $uri $uri/ /aaa/index.html 这句话,这句话主要就是用来处理vue的历史模式的,在配置完nginx后, 还要在项目里面加点东西, 其实也很简单, 就在项目的src目录里面加上

4.4 Nginx跨域问题

详细情况见 传送门(点我)

4.5 关于打包失败

如果出现打包失败,在本地又可以运行的情况下。可以尝试注释掉单元测试的类。

4.6 关于如何让springboot持续运行

在部署的时候我发现,如果关闭了远程连接,跑起来的springboot服务也停止了。 解决如下

nohup java -jar 包名 &

查看运行情况

ps -ef|grep 包名

Linux云服务器运行war linux云服务器部署_阿里云_36

这个grep进程的意思是,我们这个查询本身也是一个进程

查看所有运行的进程

ps aux | less

4.7 关于端口占用

netstat -lnp|grep 80

Linux云服务器运行war linux云服务器部署_阿里云_41

kill -9 5574