前言

之前学习了Java Web,能用eclipse在本地直接映射运行Tomcat,十分方便,这篇博客主要是记录,用eclipse写好的WEB项目,如果部署到云服务器上,让大家看到。有关Java web项目的学习,可以看我这两篇博客:
WEB编程学习之Windows安装运行TomcatWEB编程学习之Eclipse编译JSP

本博客原创,转载请注明!

本地工作

WAR文件

WAR文件是一个Java Web的打包版,Tomcat可以直接解包WAR文件生成WEB项目,很方便。

当我们在eclipse写好项目之后,直接导出WAR文件。

在项目根目录下,右键–ExportWAR file,然后选择保存位置就行了。

这个WAR文件到时候直接放在Tomcat的webapps文件夹下就行了。

云服务系统部署网络拓扑 云服务器如何部署项目_mysql

云服务器

安装Java

Tomcat需要Java环境,所以要给服务器安装JDK,云服务器我用的是阿里云ECS,安装的系统是Ubuntu 20.04版本。
有关Ubuntu安装Java的教程可以参见我的这篇博客:Linux学习之Ubuntu安装Java 要补充的是:最好选择方法二安装JDK,方便维护。

安装完Java之后,因为后边还需要用到mysql,把MySQL的jar包放入Java中,将mysql-connector-java-5.1.8-bin.jar文件放在,Java根路径/jre/lib/ext中,关于这个jar文件,网上有很多,我这里就不放出来了。

安装MySQL

这个安装Mysql过程很曲折,花费了我很长的时间去研究,主要原因是新版的MySQL安装完成之后不用设置密码,它会把Ubuntu的root用户权限赋给MySQL的root权限,就不用再输入密码,虽然方便了很多,但是JDBC做用户验证的时候就比较麻烦了,需要输入密码,查了很多资料,花了很长时间,很多方法都没用,最后终于找到一篇有效的博客:在Ubuntu20.04上安装MySQL8.0及正确配置。我这里就说一下过程:

安装MySQL

sudo apt update  
sudo apt install mysql-server

第一个是更新源,第二个是安装MySQL,sudo这个指令如果是服务器是用root用户登陆的,就不需要sudo。
安装好之后,输入

systemctl status mysql

输出的结果是Active: active (running)就说明MySQL安装成功了。

设置密码

这一步花了真的很长时间,网上很多资料都无效,再次感谢上面的那个博客。
在命令行输入

mysql

发现真的不需要密码就可以进入mysql了,然后我们来设置一下root的密码,注意分号

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root的密码';

root的密码就是要设置的密码,输入完之后,看到

Query OK, 0 rows affected (0.01 sec)

就说明可以了,之后我们进入MySQL需要用

mysql -u root -p

命令进入MySQL。然后就可以建立数据库啊,建立表格啊啥的。

安装Tomcat

部署Tomcat

这个其实比较简单了,在我上面的博客里有,这里就简单的说一下过程就行了,因为我的eclipse仅支持的Tomcat最高版本是9.0,我这里就下载9.0版本的了。

先去官网踩点获取网站:Apache Tomcat 然后找到tar.gz版本的,右键–复制链接地址

云服务系统部署网络拓扑 云服务器如何部署项目_mysql_02


然后登录服务器,在命令行输入wget 复制的下载地址,对于我自己就是输入这样的:

wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz

如果速度太慢,可以在Windows下载好之后,然后用WinSCP上传到服务器中就行了。
下载好后,输入

sudo tar -xvaf apache-tomcat-9.0.46.tar.gz

解压tar.gz文件,然后进入tomcat根文件,进入bin然后运行startup.sh文件就行了,比如我的就是

cd apache-tomcat-9.0.46/bin/
./startup.sh

然后没有报错就行了。

访问网站

首先先要在服务器的安全组中开放8080端口:

进入阿里云控制台–(左侧)安全组–然后选择实例–(中间)手动添加–然后开放8080端口就行了。

云服务系统部署网络拓扑 云服务器如何部署项目_mysql_03


对了,这里还要再提一嘴,最好也开放80端口和443端口,一个是HTTP的端口,一个是HTTPS端口,方便之后的网站访问。

开放之后,我们在本地的浏览器中输入http://公网ip:8080或者是http://域名:8080,如果出现了Tomcat的默认界面就成功了。

部署WAR文件

恭喜,到了现在,你已经完成了一大半了,让我们来完成之后的任务。
我们直接将WAR文件放在Tomcat根目录的webapps文件夹下。
然后还需要将tomcat先关闭,然后再开启

