从零搭建自己的javaweb网站,Javaweb网站项目打包jar后上传到Linux操作系统的阿里云服务器,公网成功访问,全流程,流程精简,小白秒懂

背景

很多同学自己写了一个javaweb,能在本地跑了,但是还想用公网访问自己的javaweb,写完一个项目99%进度,就差1%最后一步部署网站了,这篇文章教你如何快速地将javaweb部署到云服务器,笔者亲手总结,码字不易,先赞后看,蟹蟹~!

材料

1、1个基于springboot的javaweb打包后的jar文件(建议在本地开发环境中测试好再打包)

2、1个阿里云账号

3、1个阿里云域名(有一些项目需要备案才能访问域名,只想项目能公有访问到的话可以只用ip访问,但是存在风险)

4、1个阿里云服务器

5、1个ftp工具如FileZilla(将本地文件上传到远程服务器中,也可以用ssh命令直接传输可能很慢)

目录

1 账号注册

1.1 注册一个阿里云账号

注册阿里云账号我省略了哈,自己上阿里云官网注册就行

1.2 购买一个域名

买便宜的就行,自己选

1.3 购买一个云服务器

也是买最便宜的就行,镜像选默认,操作系统默认推荐

1.4 进入云服务器信息页

1.4.1 添加服务器安全组

这里相当于配置外部防火墙,需要放行SSH协议的22端口、mysql的3306端口、HTTP协议的80端口、HTTPS协议的443端口和Tomcat默认使用的8080端口。因为3306默认mysql运行端口,8080是javaweb的默认启动web服务器端口(如果自己项目中指向了某个端口,就设置对应自己项目中的端口)

1.4.2 workbench连接远程linux服务器实例

按照指引来进,可以用密钥进,也可以ssh进,要记住自己的账号密码哈。进去之后就会是一个linux命令框操作界面

2 远程服务器环境配置

2.1 下载jdk17

 (根据自己javaweb项目的jdk环境来)

1、执行以下命令,创建JDK安装目录。

mkdir /usr/jdk

2、执行以下命令,下载JDK安装包。

cd /usr/jdk
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

3、执行以下命令,将 JDK 源码包解压到指定位置。

tar xzf jdk-17_linux-x64_bin.tar.gz -C /usr/jdk/

4、配置环境变量。

a.执行以下命令,查看JDK安装后文件的路径。

find /usr/jdk -name 'jdk-17.*'

回显信息如下

/usr/jdk/jdk-17.0.8

b.打开配置文件

  1. 在配置文件末尾,按 i 进入编辑模式。

  2. 注意:JAVA_HOME值需替换为实际JDK安装的路径。本示例JDK安装路径为/usr/jdk/jdk-17.0.8。

c.添加以下信息

#set java environment
export JAVA_HOME=/usr/jdk/jdk-17.0.7
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

d.按下Esc键,输入:wq并回车以保存并关闭文件。

e.立即生效环境变量。

source /etc/profile

 5、查看jdk版本

java -version

示例如下

[root@iZuspq7vnxm**** ~]# java -version
java version "17.0.8" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)

2.2 安装tomcat8

(我这里因为springboot内置了tomcat我是没装的,按你项目来)

附上官方安装连接https://help.aliyun.com/zh/ecs/use-cases/manually-deploy-a-java-web-environment-on-an-instance-that-runs-alibaba-cloud-linux-2?spm=a2c4g.11186623.0.0.46b6574ay9bJIr

2.3 安装mysql5.7

根据自己javaweb项目的mysql版本来

在阿里云服务器上安装 MySQL 5.7 的步骤如下。这个例子基于 CentOS/Red Hat 系统。对于其他 Linux 发行版,请适当调整命令。

