Java Web程序的部署

写在前:要想将我们写好的项目让其他人可以访问,仅仅完成代码是不能直接运行的。这就需要在Linux系统上搭建Java web程序的运行环境。这里以我所做的博客系统为例,进行搭建。

1. 准备依赖

(1)JVM(JDK) 虚拟机

(2)Tomcat 运行在Tomcat上

(3)Mysql数据库

在Linux上是通过命令的方式进行安装的,这里使用最简单的方式 -- 包管理器 进行安装。

Linux会把一些软件包,放到对应的服务器上,通过包管理器这样的程序,来吧这些软件包下载安装。ubuntu -- apt,centos -- yum(这里我使用的是ubuntu)。

1.1 jdk安装

(1)使用 apt 命令来查看服务器上有哪些软件包。(搭配grep使用)

apt list | grep jdk

自己电脑上的jdk和云服务上的jdk一致,这里我使用的是jdk8。

 在安装的时候要确保是出于root用户下,如果不是管理员,需要使用 sudo su 切换到管理员。

sudu su

复制:ctrl+insert

粘贴:shift+insert 将选择的版本名字粘贴到后面

输入安装命令

确认

等待

安装成功确认-javac

1.2 tomcat安装

1.2.1 命令安装

输入命令查找tomcat

apt list | grep tomcat

但是这里的tomcat是9版本的,我电脑中使用的是tomcat8.5

tomcat8.5 搭配的是servlet3.1,如果是tomcat9 就需要搭配servlet4.0

1.2.2 手动安装tomcat

(1)将之前电脑上的Tomcat上传到Linux上

A. 需要先安装 lrzsz 这样的软件包

apt install lrzsz

lrzsz包含两个命令:

sz -- 把linux上的文件传到windows上。

rz -- 把windows上的文件传到linux上。

B. 新建目录

将tomcat的拖进目录,一次只能拖动一个文件(打成压缩包)

(2)解压缩

unzip命令:需要在ubuntu上安装unzip。

unzip +包名进行解压缩

查看解压后的文件

可以看到展示出来的文件和windows上是相同的,下面进行启动tomcat -- 进入 bin/ 目录

(3)修改 .sh文件的执行权限

让.sh文件可执行。操作:进入bin目录中

chmod +x *.sh

执行完没有报错,说明执行成功,这时再次查看bin目录下的文件,发现所有的.sh文件都变绿了。

(4)启动tomcat

进入bin目录下 输入命令 sh startup.sh

但是当我输入此命令后系统报错了:

touch: cannot touch '/home/ubuntu/javaproject/apache-tomcat-8.5.97/logs/catalina.out': Permission denied

报错原因:logs目录没有创建修改权限

解决办法:所有人可操作logs文件

进入到tomat的目录中,找到有logs文件夹的目录,执行下面命令。意思就是改变logs文件夹的权限,使tomcat可以有权限访问此文件夹。执行下面的命令:

sudo chmod a+rwx -R logs 

再次执行,正常启动。

(5)验证成功

使用ps 查看java进程有没有;使用netstat查看8080是否被绑定;访问tomcat欢迎界面。

ps aux | grep tomcat

netstat  -anp |grep 8080

补充:关闭某个进程 --  kill 进程id

从浏览器访问欢迎页面:

直接输入ip+端口,很有可能访问失败,原因是没有打开云服务器的防火墙/安全组。

如何打开云服务器的防火墙/安全组

打开云服务器--添加规则

再次打开,就可以正常访问啦~

1.3 mysql安装

通过apt安装

apt list | grep mysql

apt install mysql-server-8.0

输入安装mysql的命令,即可点击完成安装。安装完毕之后mysql的服务器九自动启动了。

查看mysql的运行状态:

service mysql status

2. 程序部署

2.1 构建数据库数据表

将我们创建的数据库表的语句粘贴到终端。

退出mysql ctrl + d

2.2  将程序打包

需要先确认一下配置是否需要进行修改。注意本地的数据库的密码和云服务器中的密码是否相同,没有设置就是无密码。

打成war包,找到pom.xml添加配置。

    <packaging>war</packaging><build><finalName>java109_blog_system</finalName></build>

进行打包

2.3 部署程序

将war上传到Linux的tomcat的webapps目录中。通过浏览器来访问页面。

此时可能会遇到登陆不上去的问题,可能原因是没有设置数据库的密码,关于mysql8密码设置的命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

