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

文章目录

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

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

在云服务器中进入 MySQL

mysql -u root -p

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

-- 这个文件主要用来写建库建表文件
-- 一般都建议, 在建表的时候把建表 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 包和包名

   <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端口是不是被其他程序占用了

netstat nap | grep 8005 

在这里插入图片描述
因为我这里是正常启动的, 所以这些都是正确的
我们使用这个命令可以看到 8005端口 被 名字为 java , 进程id 为 3063 的进程给占用了
使用 ps aux 命令查看所有进程的详细信息, 搭配 grep 就可以定位到指定进程了

ps aux | grep 3063

在这里插入图片描述
我们可以把 3063 端口改成别的
也可以把这个占用此端口的进程关闭(下策,不建议)

那我们就改端口
首先切换到 conf 目录中, 这个目录放的就是配置文件
在这里插入图片描述
然后查看一下 8005 在那个文件中
使用

grep 8005 *

查看

在这里插入图片描述
然后使用 vim 打开更换端口即可

vim server.xml 

在这里插入图片描述

把这个端口改了就好啦
重启服务器即可

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

在这里插入图片描述

这是什么原因呢?
这种情况, 要么就是服务器没有正常启动(前面通过 netstat 已经验证)
要么就是服务器的防火墙/安全组, 没有正确打开

云服务器为了保证咱们机器的安全, 引入的安全机制
默认情况下只有这个机器的 22 端口(ssh) 是可以对外访问的, 要想让其他端口也能被外面访问, 就需要手动处理一下

如果是轻量级应用服务器, 我们要改的是防火墙
如果是 ECS 服务器, 我们改的是安全组
这里我们以 轻量级应用服务器为例(我用的是腾讯云服务器)

先登录腾讯云, 进入控制台
在这里插入图片描述
进入到防火墙, 然后添加规则
在这里插入图片描述

在这里插入图片描述

把 8080 端口放开即可

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197426.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

oracle闪回恢复表数据

oracle闪回恢复表数据 1.打开监听和数据库&#xff0c;进入需要操作的表的所属用户下 [oraclemydb ~]$ lsnrctl start [oraclemydb ~]$ sqlplus / as sysdba SQL> startup SQL> conn test/123456 SQL> select * from test1&#xff1b;2.删除任意数据&#xff1a; …

「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用

介绍 Cisco Packet Tracker&#xff1a;网络仿真工具&#xff0c;用于模拟网络配置。 &#xff08;一&#xff09;通过 带外管理 配置交换机&#xff08;Switch&#xff09; 带外&#xff1a;Out-of-Band, OOB写在前面&#xff1a;如何打开Console页面 1、模式转换 用户执行模…

如何用postman实现接口自动化测试

postman使用 开发中经常用postman来测试接口&#xff0c;一个简单的注册接口用postman测试&#xff1a; 接口正常工作只是最基本的要求&#xff0c;经常要评估接口性能&#xff0c;进行压力测试。 postman进行简单压力测试 下面是压测数据源&#xff0c;支持json和csv两个格…

Android开源框架--Dagger2详解

功名只向马上取&#xff0c;真是英雄一丈夫 一&#xff0c;定义 我们知道在一个类中&#xff0c;通常会定义其他类型的变量&#xff0c;这个变量就是我们所说的“依赖“。 对一个类的变量进行初始化&#xff0c;有两种方式。第一种&#xff0c;这个类自己进行初始化&#xff…

Elasticsearch底层原理分析——新建、索引文档

es版本 8.1.0 重要概念回顾 Elasticsearch Node的角色 与下文流程相关的角色介绍&#xff1a; Node Roles配置主要功能说明masternode.roles: [ master ]有资格参与选举成为master节点&#xff0c;从而进行集群范围的管理工作&#xff0c;如创建或删除索引、跟踪哪些节点是…

计算机毕业设计php+bootstrap小区物业管理系统

意义&#xff1a;随着我国经济的发展和人们生活水平的提高&#xff0c;住宅小区已经成为人们居住的主流&#xff0c;人们生活质量提高的同时&#xff0c;对小区物业管理的要求也越来越高&#xff0c;诸如对小区的维修维护&#xff0c;甚至对各项投诉都要求小区管理者做得好&…

Django请求生命周期流程

