部署 Web 项目到 Linux,可以使他人也访问项目的方法

目录

一、环境配置

二、建构项目并打包

三、上传Jar包到服务器, 并运行

3.1 上传Jar包

3.2 运行 jar 包

3.3 开放端口号

四、其他问题

4.1 运行异常问题

4.2 杀掉进程

五、总结


一、环境配置

如果本地项目是SpringBoot项目,使用的数据库是MySQL,那么就需要在Linux系统上安装JDK,MySQL,需要跟本地项目使用的版本一致。可参考上篇内容:

Linux搭建Java部署环境:安装 JDK 和 MySQL 的教程

接着在Linux系统上导入本地项目所用的sql文件,完成之后,修改本地项目里的数据库配置,改为Linux系统上的数据库用户名和密码。并且将日志文件的位置改为Linux系统上的文件位置(位置随意,没有的话可以提前建一个)。

如果配置文件有两个,专门设置了本地环境运行和线上环境运行的配置文件,那么可以如下操作:

针对不同平台创建不同的配置文件,要求名字为 application-XXX.yml 或者 application-XXX.properties 。以下以 application-XXX.yml为例:

(固定格式,只有后面的字母可以修改)
application-dev.yml
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
application-prod.yml
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
在主配置文件  application.yml 中指定配置文件, 并删除数据库相关配置
spring:profiles:active: prod

二、建构项目并打包

在本地使用maven进行打包。如果Test代码中有与环境配置相关的操作(比如数据库相关的操作),打包会失败,点击如下图标,可以跳过测试打包,随后点击点击 clean->package :

三、上传Jar包到服务器, 并运行

3.1 上传Jar包

直接拖动打好的jar包到xshell窗口即可完成文件的上传:
Xshell 可以直接拖动文件到窗口,达到上传文件的目的,如果使用其他客户端,不支持文件的上传,需要借助 lrzsz 命令:
上传文件:
sz filename
下载文件:
rz
执行该命令后,在弹出框中选择要上传的文件即可,上传的速度取决于网络。
问题: 如果执行上述命令之后,提示 Command 'XX' not found,表示当前云服务器未安装lrzsz 命令,需要先进行安装。
安装 lrzsz:
apt-get install lrzsz

3.2 运行 jar 包

nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &
nohup : 后台运行程序,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
语法格式:
 nohup Command [ Arg … ] [ & ]
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。

3.3 开放端口号

如果外网需要访问该服务,需要先服务器防火墙开放对应的端口号。
本着服务器安全的原则,云服务器上的端口非必要不开启。比如常见端口号:数据库 3306 , Redis 6379,尽可能避免开放,而是采用其他方式来连接,比如配置隧道的方式。
以腾讯云服务器举例:
1) 进入防火墙管理页面

 

2) 添加规则

端口号写需要开放的端口号,多个端口号以逗号分割。

完成之后就可以验证了。访问项目: http://IP:Port/blog_login.html 。IP改为云服务器的IP,Port改为项目的端口号,可以正常访问即可。

四、其他问题

4.1 运行异常问题

一个程序的正常运行,需要程序的正确和环境的正确。同样的代码在Windows上可以运行成功,不一定在 Linux上运行成功。不同的系统对代码的理解和支持是不同的。比如Windows系统对MySQL不区分大小写,Linux区分大小写。
服务不能正常访问的原因有很多,主要分以下方面:
1. 服务未启动:
  • 使用 ps -ef|grep java 查看程序是否在运行。
  • 使用 curl http://127.0.0.1:8080/blog_login.html 看下是否有返回html页面, 如果有返回, 说明程序启动成功了, 考虑端口未开放。
  • 如果未启动成功, 需要查看对应的日志, 根据原因来分析:数据库不存在;表不存在(区分大小写) 数据库密码不正确Jdk 安装版本不对, 或者未安装;mysql未设置密码 等等。
2. http端口未开放:
检查云服务器防火墙/安全组是否开放相应端口(如8080)

4.2 杀掉进程

如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务。
查看当前服务的进程:
ps -ef|grep java

上图35443 就是该服务的进程。
杀掉进程:
kill -9 PID

五、总结

  1. 连接Linux服务器的方式有很多,xshell只是其中一种,xshell是一个客户端,而非服务器。
  2. Ubuntu 软件管理工具是apt,其他的linux发性版本软件包管理工具不同,比如CentOS是使用yum来管理软件的。
  3. SpringBoot可以使用多个配置文件来完成不同平台的配置。
  4. 在Window上可以运性成功的代码,在Linux上不一定能运性成功。
  5. 启动程序需要使用nohup后台运行,需要停止服务时, 使用kill命令。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP 数据抓取 - Charles 抓包工具的使用(Charles 端口配置、CA 证书配置、Charles Android 模拟器配置)

前言说明 此文章是我在学习 Charles APP 抓包时编写,内容都是亲测有效,文章内容也有参考其他人,参考文章如下: Android 手机使用 charles 抓 https 请求(保姆级教程)网易 mumu 模拟器安装下载 charles 的…

计算机网络(八股文)

