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

棕豆兔& 2024-09-06 15:33:04 阅读 58

目录

一、环境配置

二、建构项目并打包

三、上传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 :

<code>spring:

datasource:

url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=false

username: root

password: root

driver-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=false

username: root

password: 123456

driver-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 命令:

上传文件:

<code>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 杀掉进程

如果我们需要重启服务,或者重新部署等,都需要先停止之前的服务。

查看当前服务的进程:

<code>ps -ef|grep java

上图35443 就是该服务的进程。

杀掉进程:

<code>kill -9 PID

五、总结

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。