云服务器上部署 Web 项目及端口异常处理

文章目录

    • 1. 在云服务器的 MySQL(MariaDB) 中, 建库建表
    • 2. 微调代码
    • 3. 打包
    • 4. 把 war 包 拷贝到云服务器上
    • 端口被占用处理

1. 在云服务器的 MySQL(MariaDB) 中, 建库建表

在云服务器中进入 MySQL

mysql -u root -p

把之前本地写好的 SQL 代码一粘贴即可
例如:

-- 这个文件主要用来写建库建表文件
-- 一般都建议, 在建表的时候把建表 sql 保留下来, 以便后续部署到其他机器

create database if not exists blog_system character set utf8mb4;
use blog_system;

-- 删除旧表, 从新建立新表, 删除旧表是为了防止之前的残留的数据对后续的程序有负面影响
drop table if exists user;
drop table if exists blog;

-- 真正创建表
create table blog (
    blogId int primary key auto_increment,
    title varchar(128),
    content varchar(4096),
    postTime datetime,
    userId int
);

create table user (
    userId int primary key auto_increment,
    username varchar(20) unique,  -- 要求你的用户名和别人的不重复
    password varchar(20)
);

-- 构造测试数据
insert into blog values(1, '这是我的第一篇博客', '从今天开始我要认真学习',now(), 1);
insert into blog values(2, '这是我的第二篇博客', '从昨天开始我要认真学习',now(), 1);
insert into blog values(3, '这是我的第三篇博客', '从前天开始我要认真学习',now(), 1);


-- 构造测试数据
insert into user values(1,'zhangsan', '123');
insert into user values(2,'李四', '123');

云服务器上部署 Web 项目及端口异常处理_第1张图片
然后我们查看一下表
云服务器上部署 Web 项目及端口异常处理_第2张图片
用完 MySQL 想退出按下 Ctrl + D 即可

2. 微调代码

本地的数据库, 端口号, 用户名, 密码和云服务器的数据库可能不一样
本地数据库, 是自己安装的时候设置了密码
云服务器默认没密码
使用 netstat -anp | grep mysql 命令查看端口号
在这里插入图片描述
自己写的代码就得和这些信息匹配

3. 打包

使用 Meven 打成 war包
在 pob.xml 中设置好打的是 war 包和包名

   <packaging>warpackaging>
    <build>
        <finalName>blog_systemfinalName>
    build>

然后双击打包
云服务器上部署 Web 项目及端口异常处理_第3张图片
云服务器上部署 Web 项目及端口异常处理_第4张图片

4. 把 war 包 拷贝到云服务器上

然后打开 tomcat 目录中的 webapps 目录
云服务器上部署 Web 项目及端口异常处理_第5张图片
然后把打好的 war 包拖进来

云服务器上部署 Web 项目及端口异常处理_第6张图片

然后启动 tomcat
进入 bin 目录
云服务器上部署 Web 项目及端口异常处理_第7张图片
使用 sh startup.sh 命令 启动tomcat

在这里插入图片描述
我们验证一下是否真正启动
使用 netstat -anp | grep 8080 命令查看 8080 端口是否启动
在这里插入图片描述
这里看到 LISTEN 状态就是启动了

端口被占用处理

如果启动不成功, 我们可以查看 8080端口和8005端口是不是被其他程序占用了

netstat nap | grep 8005 

在这里插入图片描述
因为我这里是正常启动的, 所以这些都是正确的
我们使用这个命令可以看到 8005端口 被 名字为 java , 进程id 为 3063 的进程给占用了
使用 ps aux 命令查看所有进程的详细信息, 搭配 grep 就可以定位到指定进程了

ps aux | grep 3063

在这里插入图片描述
我们可以把 3063 端口改成别的
也可以把这个占用此端口的进程关闭(下策,不建议)

那我们就改端口
首先切换到 conf 目录中, 这个目录放的就是配置文件
云服务器上部署 Web 项目及端口异常处理_第8张图片
然后查看一下 8005 在那个文件中
使用

grep 8005 *

查看

在这里插入图片描述
然后使用 vim 打开更换端口即可

vim server.xml 

云服务器上部署 Web 项目及端口异常处理_第9张图片

把这个端口改了就好啦
重启服务器即可

成功启动了, 我们就能直接访问了吗?
不一定

云服务器上部署 Web 项目及端口异常处理_第10张图片

这是什么原因呢?
这种情况, 要么就是服务器没有正常启动(前面通过 netstat 已经验证)
要么就是服务器的防火墙/安全组, 没有正确打开

云服务器为了保证咱们机器的安全, 引入的安全机制
默认情况下只有这个机器的 22 端口(ssh) 是可以对外访问的, 要想让其他端口也能被外面访问, 就需要手动处理一下

如果是轻量级应用服务器, 我们要改的是防火墙
如果是 ECS 服务器, 我们改的是安全组
这里我们以 轻量级应用服务器为例(我用的是腾讯云服务器)

先登录腾讯云, 进入控制台
云服务器上部署 Web 项目及端口异常处理_第11张图片
进入到防火墙, 然后添加规则
云服务器上部署 Web 项目及端口异常处理_第12张图片

云服务器上部署 Web 项目及端口异常处理_第13张图片

把 8080 端口放开即可

确定之后, 生效可能需要几分钟, 有可能立马生效, 等几分钟就好

你可能感兴趣的:(JavaEE,服务器)