• 无线传感网实践周做的简单智慧医疗系统,需要在网页查询、显示数据,使用Java web、mysql、jsp实现。
  • 写好了项目第一次部署环境,找到的教程有些零散,对我这种小白不友好,在这记录一下部署Java web项目的全部过程。环境为阿里云ecs学生机 (CentOS7)


将Java web项目部署到Linux云服务器(CentOS7+Tomcat+Mysql)

安装JDK

服务器安装JDK 1.8

  • 终端输入以下代码。
    yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

配置环境变量

  • 将下面的三行添加到 /etc/profile 后面

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/
  • 保存关闭后,执行:source /etc/profile 让环境变量设置立即生效
  • 验证是否安装成功,终端输入命令: java -version

安装Tomcat

本机电脑下载tomcat

  • 进入下面网址下载tomcat,最新版就可以。Tomcat download
  • 本机安装配置tomcat环境,用以调试开发。

服务器下载Tomcat

将tomecat.tar.gz下载到/usr/local或者先

  • 进入/user/local目录
 cd /usr/local
  • 执行以下命令
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz
  • 解压刚刚下载的文件,并且重命名为tomcat
tar zxvf apache-tomcat-8.5.47.tar.gz & mv apache-tomcat-8.5.47 tomcat

启动tomcat

  • 终端执行命令
/usr/local/tomcat/bin/startup.sh
  • 出现成功的提示:
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

不能访问tomcat的相关解决办法

  • 防火墙未开启8080端口,解决如下
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
  • 服务器未开启安全组

    • 在阿里云服务器的控制台添加安全组,自定义tcp。端口设置为8080

安装MySql

检查 MariaDB 是否安装

从CentOS 7 开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL。可以选择使用完全兼容的 MariaDB,或卸载MariaDB重新安装 MySQL。

  • 检查是否安装
yum list installed | grep mariadb

  • 卸载MariaDB
yum -y remove mariadb*

下载 MySQL 的 yum 源

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

安装 yum 源

rpm -ivh mysql57-community-release-el7-9.noarch.rpm

检查 MySQL 的 yum 源是否安装成功

 yum repolist enabled | grep "mysql.*-community.*"

查看 MySQL 版本

yum repolist all | grep mysql

  • 版本设置(若下载的是5.7版本的源,则跳过)
yum-config-manager --disable mysql56-community   # 禁用MySQL5.6的源

yum-config-manager --enable mysql57-community   # 启用MySQL5.7的源

安装 MySQL

yum install mysql-community-server
  • 安装成功:
  • 可能出错

解决方法:

修改vim /etc/yum.repos.d/mysql-community.repo源文件“**号”部分

[mysql57-community]
name=MySQL 5.7 Community Server
~~baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ ~~ 
**baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1**
**gpgcheck=0**

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql   

启动 MySQL 服务

systemctl start mysqld

测试连接 MySQL

mysql -uroot

发现出错

解决办法:

  • 停止 MySQL 服务:systemctl stop mysqld
  • 以不检查权限的方式启动 MySQL: mysqld --user=root --skip-grant-tables &
  • 再次输入 mysql -u root 或者 mysql,这次就可以进来了。
  • 更新密码:

    • MySQL 5.7 以下版本:
    UPDATE mysql.user SET Password=PASSWORD('passwd12345678') where USER='root';
    • MySQL 5.7 版本:
    UPDATE mysql.user SET authentication_string=PASSWORD('passwd12345678') where USER='root';
  • 刷新:flush privileges;
  • 退出:exit;
  • 重连:mysql -u root -p,输入密码即可连接数据库

防火墙设置(如果不需要,则可跳过)

开启防火墙后,远程访问 MySQL,需要开放 3306 端口

防火墙加入3306端口

firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
firewall-cmd --reload

  • 如果报错:

是因为当前系统默认的是Python3环境,而firewall使用的是python2

解决办法:
修改文件内容,即首行指定的Python版本:

vim /usr/sbin/firewalld

vim /usr/bin/firewall-cmd

修改内容:

#!/usr/bin/python env修改为#!/usr/bin/python2

CentOS 7,还需要将 MySQL 服务加入防火墙,然后重启

firewall-cmd --zone=public --permanent --add-service=mysql

systemctl restart firewalld

如果防火墙未开启,会报错 FirewallD is not running

解决方法:

  • 查看防火墙状态:会发现状态是 dead,即防火墙未开启。

systemctl status firewalld

  • 打开防火墙:

systemctl start firewalld

  • 再次查看防火墙状态:这时会发现状态变为 running,即防火墙开启成功。

systemctl status firewalld

设置允许远程访问(如果项目需要,否则跳过)

  • 连接数据库:mysql -uroot -p
  • 授权任意ip访问:grant all privileges on *.* to root@"%" identified by '0';

    • 若出现错误:
    • 解决方法:

    mysql> SET PASSWORD = PASSWORD('your_new_password');

  • 刷新权限:flush privileges;

MySQL 默认只允许 root 帐户在本地登录,如果要在其它机器上连接 MySQL,必须修改 root 允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,添加一个新的帐户:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;TION;

MySQL 相关命令

systemctl start mysqld    #启动mysql
systemctl stop mysqld    #停止mysqld
systemctl restart mysqld    #重启mysqld
systemctl enable mysqld    #设置开机启动
systemctl status mysqld    #查看 MySQL Server 状态

参考资料:CentOS7安装Mysql 5.7

打包web项目

  • 先修改jdbc.properties文件的url 为下面的。将192.168.44.128换成服务器ip

    url=jdbc:mysql://192.168.44.128:3306/further?useUnicode=yes&
    characterEncoding=utf8
  • Project->Artifacts->增加webApplication:Exploded 选在项目基础上
  • Project->Artifacts->增加webApplication:Archive 选在2的基础上
  • 发现有Create Manifest的提示。点击,默认创建即可。然后点击apply和ok
  • 重新build项目。Build->Build Artifacts->All Artifacts->build
  • 创建好后进入项目文件夹out/artifacts/项目名_war/
  • 将.war文件传至服务器的/usr/locol/tomcat/webapps下。进入服务器后重启tomcat会自动解压
  • 访问http://服务器ip:8080/项目名

这个时候我们所写的项目已成功部署,可以通过浏览器输入服务器的ip地址访问了。若想通过域名访问需要到服务器控制台将域名解析到我们的服务器。