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

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

相关推荐
@时间旅行者@15 分钟前
LINUX离线安装postgres,rpm方式安装
linux·运维·服务器·postgresql·离线安装
杨云龙UP19 分钟前
SQL Server 2016通过SSMS(SQL Server Management Studio)图形界面完成创建用户和授权_20251230
运维·服务器·数据库
qq_4162764237 分钟前
linux bashrc写各种离线库路径并验证
linux·运维·服务器
B2_Proxy1 小时前
如何搭建高速稳定安全的网络环境?住宅代理是关键
服务器·网络·安全
不染尘.1 小时前
TCP拥塞控制
服务器·网络·计算机网络·tcp
登山人在路上1 小时前
Nginx负载均衡策略
服务器·nginx·负载均衡
zzhclc1 小时前
pyrosm windows 如何搭建环境 使用conda
linux·运维·服务器
沐浴露z2 小时前
详细解析 SYN泛洪
服务器·网络
QT 小鲜肉2 小时前
【Linux命令大全】001.文件管理之slocate命令(实操篇)
linux·运维·服务器·数据库·笔记
zfj3212 小时前
Linux 系统 I/O 监控命令大全
linux·服务器·数据库·io·监控