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

文章目录

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

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

在云服务器中进入 MySQL

m 复制代码
mysql -u root -p

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

例如:

mysql 复制代码
-- 这个文件主要用来写建库建表文件
-- 一般都建议, 在建表的时候把建表 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');

然后我们查看一下表

用完 MySQL 想退出按下 Ctrl + D 即可

2. 微调代码

本地的数据库, 端口号, 用户名, 密码和云服务器的数据库可能不一样

本地数据库, 是自己安装的时候设置了密码

云服务器默认没密码

使用 netstat -anp | grep mysql 命令查看端口号

自己写的代码就得和这些信息匹配

3. 打包

使用 Meven 打成 war包

在 pob.xml 中设置好打的是 war 包和包名

xml 复制代码
   <packaging>war</packaging>
    <build>
        <finalName>blog_system</finalName>
    </build>

然后双击打包

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

然后打开 tomcat 目录中的 webapps 目录

然后把打好的 war 包拖进来

然后启动 tomcat

进入 bin 目录

使用 sh startup.sh 命令 启动tomcat

我们验证一下是否真正启动

使用 netstat -anp | grep 8080 命令查看 8080 端口是否启动

这里看到 LISTEN 状态就是启动了

端口被占用处理

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

l 复制代码
netstat nap | grep 8005 

因为我这里是正常启动的, 所以这些都是正确的

我们使用这个命令可以看到 8005端口 被 名字为 java , 进程id 为 3063 的进程给占用了

使用 ps aux 命令查看所有进程的详细信息, 搭配 grep 就可以定位到指定进程了

l 复制代码
ps aux | grep 3063

我们可以把 3063 端口改成别的

也可以把这个占用此端口的进程关闭(下策,不建议)

那我们就改端口

首先切换到 conf 目录中, 这个目录放的就是配置文件

然后查看一下 8005 在那个文件中

使用

l 复制代码
grep 8005 *

查看

然后使用 vim 打开更换端口即可

l 复制代码
vim server.xml 

把这个端口改了就好啦

重启服务器即可

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

不一定

这是什么原因呢?

这种情况, 要么就是服务器没有正常启动(前面通过 netstat 已经验证)

要么就是服务器的防火墙/安全组, 没有正确打开

云服务器为了保证咱们机器的安全, 引入的安全机制

默认情况下只有这个机器的 22 端口(ssh) 是可以对外访问的, 要想让其他端口也能被外面访问, 就需要手动处理一下

如果是轻量级应用服务器, 我们要改的是防火墙

如果是 ECS 服务器, 我们改的是安全组

这里我们以 轻量级应用服务器为例(我用的是腾讯云服务器)

先登录腾讯云, 进入控制台

进入到防火墙, 然后添加规则

把 8080 端口放开即可

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

相关推荐
勤奋的凯尔森同学5 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
丁卯4046 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
人间打气筒(Ada)8 小时前
MySQL主从架构
服务器·数据库·mysql
落笔画忧愁e9 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
小冷爱学习!9 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
落幕10 小时前
C语言-进程
linux·运维·服务器
xmweisi13 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
DC_BLOG13 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
yourkin66614 小时前
TCP...
服务器·网络·tcp/ip