javaweb项目部署到阿里云Linux云服务器上
1.获取阿里云服务器ECS
网页登陆阿里云,注册或者登录一个账户,然后点击下面的云服务器ECS:
选择它的原因:1.其他教程说的 2.有免费体验七天的服务
这个链接里有阿里云高校计划,学生认证并完成测试后可以获得两个月的云服务器ESC使用权。支付成功后可在左栏中查看自己的实例。
2.服务器实例的配置
我的云服务器操作系统为Centos 7.3 64位。
开通项目用到的端口,我用到的是mysql的3306端口和Tomcat要用到的8080端口,因此需要在安全组中的配置规则中添加相应端口的安全组:具体操作可见百度经验
3.通过软件访问云服务器操作系统
可以用Xshell+Xftp,一个用来访问服务器系统,一个用来传输文件。实际上阿里云自己也有服务器系统的工作区,不过我看的教程一般都没用过,有兴趣自己可以试试。
我使用的是MobaXterm,这一个软件包含了操作系统连接,FTP等功能。官网可以免费下载使用。
下载完成后打开MobalXterm,连接对应云服务器的操作系统:
点击ok后进入云服务器操作系统,初始位置为root,返回上一级后进入home
4.下载自己在本地的javaweb工程对应环境的jdk以及mysql
最重要的JDK要和本地的javaweb的JDK一样,查看并修改本地javaweb的方法为:(eclipse)
jdk官网下载地址:jdk官网下载,应该还得注册一个账号才给下载。由于我的系统是Centos 7.3 64位,因此下载X64.tar.gz。
Tomcat官网下载地址:Tomcat官网下载,我的javaweb中的版本为Tomcat7,我下载的为7.0.107的Core中的tar.gz。
在本机下载好后上传到虚拟云操作系统的home下:
5.解压配置jdk以及Tomcat
在usr目录下创建java,再在java下创建以下两个目录,一个名为jdk,一个名为tomcat,如下:
安装jdk
**1.**运行解压命令:tar -xzf /home/jdk-8u271-linux-x64.tar.gz -C /usr/java/jdk
注意加粗的部分为你自己的压缩包名字,将压缩包解压到刚刚创建的jdk文件中
**2.**配置环境变量:直接打开etc目录下的profile文件或者利用vi /etc/profile
在文档末尾添加**(注意后面的jdk文件为你自己的文件名)**
#set java environment
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_271
export JRE_HOME=/usr/java/jdk/jdk1.8.0_271/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
之后利用source /etc/profile,对profile文件进行保存更新。
3.验证安装,如下图表示成功:
安装Tomcat
1.运行解压命令:tar -xzf /home/apache-tomcat-7.0.107.tar.gz -C /usr/java/tomcat
注意加粗部分为你自己的解压包名称
2.配置环境
右键选择文本编辑器打开,在文档末尾保存如下内容:(其中的jdk为你自己刚刚安装的jdk目录)
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_271
export JRE_HOME=/usr/java/jdk/jdk1.8.0_271/jre
3.验证安装,cd /usr/java/tomcat/apache-tomcat-7.0.107/bin/ 到刚刚bin目录,在刚刚的bin目录下运行startup.sh,也就是在终端输入./startup.sh,如果出现如下图,证明已启动:
在本机浏览器中输入 公网ip:8080 若出现下图,则安装完成。
(这里可能会出现访问失败的问题,可以试试将云服务端的防火墙打开,开放8080端口,然后重启防火墙。有关防火墙操作可以点击这里或者阅读后面内容。)
至此 jdk与tomcat安装完成。
6.Mysql安装
首先注意Mysql的使用时最好打开防火墙,一是保护数据安全,二是我暂时还没试过不开防火墙的情况。
Mysql一般需要开放端口3306,Tomcat一般需要开放8080,如果你有域名可能还需要开放80端口。
Centos的防火墙相关操作:
#查看防火墙状态(主要看是否开启)
systemctl status firewalld
#开启、重启、关闭、firewalld服务
# 开启
service firewalld start
# 重启(修改配置后要重启防火墙)
service firewalld restart
# 关闭
service firewalld stop
#查看当前防火墙的已开发端口等信息
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放8080端口(其他的以此类推)
firewall-cmd --permanent --add-port=8080/tcp
# 移除8080端口(其他以此类推)
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙,有两条,我一般用这条指令)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
我弄的时候打开了防火墙,并且开通了8080端口、80端口以及3306端口
结果如下:
Mysql的安装可以通过去官网下载新版本,然后上传到MobaXterm,然后解压安装。这里我直接找了个教程在MobaXterm安装Mysql,版本有点老,不过安装挺快。如果从本机下载在上传,上传还是比较费时间。
1.安装Mysql官方的yum repository:
# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2.下载rpm包:
# yum -y install mysql57-community-release-el7-10.noarch.rpm
3.安装MySQL服务,最后会出现个complete!:
# yum -y install mysql-community-server
4.修改MySQL配置文件(如果vi或者vim用的不熟,可以修改etc目录下的my.cnf文件并保存),跳过密码登录:
# vi /etc/my.cnf
在文档末尾加上:
skip-grant-tables
5.启动MySQL服务:
# systemctl start mysqld.service
6.登录MySQL:
# mysql -u root
7.修改密码:这里密码后面会改
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('1234') where user='root';
8.退出mysql,重新在刚刚那个配置文件中去掉skip-grant-tables,然后重启MySQL:
systemctl restart mysqld.service
9.使用新密码登录MySql,如下图所示:
10.必须重设密码,否则开启Mysql会报错。顺便设置密码等级与最小长度:(这里1234可以改为其他,最小长度注意设定好)
1 SET PASSWORD = PASSWORD('1234');
1 mysql> set global validate_password_policy=0; //改变密码等级
1 mysql> set global validate_password_length=4; //改变密码最小长度
11.再次修改密码:
SET PASSWORD = PASSWORD('1234');
12.配置远程登录(root为用户名,1234为密码),以及刷新系统权限:(用户名和密码可以按照自己要求改)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
mysql> flush privileges;
13.创建数据库并运行sql文件:
mysql> create database 你想要的数据库名;
mysql> use 你的数据库;
可以从其他地方将sql导入到数据库(我暂时没试过)例如home下的xxx.sql
mysql> source /home/xxxx.sql;
至此javaweb在服务器上的环境安装完毕。
7.上传javaweb工程包
首先到处javaweb工程,这里我用的是eclipse
右键选择web文件名,然后export,选择WAR file。
然后将导出的文件放在云服务端的Tomcat的webapps下:
然后通过 公网ip+:端口号+javaweb名访问即可。
8.可能出现的错误
java.lang.UnsupportedClassVersionError:
servlets/Selectable has been compiled by a more recent version of the Java Runtime (class file version 58.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class [servlets.Selectable])
servlets/Selectable是由最新版本的Java运行时(类文件版本58.0)编译的,这个版本的Java运行时只能识别52.0以下的类文件版本(无法加载类[servlet .Selectable])
我这个出现的原因是本机的javaweb用的不是JDK1.8,而云服务的用的是JDK1.8,在本地修改后打包发出即可。
本文参考学习:
1.阿里云服务器Linux系统如何部署JavaWeb项目?
2.阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat
3.记录下在阿里云linux上安装与配置Mysql
4.linux(Centos7.3)防火墙配置相关命令