浏览器发起请求。 先经过网关接口&#xff0c;Django自带的是wsgiref&#xff0c;请求来的时候解析封装&#xff0c;响应走的时候打包处理&#xff0c;这个wsgiref模块本身能够支持的并发量很少&#xff0c;最多1000左右&#xff0c;上线之后会换成uwsgi&#xff0c;并且还会加…

Linux 项目自动化构建工具:make/makefile

什么是 make make 是一个命令&#xff0c;他会在源文件的当前目录下寻找 makefile 或者 Makefile 文件执行这个文件中的代码。 makefile 文件的编写 我们先来见见猪跑&#xff0c;看看 make 怎么用的&#xff1a; 下面是 makefile 文件的内容&#xff1a; 这是 test.c 中的…

Vue19 列表过滤

直接上代码 以下代码使用了两种实现方式&#xff0c;监视属性和计算属性 当能用计算属性实现时&#xff0c;推荐使用计算属性 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>列表过滤</title><script type&q…

python项目报错

解决办法&#xff1a;不要用配置的镜像脚本&#xff0c;直接用此命令 pip install pandas -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

C++类与对象(7)—友元、内部类、匿名对象、拷贝对象时编译器优化

目录 一、友元 1、定义 2、友元函数 3、友元类 二、内部类 1、定义 2、特性&#xff1a; 三、匿名对象 四、拷贝对象时的一些编译器优化 1、传值&传引用返回优化对比 2、匿名对象作为函数返回对象 3、接收返回值方式对比 总结&#xff1a; 一、友元 1、定义…

Javaweb之Vue组件库Element之Form表单的详细解析

4.3.4 Form表单 4.3.4.1 组件演示 Form 表单&#xff1a;由输入框、选择器、单选框、多选框等控件组成&#xff0c;用以收集、校验、提交数据。 表单在我们前端的开发中使用的还是比较多的&#xff0c;接下来我们学习这个组件&#xff0c;与之前的流程一样&#xff0c;我们首…

深入了解MD5加密技术及其应用与局限

一、MD5简介 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种单向散列函数&#xff0c;由美国密码学家罗纳德李维斯特&#xff08;Ronald Linn Rivest&#xff09;于1991年发明。它主要用于将任意长度的消息映射成固定长度的摘要&#xff0c;从而实现消息的完整…

20分钟拥有自己的ChatGPT4,高效低成本,小白必看

准备工作 1、准备一个3.5的账号 2、一张虚拟卡 开始步骤 从ChatGPT第一版发布到现在&#xff0c;还不到一年的时间中&#xff0c;可是它使用的GPT架构已经从3.5版本进化到现在的4.0版本&#xff0c;随之而来的是其能力的极大提升。下面是GPT-4在其官网的介绍中的一句话&…

java基础进阶-线程池

1、线程池 线程池就是一个可以复用线程的技术。 2、应用场景 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c;而创建新线程的开销是很大的&#xff0c;并且请求过多时&#xff0c;肯定会产生大…

Python数据预处理详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 数据预处理是数据科学中至关重要的步骤&#xff0c;它包括清洗、转换、归一化等操作&#xff0c;以使数据适合于机器学习模型的使用。Python提供了多种强大的库和工具&#xff0c;能够帮助进行数据预处理。本文将…

C语言枚举的作用是什么?

我在知乎上看到这个问题&#xff0c;一开始&#xff0c;也有一些疑惑&#xff0c;后面查了一些资料&#xff0c;对于这个问题&#xff0c;简单的说一下我的看法。 枚举有多大 枚举类型到底有多大&#xff0c;占多少空间呢&#xff1f;这个要具体情况具体分析&#xff0c;编译器…

第八节HarmonyOS @Component自定义组件的生命周期

在开始之前&#xff0c;我们先明确自定义组件和页面的关系&#xff1a; 1、自定义组件&#xff1a;Component装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用。 2、页面&#xff1a;即应用的UI页面。可以由一个或者多个自定义组件组成&#xff0c;Entry装饰的自定…

LeetCode Hot100 108.将有序数组转为二叉搜索树

题目&#xff1a; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 方法&#xff1a; class Solution {public…

深信服防火墙设置应用控制策略(菜鸟必看)

PS&#xff1a;前几天发布了关于深信服防火墙路由部署的流程&#xff1a;深信服防火墙路由模式开局部署-手把手教学&#xff08;小白篇&#xff09;-CSDN博客 昨天晚上有csdn的朋友联系我&#xff0c;说有一个关于ACL访问的问题要帮忙看一下 解决了以后&#xff0c;写个大概的…