在Linux服务器部署Java Web项目

1、在阿里云创建服务器

PC访问阿里云https://www.aliyun.com/,申请阿里云帐号(可以用您的支付宝帐号登录,因为支付宝帐号已经进行了实名认证,使用起来更方便)并登录

找到云服务器ECS购买页面(页面展现随时会变,当前为全部导航->产品->弹性计算->云服务器ECS->选择自己需要的型号,购买云服务器,之后选择服务器系统为centos

阿里云翼计划针对学生开启服务器优惠活动,一个月仅需9.5:https://promotion.aliyun.com/ntms/act/campus2018.html#stage

创建完成后转到阿里云服务器管理控制台,找到刚创建的实例,可以看到分配的服务器IP,

点击进入并重置服务器密码,之后通过公网IP和密码登录到服务器

服务器的应用需要某些特定的端口,需要配置阿里云服务器开放端口供外网访问,在控制台找到安全组->配置规则

点击快速添加,将SSH、HTTP、MySQL、Redis的端口开放。

2、配置服务器运行环境

JDK

从官网下载JDK1.8:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html,这里选择下载Linux的64位版本压缩包jdk-8u181-linux-x64.rpm文件

使用Xshell的put命令将下载好的文件上传到服务器:put D:/Download/jdk-8u231-linux-x64.rpm

安装Java的RPM包:

rpm -ivh jdk-8u231-linux-x64.rpm

输入java -version成功显示安装的版本号

Tomcat

官网下载Tomcat9:https://tomcat.apache.org/download-90.cgi,选择的是apache-tomcat-9.0.36.tar.gz,然后将文件上传到服务器

或者直接使用wget从镜像下载:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz

解压文件到要安装的目录:

tar -zxvf apache-tomcat-9.0.36.tar.gz -C /usr/local/

修改默认端口为80,将<Connector>的port设为80:vim apache-tomcat-9.0.36/conf/server.xml

启动Tomcat:./apache-tomcat-9.0.36/bin/startup.sh

有时候会遇到Tomcat启动,但是在浏览器访问不到tomcat欢迎页面的情况,有可能是服务器防火墙的问题,其排查步骤如下:

  1. 查看Tomcat进程是否启动:ps -ef | grep tomcat
  2. 用curl发起请求:curl   http://localhost:80,若可以访问会返回页面信息
  3. 检查防火墙是否启动:firewall-cmd --state,若为not running,启动防火墙:systemctl start firewalld
  4. 查看防火墙开启的端口:firewall-cmd --permanent --zone=public --list-ports
  5. 若没有80端口,则手动开启:firewall-cmd --zone=public --add-port=80/tcp --permanent
  6. 重启防火墙:firewall-cmd --reload
  7. 验证80端口是否开启:firewall-cmd --zone=public --query-port=80/tcp

MySQL

下载MySQL的yum源:https://dev.mysql.com/downloads/repo/yum/,CentOS属于RedHat的一个分支,所以选择下载Red Hat Enterprise Linux 7对应的mysql80-community-release-el7-3.noarch.rpm,同样地将其上传到服务器

在服务器安装用来配置mysql的yum源的rpm包:rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

通过yum安装Mysql:yum install mysql-community-server

启动MySQL:service mysqld start

mysql安装成功后root的临时密码会被存储在/var/log/mysqld.log,可以使用如下命令查看

grep 'temporary password'  /var/log/mysqld.log

登录数据库:mysql -uroot -p,按提示输入刚才显示的临时密码

修改root密码为Mysql1234!

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql1234!';

 有时为了安全可以创建一个仅有增删改查权限的工作账号work

# 切换到自带的权限管理数据库
use mysql; 
# 创建work帐号,同时设置密码   
CREATE USER 'work'@'%' IDENTIFIED BY 'Work1234!';
# 分配权限
grant SELECT,UPDATE,INSERT,DELETE on *.* To 'work'@'%';
# 刷新使配置生效
flush privileges;

Redis

官网下载地址为https://redis.io/download,点击下载稳定版redis-6.0.5.tar.gz

上传到服务器并解压:tar -zxvf redis-6.0.5.tar.gz

安装gcc:yum install gcc

修改配置文件以支持远程登陆:vim redis-6.0.5/redis.conf,将其中的bind 127.0.0.1注释掉

将redis设为守护进程运行在后台

关闭保护模式以允许远程登陆redis:

将如下设置改为no,防止bgsave快照操作出错时影响到后续操作

设置密码:取消requirepass行的注释,然后填写密码。

特别注意一定要为Redis设置密码,如果不设置会立马遭受木马PNScan的攻击, 之后阿里云提示如下

您的云服务器由于被检测到对外攻击,已阻断该服务器对其它服务器端口(TCP:6379)的访问,阻断预计将在------时间内结束,请及时进行安全自查。若有疑问,请工单或电话联系阿里云售后。

接下来开始安装redis,在redis文件目录下运行:make PREFIX=/usr/local/redis install

安装过程中报了许多以service.c开头的错误,这是由于gcc版本过低导致,通过如下命令升级gcc后再次安装成功

yum -y install centos-release-scl  # 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

启动redis:src/redis-server redis.conf

连接测试:通过redis-cli连接到redis服务器 src/redis-cli,输入密码验证登录后输入ping 得到pong的回应,证明redis配置已经完成

127.0.0.1:6379> auth "Redis1234"
OK
127.0.0.1:6379> ping
PONG

3、打包部署

war包

发布到服务器前首先需要修改项目的MySQL、redis的连接为服务器上的位置

用Intellij IDEA将项目打包:在Project Structure选择Artifacts,然后选择Type类型为WAR包,然后选择输出目录Output directory。之后点击导航栏的Build->Build Artifacts进行打包,在输出目录下找到war包

之后将war包上传到服务器tomcat的webapps目录下,之后tomcat便会在webapps目录下自动从项目war包中解析出项目工程目录来。

jar包

也可以采用Java原始的jar包方式运行项目,首先在Project Structure-> Artifacts添加JAR包的发布方式

接下来配置JAR包模块,在Main Class中选择项目主类,接着选择copy to the output directory and link via manifest将项目用到的相关jar包拷贝到输出目录,最后设置META-INF文件目录到src/main/resources

可以看到在项目的out/artifacts目录下输出了打包后的项目,将demo_jar上传到服务器并在该目录下运行java -jar demo.jar即可启动项目

数据迁移

数据库迁移:利用mysqldump将本地的数据库导出,在命令行输入如下,-u用户名,-p密码,要导出的数据库>目标文件

D:/Program/MySQL/bin/mysqldump -uroot -p123456 shop_demo >D:/Temp/shop_demo.sql

将shop_demo.sql文件上传到服务器/root/temp文件夹下,在服务器的mysql中创建数据库shop_demo并导入:

mysql> create database shop_demo;
mysql> use shop_demo;
mysql> source /root/temp/shop_demo.sql;

图片迁移:项目中用到的图片也需要放到服务器上对应的位置,之前项目中判断图片路径的逻辑如下,可见需要将本地图片放到服务器/root/shopDemo/images目录下

    //返回图片存放目录
    public static String getImgFolder() {
        String imgFolder = "";
        if (System.getProperty("os.name").toLowerCase().startsWith("win"))
            imgFolder = "D:/Code/Java/Web/ShopDemo/images/";    //本地Windows下存储路径
        else
            imgFolder="/root/ShopDemo/images";    //服务器上图片路径
        imgFolder = imgFolder.replace("/", fileSeparator);
        return imgFolder;
    }

由于之前在项目中的图片都使用了路径映射,所以需要在tomcat/conf/server.xml中配置图片路径的映射如下

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        ......
		<Context path="/upload" docBase="/root/ShopDemo/images/upload" />
      </Host>

然后通过服务器访问80端口就可以看到项目结果了

4、远程调试

有时候我们在本地对远程服务器上部署的项目进行调试,以发现在实际环境中可能出现的问题,那么如何使用IntelliJ IDEA连接远程Tomcat服务器环境进行远程调试呢?

注意IDEA的远程调试并不是调试真正的本地代码,而是在本地IDEA中为服务器端对应项目的代码设置断点,运行服务器端的项目代码,访问服务器端的数据库等资源,然后返回相关的调试信息到本地IDEA。

首先需要设置Tomcat开启远程调试端口,利用vim编辑tomcat/bin/catalina.sh文件,在文件开头处添加如下代码。其中address=8086代表调试端口号为8086。相应地需要在阿里云服务器的安全策略中开放8086端口。

JPDA_OPTS="-Xrunjdwp:transport=dt_socket,address=8086,server=y,suspend=n"

然后在tomcat/bin目录下通过以下命令启动tomcat

./catalina.sh jpda start

我在CentOS7远程调试时还需要关闭防火墙:

systemctl stop firewalld

接着在IDEA中打开运行设置,在其中添加Remote类型的配置,修改其Host为服务器地址,Port为刚才设置到8086。

最后在IDEA中打好断点,点击调试按钮,控制台输出如下,即可对远程代码进行调试。

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值