之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆,二是希望能帮到有同样需求的小伙伴。话不多说,下面开始。
首先,我的Java Web项目是一个很简单的学生管理系统(相信很多人都做过吧,挺简单的),基于Tomcat和MySQL,所以这次在云服务器上部署也是基于这两个的,在开始之前,你本地首先要有一个能跑起来的项目,例如下面这样:
在有了本地项目之后,下面就是开始部署了。
-
第一步,你需要购买一个云服务器
腾讯云或者阿里云都可以这两个在国内都不错,阿里云可能更好一些(虽然我用的是腾讯云2333),如果你是学生的话,购买还有学生优惠,每个月只要10元钱差不多,这里是腾讯云学生优惠地址和阿里云学生优惠地址
在你购买了你想要的服务器后,就可以进入控制台查看你购买的服务器了,我购买的云主机的系统的Ubuntu,当然选择其他系统也可以,比如听说比较火的CentOS:
在上图中,就可以看到云服务器的详细信息了,并且腾讯云或者阿里云会给每个云服务器提供一个公网IP和内网IP(比如我的公网IP就是123.207.64.17
),当你把项目部署到云服务时,其他人就可以通过公网IP来访问,在购买了之后,一般服务器就会自动开始运行,你可以在本地打开CMD命令行,输入ping 你的公网IP
来测试是否可以访问,如果出现下面的提示,就说明可以访问:
在购买了云服务后,你需要设置你云服务器的用户名和登录密码,就相当于你打开本地电脑还需要用户名和密码一样(登录名一般都是它提供好的,比如腾讯云Ubuntu就默认是ubuntu,阿里云CentOS默认是root),之后你就可以在下面的步骤中,通过用户名和密码来登录你的云服务器。 -
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。说白了就是可以在你本地计算机和云服务器之间传输文件的东西,可以让你把本地项目放到云服务器上面去。WinSCP界面如下:
在第一张图中,你需要选择SCP协议,主机名就是腾讯云或阿里云给你提供的公网IP,端口号选择22,用户名密码就是你上一步中设置的用户名和密码,之后点击登录就可以,登录成功后就是第二张图,分为左右两栏,左边是你本地计算机,右边是云服务的目录,把左边的文件往右边拖就是上传到云服务器,从右边往左边拖动文件就是从云服务器下载到本地。
PuTTY是一个用来远程管理云服务器的东西,类似于一个远程Linux终端,可以进行各种命令行操作,项目的部署大部分操作都是通过这个软件进行的。
在第一张图中,HostName就是公网IP,端口号选择22,协议选择SSH,在SaveSessions里面给你的这个会话起个名字比如我的TencentWebServer,点击Sava保存,然后Open(之后再次登录时就可以直接双击保存过的那个名字就行了),登录成功后在终端输入用户名密码就是第二张图中的样子。
-
第三步,云服务器上安装jdk,Tomcat,MySQL
在上面的步骤完成后,接下来就是安装配置服务器上的项目环境了,因为我部署的这个项目是基于Java+Tomcat+MySQL的,所以需要安装上面那几个。
在进行下面的步骤之前,先更新源
sudo apt-get update
-
云服务器安装jdk
在网上搜了好久,很多都很麻烦,其实可直接一条命令搞定,直接在PuTTY终端里面输入
sudo apt-get install openjdk-8-jdk
(我安装的是jdk8,你也可以安装别的版本,和你本地项目用的版本一样就行),之后也不用配置环境变量(虽然我看到有的博客里写要配置环境变量),之后通过
java
和
javac
这两个命令来测试是否安装成功了即可:
如果下面出现一大堆选项,就说明成功了。
-
云服务器安装Tomcat
安装Tomcat有好多种方式,可以在本地去Tomcat官网下载再用WinSCP上传到云服务器上,也可以直接在云服务器上命令行下载,本地下载再上传比较简单,就不多说了,说说用命令行操作。我是通过
wget
命令来下载的,在终端输入wget https://www.apache.org/dist/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
然而由于众所周知的原因,在国内直接从官网下载速度很慢,推荐用国内镜像,国内有很多镜像(例如,清华镜像站、华科镜像站),我用的是清华的镜像,所以命令变为
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
下载完之后你就可以在你输入命令时所在的路径下找到下载好的压缩包,你可以使用
pwd
命令来查看当前的路径,
执行解压命令:
sudo tar -xvzf apache-tomcat-8.5.35.tar.gz
解压之后是个文件夹,可以将这个文件夹移到其他位置,我是在usr目录下新建了个Tomcat目录,之后放了进去。
命令行进入apache-tomcat-8.5.35目录下的bin目录,执行
ls
命令,可以看到下面这些文件:有时候进入bin目录会提示没有权限
Permission denied
,这时可以获取root权限,之后再进入,就可以看到里面的文件了。这里面有两个会比较经常用到,分别是startup.sh
和shutdown.sh
,分别用来开启Tomcat服务和关闭。
执行./startup.sh
这样就是开启Tomcat服务了,这时候你在浏览器地址栏输入
http://你的公网IP:8080
(比如我的就是http://123.207.64.17:8080)就可以看到Tomcat服务的初始界面:
如果你看到了这个界面,Tomcat服务就算是成功开启了,之后想要关闭可以执行
./shutdown.sh
。有的人在这里可能会遇到一些问题,就是命令行中以及显示Tomcat started,但是在浏览器中还是访问不了页面,那么可能是因为你的云服务的端口没有开放,需要去云服务器安全组中设置访问规则。
腾讯云:进入控制台 → 选择左边侧栏的安全组 → 点击新建 → 如下图所示配置即可
阿里云:进入控制台 → 选择左边侧栏的安全组 → 配置规则 → 快速创建规则 → 如下图所示配置即可
其他一些参考:Linux Ubuntu 安装Tomcat
-
云服务器安装MySQL
Ubuntu上安装MySQL其实挺简单的,只需要下面几条命令:
sudo apt-get install mysql-server
sudo apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev
在执行完毕之后,就会安装,安装过程可能会提示让设置MySQL登录密码什么的,这个密码就是你Java Web项目里连接数据库时用到的密码,在安装完之后,可以通过下面这个命令来检查是否安装成功
sudo netstat -tap | grep mysql
如果出现下面的,就表示成功了,MySQL的socket处于listen状态
这个时候MySQL服务已经启动了(如果之后需要开启或关闭的话可以用service mysql start
和service mysql stop
)然后你需要在命令行登录MySQL,可以用下面的命令来登录mysql -u root -p
之后用
show databases;
就可以看到你的数据库了,可以看到图中,student这个数据库就是我新建的用来存放学生管理系统这个项目的数据库。之后,你需要新建你的JavaWeb项目所需的数据库。
-
-
第四步,将JavaWeb项目打包成war包
在上面几个步骤都完成之后,就只需要把本地项目放上去就可以了,首先需要将项目打包成war包,我使用的IDE是IntelliJ IDEA,打包其实很简单,这里就不再说了(其实是打字打累了233333),给几个我当时参考的链接吧:
Idea将javaweb项目打包成war包并部署到服务器的Tomcat上,
使用IneliJ IDEA 2016将Java Web项目导出为War包
在打包完成之后,使用WinSCP服务器图形化文件管理工具,把这个war包拖拽到云服务器的
tomcat/webapps/
目录下,之后重启Tomcat(先./shutdown.sh
再./startup.sh
),之后这个war包就会自动解压好了,如下图:有时候可能会出现访问时没有权限的问题,无法进入那个文件夹,如下图:
这时候可以退出WinSCP,重新登录,在登录时点进去高级选项,按照下图设置即可:
-
第五步,在浏览器输入url访问你的Java Web项目
如果上面几部都成功的话,现在你就可以在浏览器中访问你部署在云服务器上的项目了,在浏览器地址栏中输入
http://公网IP:8080/项目路径
,其中项目路径一般就是你放入tomcat/webapps/
下面解压后的文件夹名,比如我的就是http://123.207.64.17:8080/StudentManager/
经过上面几个步骤,我们就成功地把基于Tomcat和MySQL的Java Web项目部署到的云服务器上。如果你按照上面的步骤来做遇到了什么问题,欢迎在下面留言交流。