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

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

相关推荐
天诰7 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
陈希1238 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡9 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾9 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
讯捷蓝达15 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
数字新视界17 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落17 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng18 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮18 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹19 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器