云服务器上部署 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 端口放开即可

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

相关推荐
Web极客码2 分钟前
抹平首包开销:我用 Claude 调优 Nginx 的 Brotli 与 Gzip 动态压缩,平衡 CPU 与网络吞吐
服务器·agent 工作流·agent 图
云杂项34 分钟前
tmux指南:安装、配置与高效使用(Ubuntu上)
linux·服务器·ubuntu
泡海椒1 小时前
趋势分析报表:jquick-pdf折线图PDF生成实战
java·大数据·运维·服务器·前端·pdf
qq_394562001 小时前
【在Linux上升级nginx】
linux·服务器·nginx
丸子君君2 小时前
【以麒麟服务器时间为准,定时请求时间同步】
运维·服务器·单片机
Tairitsu_H2 小时前
[Linux系统] 基础IO核心 | 系统接口 | 文件描述符 | 重定向
linux·服务器·文件操作
事已至此先睡覺吧2 小时前
(三)Linux 基础指令(二):基础常用的一些指令
linux·运维·服务器
不会写DN3 小时前
Go日志库工程选型与逃逸分析评测报告
java·服务器·golang
鬼手点金4 小时前
Claude Code示范案例-常用快捷命令
java·服务器·前端·计算机视觉·前向传播
阿钱真强道4 小时前
12 嵌入式操作系统 | UDP 服务器编程
服务器·网络协议·udp