这里我将它设置成了空字符串,最后网页是可以进行访问的。

《我的博客》系统链接:

http://49.232.51.45:8080/java109_blog_system/blog_list.html

账号密码:



以上就是完成了一个简单的程序部署的内容,也是完成了一个很简陋的项目搭建,关于功能并没有进行完善,后续在进行相应的完善~加油加油。

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

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

相关文章

react04- mvc 、 mvvm

MVC与MVVM stackoverflow论坛网站 react前端框架 使用框架前&#xff1a; 操作dom > js获取dom元素&#xff0c;事件侦听&#xff0c;修改数据&#xff0c;设置样式。。。 操作dom问题: 直接操作dom&#xff0c;会造成大量的回流、重绘&#xff0c;消耗大量性能操作起来也…

Nodejs 第五十四章(net)

net模块是Node.js的核心模块之一&#xff0c;它提供了用于创建基于网络的应用程序的API。net模块主要用于创建TCP服务器和TCP客户端&#xff0c;以及处理网络通信。 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;用于…

计网《二》|物理层|信道极限容量|码分复用|曼彻斯特编码

计网《二》|物理层 物理层的基本概念数据通信的基础知识数据通信模型常用术语有关信道的几个基本概念调制基带调制带通调制 常用编码方式不归零制归零编码曼彻斯特编码差分曼彻斯特编码 基本调制方法 信道的极限容量限制码元在信道上的传播速率的两个因素信道能够通过的频率范围…

学习Java的第十天

本章来讲一下什么是字符串 一、什么是字符串 在Java中&#xff0c;最常见的基本类型就是字符串了&#xff0c;哪哪都能见到&#xff0c;如输入语句&#xff0c;输出语句等&#xff01;那么&#xff0c;什么是字符串呢&#xff0c;字符串就是String类&#xff0c;String类是Ja…

市场复盘总结 20240314

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用的…

【计算机视觉】一、计算机视觉概述

文章目录 一、计算机视觉二、计算机视觉与其它学科领域的关系1、图像处理2、计算机图形学3、模式识别4、人工智能&#xff08;AI&#xff09;5、神经生理学与认知科学 三、计算机视觉的应用1. 人脸识别2. 目标检测3. 图像生成4. 城市建模5. 电影特效6. 体感游戏动作捕捉7. 虚拟…

【学一点RISC-V】RISC-V IMSIC

IMSIC RISC-V AIA 文档 第三章 Incoming MSI Controller (IMSIC) 传入 MSI 控制器&#xff08;IMSIC&#xff09;是一个可选的 RISC-V 硬件组件&#xff0c;与 hart 紧密相连&#xff0c;每个 hart 有一个 IMSIC。IMSIC 接收并记录 Hart 的传入消息信号中断 (MSI)&#xff0c;并…

《深入解析 C#》—— C# 2 部分

文章目录 第二章 C# 22.1 泛型&#xff08;*&#xff09;2.2 default 和 typeof&#xff08;*&#xff09;2.3 可空值类型2.3.1 Nullable<T> 结构体&#xff08;framework 支持&#xff09;2.3.2 装箱&#xff08;CLR 支持&#xff09;2.3.3 “?”后缀&#xff08;语法支…

算法50:动态规划专练(力扣514题:自由之路-----4种写法)

题目: 力扣514 &#xff1a; 自由之路 . - 力扣&#xff08;LeetCode&#xff09; 题目的详细描述&#xff0c;直接打开力扣看就是了&#xff0c;下面说一下我对题目的理解: 事例1&#xff1a; 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…

前端页面兼容pc和手机端设置,等比例缩小

html页面 <meta name"viewport" content"widthdevice-width, initial-scale0, user-scalableyes,shrink-to-fitno">vue 在public里面的index.html里面设置 <meta name"viewport" content"widthdevice-width,initial-scale1.0,use…

【单调栈】代码随想录算法训练营第五十九天 |503.下一个更大元素II, 42. 接雨水 (待补充)

503.下一个更大元素II 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个…

IDC服务商趋势

市场前景与趋势 随着云计算和大数据的发展&#xff0c;行业市场的规模正在不断增长。企业对服务器设备的需求不断增加。同时&#xff0c;由于服务器设备的价格较高且维护成本较高&#xff0c;许多企业更倾向于将服务器设备托管给专业的服务提供商&#xff0c;以降低成本并提高…