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

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

相关推荐
星野川崎2065 小时前
电商多店运维:云机24小时挂机频繁掉线、账号无故风控深度原因分析及解决方案
大数据·运维·服务器·云计算·电商
RisunJan5 小时前
Linux命令-xauth(X11 认证授权管理)
linux·服务器·microsoft
熊IT7 小时前
什么是原生住宅 IP?如何判断一个 IP 是否真正“原生”?
服务器·网络·tcp/ip
fb_123459 小时前
Linux三剑客超全精讲(grep+sed+awk)零基础入门|正则+实战面试题
linux·运维·服务器
晓晓_za89866810 小时前
Geo 优化服务 CI/CD 流水线搭建:源码自动构建、测试与灰度发布
运维·服务器·tcp/ip·spring·缓存·ci/cd
风流 少年10 小时前
hutool
java·服务器·开发语言
H_oRIZoN_10 小时前
Linux入门DAY27(文件IO(系统调用)详解|open/read/write/lseek)
java·linux·服务器
一个处女座的程序猿11 小时前
Computer之Server:caddy(可扩展的服务器平台)的简介、安装和使用方法、案例应用之详细攻略
运维·服务器·server·caddy
宸津-代码粉碎机12 小时前
FastUtil+AI多Agent实战:Java AI项目性能终极加速方案
java·服务器·开发语言·python·安全·php
潘正翔12 小时前
jenkins构建cicd流水线
运维·服务器·ci/cd·容器·自动化·jenkins·cicd