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.mfbz.cn/a/456384.html

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

相关文章

在unity中生成一个随机数

1.首先建立一个画布和空对象 2.创建脚本并将代码复制进去 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class suijishu : MonoBehaviour {public TextMeshProUGUI sjs;void Update(){if (Input.GetKeyDown(KeyCode.…

300m的视频如何制作二维码?扫码点击播放视频的在线技巧

如何快速将几十M或者几百M的视频文件做成二维码呢&#xff1f;用二维码来展示视频是现在很流行的一种方式&#xff0c;比如产品说明、自拍录像、企业介绍、使用教程等方面的内容&#xff0c;都可以通过这种方式来完成视频内容的传递。 其实视频生成二维码的方法没有想象中的那…

YOLOv9算法原理——使用可编程梯度信息学习想要学习的内容

前言 2023年1月发布YOLOv8正式版后&#xff0c;经过一年多的等待&#xff0c;YOLOv9终于面世了&#xff01;YOLO是一种利用图像全局信息进行目标检测的系统。自从2015年Joseph Redmon、Ali Farhadi等人提出了第一代模型以来&#xff0c;该领域的研究者们已经对YOLO进行了多次更…

微信小程序问题定位——sourcemap文件

使用sourceMap在微信小程序中进行线上问题定位&#xff0c;主要可以通过以下步骤实现&#xff1a; 下载微信开发者工具首先&#xff0c;确保已经安装了微信开发者工具&#xff0c;这是进行小程序开发和调试的基础。登录微信公众平台并下载sourceMap文件&#xff1a;登录微信小…

【Redis】Redis常用命令一

1.keys&#xff1a;返回所有满足条件的key&#xff0c;比如&#xff1a; KEYS pattern时间复杂度&#xff1a;O(N)&#xff0c;返回值&#xff1a;匹配pattern的所有key。 • h?llo 匹配 hello , hallo 和 hxllo • h*llo 匹配 hllo 和 heeeello • h[ae]llo 匹配 hello 和 …

java kafka客户端何时设置的kafka消费者默认值

kafka为什么有些属性没有配置却能正常工作&#xff0c;那是因为kafka-clients对有些消费者设置了默认值&#xff0c;具体看下ConsumerConfig类的静态模块&#xff0c;具体如下所示&#xff1a; kafka为什么有些属性没有配置却能正常工作&#xff0c;那是因为kafka-clients对有…

多线程(volatile)

volatile的功能 保证内存可见性禁止指令重排序 内存可见性 简单的理解 两(多)个线程同时针对一个变量进行操作, 一个线程读, 一个线程修改, 此时读到的值不一定是修改过后的值 即读线程没有感知到变量的变化 (其实是 编译器/JVM 对于代码在多线程情况下的优化进行了误判) 从 J…

景联文科技:提供行业垂直大模型训练数据

近年来&#xff0c;以大模型为代表的人工智能技术已成为国家科技实力竞争的焦点。其中垂直大模型作为重要方向&#xff0c;在相关政策引导及市场需求的驱动下&#xff0c;已展现出较强的发展活力。 行业垂直大模型是针对特定行业的需求和场景进行深度定制的。这意味着模型在训练…

【面试精讲】深克隆和浅克隆的实现方式?深克隆和浅克隆有什么区别?

【面试精讲】深克隆和浅克隆的实现方式&#xff1f;深克隆和浅克隆有什么区别&#xff1f; 目录 本文导读 一、浅克隆&#xff08;Shallow Clone&#xff09; 二、深克隆&#xff08;Deep Clone&#xff09; 1、递归使用clone()方法实现深克隆 2、使用序列化实现深克隆 …

深入解析HashMap:结构与哈希函数揭秘一

文章目录 一、HashMap的基本结构1.数组与链表的结构1.1 数组1.2 链表 2.红黑树的简单介绍3.Node节点的组成 二、HashMap的哈希函数1.hashCode()方法的作用2.位运算与哈希值的计算3.扰动函数的作用 思考&#xff1a;为什么HashMap源码中使用位运算 在Java编程语言中&#xff0c;…

Docker进阶:深入了解 Dockerfile

Docker进阶&#xff1a;深入了解 Dockerfile 一、Dockerfile 概述二、Dockerfile 优点三、Dockerfile 编写规则四、Dockerfile 中常用的指令1、FROM2、LABEL3、RUN4、CMD5、ENTRYPOINT6、COPY7、ADD8、WORKDIR9、 ENV10、EXPOSE11、VOLUME12、USER13、注释14、ONBUILD 命令15、…

解决方案-Windows下cmd输入nvidia-smi命令无效

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 问题描述 nvidia-smi是 NVIDIA System Management Interface 的缩写&#xff0c;是 NVIDIA 提供的用于管理和监控 NVIDIA GPU 设备…

爱普生小体积贴片晶振独特的蚀刻工艺

爱普生EPSON它是全球最大的打印机生产企业也是石英品体元器件生产厂家,品种齐全而且生产工艺也是世界顶尖的企业,不论在制作工艺上还是切割蚀刻工艺技术上都是比较先进的,它的一项千赫兹AT切产品足以让电子行业的人为之钦佩,在2010年发布的全球晶振企业排行榜爱普生占据首位,以…

IDEA管理Git + Gitee 常用操作

文章目录 IDEA管理Git Gitee 常用操作1.Gitee创建代码仓库1.创建仓库1.点击新建仓库2.完成仓库信息填写3.创建成功4.管理菜单可以修改这个项目的设置 2.设置SSH公钥免密登录基本介绍1.找到.ssh目录2.执行指令 ssh-keygen3.将公钥信息添加到码云账户1.点击设置2.ssh公钥3.复制.…

挖到宝了!这几款AI知识库原来这么好用!

随着人工智能的发展&#xff0c;我们的工作和生活越来越依赖这些智能化的工具。其中&#xff0c;AI知识库已经成为我们管理和获取知识的重要工具之一。今天我要为大家推荐三款好用的AI知识库&#xff0c;无论你是企业用户还是个人用户&#xff0c;相信一定能找到你心仪的那一个…

HTML5+CSS3+JS小实例:全屏背景切换动画

实例:全屏背景切换动画 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-s…

英飞凌电源管理PMIC的安全应用

摘要 本篇文档主要用来介绍英飞凌电源管理芯片TLF35584的使用&#xff0c;基于电动助力转向应用来介绍。包含一些安全机制的执行。 TLF35584介绍 TLF35584是英飞凌推出的针对车辆安全应用的电源管理芯片&#xff0c;符合ASIL D安全等级要求&#xff0c;具有高效多电源输出通道&…

Mysql 死锁案例1-记录锁读写冲突

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10) 事务1事务2T1 START…

msfconsole数据库连接不了的问题【已解决】

msfconsole数据库连接 1.msf数据库端口 msf使用的是postgresql&#xff0c;这个数据库默认端口是5432 单个模块的使用可以不需要数据库&#xff0c;但是模块与模块之间需要沟通的时候就会用到数据库。 2.查看msf数据库连接状态 db_status #msf内部查看systemctl status p…

基于逻辑回归与决策树的地质灾害预测

大家好&#xff0c;我是带我去滑雪&#xff01; 地质灾害的预测对于人们的生命财产安全、社会稳定和经济发展具有重要意义。地质灾害如地震、泥石流、山体滑坡等往往会造成严重的人员伤亡和财产损失。大规模的地质灾害往往会导致社会秩序混乱、人员流动、灾民避难等问题&#x…
最新文章