1. **更新软件包列表:**```bashsudo yum update```2. **下载 MySQL 5.7 的 Yum Repository 配置:**```bashsudo rpm -Uvh https://repo.mysql.com/mysql57-community-release-el7.rpm```如果你遇到问题,可以访问 [MySQL Yum Repository](https://dev.mysql.com/downloads/repo/yum/) 页面,手动下载 RPM 包并安装。3. **安装 MySQL 5.7 服务器:**```bashsudo yum install mysql-community-server```4. **启动 MySQL 服务:**```bashsudo service mysqld start```5. **查看 MySQL 临时密码:**安装完成后,系统会生成一个临时密码。使用以下命令查看:```bashsudo grep 'temporary password' /var/log/mysqld.log```记下这个密码,稍后会用到。6. **安全设置:**执行 MySQL 安全设置脚本:```bashsudo mysql_secure_installation```在安全设置脚本中,你需要输入刚才查看到的临时密码,然后按照提示进行安全设置,包括更改 root 密码、删除匿名用户、禁用远程 root 登录等。7. **登录 MySQL:**使用新设置的 root 密码登录 MySQL:```bashmysql -u root -p```输入密码后,你应该能够成功登录到 MySQL。8. **创建数据库和用户:**在 MySQL 中,可以使用以下命令创建数据库和用户。这里创建了一个名为 `senbao` 的数据库,你可以根据需要修改。```sqlCREATE DATABASE senbao;CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';GRANT ALL PRIVILEGES ON senbao.* TO 'your_username'@'localhost';FLUSH PRIVILEGES;```请替换 `'your_username'` 和 `'your_password'` 为实际的用户名和密码。9. **退出 MySQL:**```sqlEXIT;```以上步骤完成后,你应该已经成功安装 MySQL 5.7 并创建了一个用于应用连接的数据库和用户。确保在你的 Spring Boot 项目中使用正确的连接字符串、用户名和密码。

3 项目打包部署

3.1 在idea中通过maven进行打包

打包成jar文件,这里先可以搜索其它博主的文章,后续我再补齐。

3.2 上传jar包到服务器

3.1.1 使用ftp工具(推荐)

用FileZilla,在FileZilla官方下载,直接ssh可视化远程连接服务器,并上传打包的jar程序包,上传到的目录自己选吧

3.1.2 使用scp(前提你得有这个命令包)

使用 SCP 命令(Secure Copy Protocol) 在本地命令行中执行以下命令,将 JAR 文件通过 SCP 上传到服务器:

bash
Copy code
scp /path/to/your-app.jar username@your_server_ip:/path/on/server/
/path/to/your-app.jar: 本地 JAR 文件的路径。
username: 你的服务器用户名。
your_server_ip: 你的服务器 IP 地址。
/path/on/server/: 服务器上的目标路径。

3.3 启动项目,运行jar

3.3.1 临时启动运行(当前会话窗口有效)

要项目程序直接在当前连接会话窗口运行,直接进入jar包所在目录,命令框输入

java -jar your-app.jar包名
3.3.2 持久化运行(后台运行)
nohup java -jar your-app.jar &,

也可以自己写个脚本,或者系统服务管理工具systemd 来管理 Spring Boot 应用的服务

4 浏览器访问

将javaweb的jar包打包上服务器并运行了,但是要显示8080端口才能访问,如何我想不显示就能访问这个页面呢??

因为浏览器默认用的端口是80,你可以用nginx或者apache做一个反向代理,将80端口转发到8080,你就可以直接用公网ip访问到8080端口应用了。

 在 Linux 系统上使用反向代理,您可以选择使用 Nginx 或 Apache 等 Web 服务器来配置。下面分别介绍在 Nginx 和 Apache 中如何配置反向代理。

4.1 nginx配置

nginx:

在完成配置后,访问 `http://your-domain.com` 将通过反向代理转发到您的 Spring Boot 应用程序。在Linux系统上使用Nginx作为反向代理服务器,可以通过以下步骤进行配置:1. **安装 Nginx:**使用包管理工具安装Nginx。例如,在基于Debian/Ubuntu的系统上,可以运行以下命令:```bashsudo apt-get updatesudo apt-get install nginx```在基于RHEL/CentOS的系统上,可以使用`yum`:```bashsudo yum install epel-releasesudo yum install nginx```2. **配置反向代理:**打开Nginx的配置文件,通常是`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`,然后添加以下配置:```nginxserver {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:8080;  # 将端口号替换为您的Java Web应用程序实际端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 可选:如果您的应用程序支持HTTPS,您可以添加以下配置以启用SSL# listen 443 ssl;# ssl_certificate /path/to/your/certificate.pem;# ssl_certificate_key /path/to/your/private/key.pem;# ssl_protocols TLSv1.2 TLSv1.3;# ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';# ssl_prefer_server_ciphers off;}```请注意替换`your_domain.com`为您的域名,以及将`http://localhost:8080`替换为您Java Web应用程序实际的主机和端口。3. **重启 Nginx:**配置完成后,保存文件并重启Nginx,使更改生效:```bashsudo service nginx restart```或者使用 `systemctl`:```bashsudo systemctl restart nginx```通过这个配置,Nginx将监听80端口,并将请求代理到您Java Web应用程序运行的端口。您可以通过访问 `http://your_domain.com` 来访问您的应用程序。如果您启用了SSL,可以通过 `https://your_domain.com` 访问。确保防火墙允许流量通过所选择的端口。您可以使用文本编辑器来打开Nginx的配置文件。在Linux系统中,常见的文本编辑器包括`nano`、`vim`、`emacs`等。以下是使用`nano`和`vim`两个编辑器的示例:### 使用 nano 编辑器:```bash
sudo nano /etc/nginx/nginx.conf
```或者,如果您要编辑特定站点的配置文件,可以使用:```bash
sudo nano /etc/nginx/sites-available/default
```在编辑器中,找到合适的位置,添加或修改您的配置。完成后,按 `Ctrl + X`,然后按 `Y` 确认保存,最后按 `Enter` 退出。### 使用 vim 编辑器:```bash
sudo vim /etc/nginx/nginx.conf
```或者,如果您要编辑特定站点的配置文件,可以使用:```bash
sudo vim /etc/nginx/sites-available/default
```按 `i` 进入插入模式,编辑文件。完成后,按 `Esc` 退出插入模式,然后输入 `:wq` 并按 `Enter` 保存并退出。请注意,`vim` 是一个强大的文本编辑器,但对于初学者可能会有一些学习曲线。如果您不熟悉 `vim`,使用 `nano` 是一个更简单的选择。完成编辑并保存后,确保重启 Nginx 以使更改生效:```bash
sudo service nginx restart
```或者使用 `systemctl`:```bash
sudo systemctl restart nginx```sudo systemctl reload nginx刷新

4.2 apache配置

apache:

### 使用 Apache 配置反向代理1. **安装 Apache:**```bashsudo apt-get updatesudo apt-get install apache2```2. **启用 Apache 代理模块:**```bashsudo a2enmod proxysudo a2enmod proxy_http```3. **编辑 Apache 配置文件:**```bashsudo nano /etc/apache2/sites-available/000-default.conf```或者使用其他编辑器。4. **在配置文件中添加反向代理配置:**在 `<VirtualHost>` 块中添加以下配置,将请求转发到您的 Spring Boot 应用程序运行的地址和端口:```apache<VirtualHost *:80>ServerName your-domain.com  # 替换为您的域名ProxyPass / http://localhost:8080/  # 替换为实际运行的地址和端口ProxyPassReverse / http://localhost:8080/# 添加其他配置,例如 SSL 配置等(可选)</VirtualHost>```5. **保存并关闭文件。**6. **测试 Apache 配置:**```bashsudo apache2ctl configtest```确保没有报错。7. **重启 Apache 服务:**```bashsudo service apache2 restart```


确保将上述配置中的 `your-domain.com` 替换为您的实际域名(或者公网ip),而 `http://localhost:8080` 替换为您的 Spring Boot 应用程序实际运行的地址和端口。

5 更新代码包,重启进程

重启更新了代码包,但是原来jar占用了原来的8080端口,这时候要终止8080端口进程再去重启新的资源包

终止进程:

通过以下方式检查应用程序的运行状态:```bash
ps -ef | grep java
```这将列出所有Java进程,您应该能够找到您的应用程序。如果您在运行中看到了相关的Java进程,则表示应用程序正在正常运行。如果您想停止应用程序,可以使用 `kill` 命令。首先,查找进程ID(PID):```bash
ps -ef | grep java
```然后,使用 `kill` 命令终止进程。假设PID是64509:```bash
kill 64509
```请确保替换实际的PID。

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

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

相关文章

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…

Git客户端(TortoiseGit)使用详解

1.概述 使用TortoiseGit比直接使用git 客户端和命令实现代码版本管理更为方便&#xff0c;本文根据实际使用情况作一些记录&#xff0c;特别是对于解决冲突的处理。 2.Git安装与配置 下载 Git - Downloads&#xff0c; 可参考Git安装步骤完成Git的安装与配置。 3.TortoiseG…

python学习笔记B-20:序列实战--处理千年虫

将2位数表达的年份&#xff0c;转换为用4位数表达&#xff1a; print("将列表中的2位数年份转换为4位数年份") lst[88,89,90,00,99] print(lst) for index in range(len(lst)):if len(str(lst[index]))2:lst[index] 1900int(lst[index])elif len(str(lst[index]))1…

收单外包机构备案情况分析,广东备案机构遥遥领先

孟凡富 4月30日&#xff0c;中国支付清算协会公示了最新一批收单外包服务备案机构&#xff0c;较上期增加了689家。其中&#xff0c;新增聚合支付技术服务备案机构达6家。截至4月末&#xff0c;备案的收单外包服务机构总数为27714家&#xff0c;同时取消了330家机构的备案资格&…

学习,工作与生活,怎么平衡?

今晚夜景很美&#xff0c;我在校园里转了转...... 不知道大家有没有过这样的体验&#xff1a;在放假之前&#xff0c;愿望总是挺美好的&#xff0c;“原本想看看书给自己充充电&#xff0c;但是&#xff0c;当翻开书之后&#xff0c;很快就开始走神、犯困&#xff0c;甚至坐立…

spring-security 学习笔记一 --- 基于默认配置

1.前言 本文主要讲解 spring-security 在不做任何配置情况下&#xff0c;它的启动流程和认证过程。 1. 准备工作 这里是基于springboot 2.2.5版本对应 spring-security 5.2.2版本演示的 &#xff08;按我下面导入即可&#xff0c;版本是它自己匹配的&#xff09; 引入依赖 &…

SpringBoot项目配置SpringDataRedis

1 在SpringBoot中常规的配置 <dependency><!--自带lettcute客户端--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.ap…

SpringBoot-@Transactional注解失效

Transactional注解失效 Transactional失效场景 以下是一些常见导致Transactional注解失效的场景&#xff0c;配合相应的Java代码演示&#xff1a; 1、方法修饰符非公开&#xff08;非public&#xff09; Transactional注解失效的原因在于Spring事务管理器如何实现对事务的代…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳&#xff1a; 1&#xff09;CBOW模型&#xff1a; 2c个向量是相加&#xff0c;而不是拼接。 2&#xff09;CBOW模型中的哈夫曼树&#xff1a; 从root开始&#xff0c;向左为1&#xff0c;向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Redis基本數據結構 ― String

Redis基本數據結構 ― String 介紹常用命令範例1. 為字串鍵設值/取得字串鍵的值2. 查看字串鍵的過期時間3. 如何為key設置時間?4. 如何刪除指定key?5. 如何增加value的值?6. 獲取value值的長度 介紹 字串鍵是Redis中最基本的鍵值對類型&#xff0c;這種類型的鍵值對會在數據…

什么是Vuex它的作用是什么怎么用

Vuex是一个专门为Vue.js应用程序开发的状态管理模式。你可以将其想象为一个“前端数据库”或数据仓库&#xff0c;用于管理前端项目的变量。它的核心是一个store&#xff08;仓库&#xff09;&#xff0c;这个仓库基本上是一个容器&#xff0c;包含了应用中大部分的状态&#x…

Spring - 10 ( 9000 字 Spring 入门级教程 )

一&#xff1a;MyBatis 进阶 动态 SQL 是 Mybatis 的强大特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 1.1 if 标签 在注册用户的时候&#xff0c;可能会有这样⼀个问题&#xff0c;如下图所示&#xff1a; 注册分为两种字段&#xff1a;必填字段和非必填字段&…

acwing算法提高之数学知识--同余和矩阵乘法

目录 1 介绍2 训练 1 介绍 本博客用来记录同余和矩阵乘法相关的题目。 2 训练 题目1&#xff1a;203同余方程 C代码如下&#xff0c; #include <iostream> #include <algorithm> #include <cstring>using namespace std;typedef long long LL;int exgcd…

Vue ui 创建vue项目,详细使用攻略。

1.安装及启动 1.1 Vue ui 使用前提是全局安装vue.js 命令如下 npm install vue -g 1.2 安装过Vue.js 之后 随便在自己系统的一个地方打开命令面板 1.3 使用命令启动vue ui面板创建项目 vue ui 如图运行后显示这种就是启动成功&#xff0c;成功之后会弹出页面或者直接访问你的…

汇编语言-内中断

概念&#xff1a; 任何一个通用 CPU 都具备一种能力, 可以在执行完当前正在执行的指令之后, 检测到从 CPU 外部发送过来的或者内部产生的一种特殊信息, 并且可以立即对所接受到的信息进行处理&#xff0c;这种特殊的信息称为&#xff1a; 中断信息 中断意味着 CPU 不再继续…

opencv invert函数

在OpenCV中&#xff0c;cv::invert函数用于计算矩阵的逆。它的语法如下&#xff1a; bool cv::invert(InputArray src, OutputArray dst, int flagsDECOMP_LU)其中&#xff1a; src 是输入矩阵&#xff08;2x2或者NxN&#xff09;。dst 是输出矩阵&#xff0c;即计算得到的逆…

伦敦金的交易时间段都适合投资吗?

是所有的交易时间段都适合投资。首先&#xff0c;让我们了解伦敦金的交易时间。伦敦金市场的交易时间分为两个主要时段&#xff1a;亚洲盘和欧美盘。亚洲盘通常在北京时间早晨6点至下午5点半左右&#xff0c;而欧美盘则从北京时间晚上8点半开始&#xff0c;一直到次日早晨4点半…

什么是gcc-arm-linux-gnueabihf?

2024年5月3日&#xff0c;周五晚上 gcc-arm-linux-gnueabihf 是针对 ARM 架构&#xff08;ARMv7 和 ARMv8&#xff09;的 Linux 系统开发的 GNU C/C 编译器套件&#xff0c;可以在 x86 或 x86_64 架构的主机上使用&#xff0c;用于交叉编译 ARM Linux 应用程序和库。 gcc-arm-…

痉挛性斜颈患者早上运动还是下午运动更合适?选对了让治疗更简单!【北京仁爱堂】

对于痉挛性斜颈患者来说&#xff0c;选择合适的运动时间对于治疗的效果和舒适度至关重要。那么&#xff0c;痉挛性斜颈患者早上运动还是下午运动更合适呢&#xff1f;本文将从多个角度对此进行分析&#xff0c;帮助患者找到最适合自己的运动时间。 首先&#xff0c;我们需要了…

python学习笔记----文件操作(八)

一、 open() 函数 在 Python 中&#xff0c;处理文件包括读取和写入操作&#xff0c;是通过使用内置的 open() 函数来实现的。 语法&#xff1a; open(file, mode"r", encoding"utf-8") file: 文件路径。mode: 文件打开模式&#xff1a; ‘r’&#xff…