cd apache-tomcat-9.0.46/bin/
./shutdown.sh
./startup.sh

开启成功之后,在等一会会,然后我们进入webapps文件下,就发现WAR文件被Tomcat解包了。
然后我们就可以访问了,输入http://公网ip:8080/项目名/初始界面
例如我上面的项目就是http://公网ip:8080/love/index.html 如果看到了自己的网站,那恭喜,你现在已经成功了,博客后边的只是一些优化。

进阶部署

设置默认界面

如果我们希望,我们能通过http://公网ip:8080或者http://域名:8080直接访问我们的网站,就需要配置一下了。
要修改的文件有两个:

web.xml

第一个是web项目的web.xml一般就是在项目根目录下的WEB-INF目录下,在<web-app>标签之中,添加内容

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

就是在之前把这段代码加入就行了。主要是用来设置项目的欢迎页。我的项目的欢迎页是index.html,如果你的是xx.html就可以修改<welcome-file>xx.html</welcome-file>

server.xml

这个是Tomcat的配置文件之一,文件位置是 Tomcat根目录/conf下,打开它

云服务系统部署网络拓扑 云服务器如何部署项目_tomcat_04


在Host标签下,加入这样的一句话

<Context path="" docBase="项目路径" debug="0"/>

path是网站的访问地址,我这里留空,docBase是项目路径,推荐用绝对路径
然后还需要将tomcat先关闭,然后再开启

cd apache-tomcat-9.0.46/bin/
./shutdown.sh
./startup.sh

然后就可以用http://公网ip:8080或者http://域名:8080直接访问我们的网站了。

部署证书

这个是卡我时间最长的,很麻烦,而且网上教程也有些乱,我这里就简单的梳理下过程

我已经购买了域名

部署证书的作用是用https访问我们的网站,如果不安装证书,就是用的http,这样浏览器会警告该网站不安全。

首先申请证书,因为我的服务器是阿里云的,就去阿里云平台搜索SSL证书左侧SSL证书,中间选择免费证书。

云服务系统部署网络拓扑 云服务器如何部署项目_mysql_05


然后就按照它的提示一步一步部署就行了,最后申请通过就可以下载证书了,下载的时候证书选择Tomcat的,解压之后,是一个PFX后缀的证书和一个txt后缀的密码。关于如何安装阿里云给了详细的过程:

安装PFX格式证书 简述一下过程:

(1).开启443端口

这个上面部署Tomcat部分已经说过,在安全组中开启80端口和443端口

(2).别名设置

因为Tomcat 9强制要求证书别名设置为tomcat,我们需要对下载的证书做一些操作,

keytool -changealias -keystore 证书的名字.pfx -alias alias -destalias tomcat

用cmd打开证书路径,然后输入上面的代码,然后它会提示输入密钥库口令,然后打开和证书一起的被解压缩出来的pfx-password.txt文件,里边就是密码,输入密码的时候,密码是不可见的,所以直接输就行了,输入的时候cmd不会显示密码,输完直接回车就行了。
(3).部署证书
准备工作基本做完,然后可以把证书上传到服务器中,我就把证书放在在Tomcat根目录下conf文件夹中。
然后配置server.xml文件,打开 Tomcat安装目录/conf/server.xml
然后找到Connector标签,按照如下更改
keystoreFile是证书所在的绝对路径,keystorePass是txt文件中的密钥,其余基本都是一样的

<Connector port="443"   #port属性根据实际情况修改(https默认端口为443)。如果使用其他端口号,则您需要使用https://yourdomain:port的方式来访问您的网站。
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="Tomcat安装目录/conf/证书名字.pfx" #证书名称前需加上证书的绝对路径,请使用您证书的文件名替换domain name。
    keystoreType="PKCS12"
    keystorePass="证书密码"  #请替换为密码文件pfx-password.txt中的内容。
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

例如下图:

云服务系统部署网络拓扑 云服务器如何部署项目_mysql_06


部署完成之后,重启Tomcat就行了。

如果你能通过https://域名直接访问成功了,那么恭喜你,你成功了!!!

如果你没有成功,可以把所有文件删除,然后重来一遍,我就是最开始的一遍没成功,然后删了,按照流程重新来过就成功了。

小结

过程极其复杂,综合了云服务器、Linux、MySQL、Tomcat、Java等等知识,不过之前我用宝塔+wordpress直接生成了一个模板博客网站,用了很多现成的插件,很方便,但是如果想自己掌控一切,自己写一个web程序也是很有意思的一件事。=w=