这里写目录标题 计算机网络一、网络分层模型1. TCP/IP四层架构和OSI七层架构⭐️⭐️⭐️⭐️⭐️2. 为什么网络要分层?⭐️⭐️⭐️3. 各层都有那些协议?⭐️⭐️⭐️⭐️ 二、HTTP【重要】1. http状态码?⭐️⭐️⭐️2. 从输入URL到页面展示…

2024年9月3日嵌入式学习

数据结构 1定义 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中, 并在此基础上实现某个特定的功能的操作&am…

「Python程序设计」条件控制:if-elif-else语句

我们在进行程序设计的过程中,基本上遵循的过程是,找出变量和常量,通过python编程语言,设置变量和常量,以及考虑是否需要赋予初始值。 设计变量和常量,其实就是为了模拟和计算我们的现实世界中,…

学习笔记--Docker

安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2.配置Docker的yum库 首先要安…

IntelliJ IDEA 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 设置编辑器字体3. 设置编译软件整体字体 前言 IntelliJ IDEA 自定义字体大小,统一设置为 JetBrains Mono 具体操作 【File】>【Settings...】>【Editor】>【Font】 统一设置…

C++:list篇

前言: 观看C的list前需要对链表有一些了解,如C语言的链表结构。本片仅介绍list容器中常用的接口函数概念以及使用。 list的概念: 简而言之,C的list是一个双向带哨兵位的链表容器模板 list的构造: 1.list():默认构造 2.li…

认识git和git的基本使用,本地仓库,远程仓库和克隆远程仓库

本地仓库 #安装git https://git-scm.com/download/win #git是什么?有什么用? git相当于一个版本控制系统,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 作用: 记录(项目&#…

物联网(IoT)支持的小型水处理厂实时硬件在环(HIL)仿真

这篇论文的标题是《Real-Time Hardware-In-The-Loop Simulation of IoT-Enabled Mini Water Treatment Plant》,作者是 Mohamad Taib Miskon 等人,发表在 2024 年 IEEE 自动控制与智能系统国际会议(I2CACIS)上。以下是该论文的主要…

【Agent】Agent Q: Advanced Reasoning and Learning for Autonomous AI Agents

1、问题背景 传统的训练Agent方法是在静态数据集上进行监督预训练,这种方式对于要求Agent能够自主的在动态环境中可进行复杂决策的能力存在不足。例如,要求Agent在web导航等动态设置中执行复杂决策。 现有的方式是用高质量数据进行微调来增强Agent在动…

vector 常见函数

目录 一.vector 构造函数 二 . Iterators 迭代器(random access iterator) 三.Capacity: 空间 3.1 resize 3.2 reserve 四.Element access: 元素访问 方式 4.1 operator[] 类似于数组的 [] 4.2 front 和back 五.Modifiers: 六.vector 的 二…

18、Gemini-Pentest-v2

难度 中 目标 root权限 一个flag 靶机启动环境为VMware kali 192.168.152.56 靶机 192.168.152.63 信息收集 web测试 访问80端口 上面介绍了一下这个系统是一个内部系统,让员工查看他们的个人资料还可以导出为PDF 页面还有一个链接是UserList可以访问但是页面什…

ES数据写入过程

1. 写入请求 当一个写入请求(如 Index、Update 或 Delete 请求)通过REST API发送到Elasticsearch时,通常包含一个文档的内容,以及该文档的索引和ID。 2. 请求路由 协调节点:首先,请求会到达一个协调节点…

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…

Zookeeper 官方示例2-SyncPrimitive 代码解读(二)

测试命令 java jar .\ZookeeperDemo-0.0.1-SNAPSHOT.jar bTest 192.168.206.100:2181 2 1. Barrier(阻塞原语) 1.1 概念 [!quote] A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a comput…

vulhub xxe靶机

先用御剑扫描出ip然后进入网页 进入robots.txt里面会发现俩个目录然后我们进去xxe里面 进入xxe页面进行登录&#xff0c;burp抓包 然后进入重放器 可以看到关于密码和用户名的是xml,那么就可以考虑用xxe注入 <?xml version"1.0" ?> <!DOCTYPE r [ <!…

监视SQL Server 内存使用量

文章目录 I 监视SQL Server 内存使用量确定页生存期确定当前的 SQL Server 内存利用率有关当前分配内存的信息II 等待资源池 %ls (%ld)中的内存资源来执行该查询时发生超时。 请重新运行查询。原因查看服务器级别设置的超时值资源信号灯 DMV sys.dm_exec_query_resource_semaph…

IP网络广播系统(IP网络广播系统是什么及它的优势与应用)

一、引言 在当今数字化的时代&#xff0c;音频传播技术也在不断革新。IP网络广播系统作为一种先进的音频传输解决方案&#xff0c;正逐渐在各个领域发挥重要作用。那么&#xff0c;究竟什么是IP网络广播系统呢&#xff1f;它又有着怎样独特的优势和广泛的应用呢&#xff1f;本…

深度学习(二)-损失函数+梯度下降

损失函数 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也有称之为代价函数&#xff08;Cost Function&#xff09;&#xff0c;用来度量预测值和实际值之间的差异。 损失函数的作用 度量决策函数f&#xff08;x&#xff09;和实际值之间的差异。 作为模型性能…

检测CSRF漏洞的工具

免责声明此文档仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…