搭建 Java 部署环境,部署 Web 项目到 Linux

为了进行部署,把写好的 java web 程序放到 Linux 上,需要先把对应的依赖的软件 (环境) 搭建好,安装一些必要的软件程序

  1. JDK
  2. Tomcat
  3. MySqL

jdk 直接使用包管理器进行安装(基于yum安装)


一、yum

1、认识 yum

yum (Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器,主要应用在 Fedora, RedHat, Centos等发行版上,包管理器就好比 “应用商店”,我们可以在应用商店上下载一些 app

yum 起到的功能和 Maven 的依赖管理功能类似,使用 Maven 能帮我们方便的安装一些第三方 jar 包,而 yum 方便我们方便的安装第三方程序
类似地,Github 也能起到 “软件仓库” 的效果,而且确实有些编程语言的包管理工具就是基于 Github (例如 Go 语言)。只不过,Github 不光能用于分发程序,也能管理源码并进行协同开发,而 yum 和 maven 都是仅用于分发程序

查看软件包列表:

yum list | grep [软件包关键字]

yum list 本身是列出所有的可以安装的包,太多了,使用 grep 筛选一下包含 jdk 关键字的结果,否则罗列的内容会非常多, 导致机器很卡

管道:管道是一种古老的 “进程间通信” 方式,在 Linux 指令中可以使用 | 作为管道标记。意思是将前一个指令标准输出的内容,作为第二个指令的标准输入内容

安装软件包(需要管理员权限):

yum install [软件包名字]

卸载软件包(需要管理员权限):

yum remove [软件包名字]

注意事项:

  • yum 所有的命令必须保证网络是联通情况下,才能使用(云服务器一般网络都是良好的)
  • yum install / yum remove 必须具备管理员权限 (root 用户)
  • 可以使用 ping www.baidu.com 来检测网络的畅通情况

2、git

1). 查看 git 安装包

# 由于带 git 关键字的软件包很多, 可以在 grep 的时候加上 -w , 表示全字匹配.
yum list | grep git -w

2). 安装 git

yum install git.x86_64

3). git 的基本使用(和 Windows 版本的 git 是一致的. 只是使用命令行操作)

git clone
git add
git commit
git push

JDK

yum install java-1.8.0-openjdk-devel.x86_64

——使用 yum 筛选:devel: development。64 位系统版本。.i686 是 32 位的

在这里插入图片描述

——复制包名,yum install 包名。是否进行安装,输入 y

在这里插入图片描述

——使用 javac ,或 java -version 验证是否安装成功,如果提示 “java 命令找不到” 则说明安装失败

在这里插入图片描述

注意: yum 上的 JDK 是 OpenJDK,是一个开源版本的 JDK,和 Oracle 官方的 JDK 略有差别,此处我们就使用 OpenJDK 即可。安装 Oracle JDK 比较麻烦


Tomcat

1、安装

由于 yum 源上默认的 Tomcat 7 版本比较旧,所以 Tomcat 8 需要手动安装,不能使用 yum

noarch 意思是不挑系统 (基于 java 跨平台)

在这里插入图片描述

1). 下载 Tomcat 压缩包

Tomcat 与 maven 的安装与使用

2). 将压缩包上传到 Linux

将 .zip 直接拖拽到 xshell 中,如果不成功,需要 yum install lrzsz,拖拽上传,其实使用到了 Linux 上的 rz 命令,这个命令有的系统自带,有的不自带,需要手动装

在这里插入图片描述

2). 解压缩 Tomcat

# 使用 unzip 命令解压缩
unzip apache-tomcat-8.5.47.zip

如果 unzip 命令找不到, 则先 yum install unzip 即可

在这里插入图片描述

在这里插入图片描述


2、修改可执行权限

进入 bin 目录,使用 chmod +x *.sh,将所有 .sh 后缀的文件赋予可执行权限

在这里插入图片描述

chmod +x *.sh

在这里插入图片描述


3、启动 Tomcat

sh startup.sh

Tomcat 的目录结构
Linux 的 Tomcat 目录结构和 Windows 完全一致. (就是同一个 zip 包解压缩出来的)


4、验证启动成功

方法 1: 查看 tomcat 进程是否存在

ps aux | grep tomcat

方法 2: 查看端口 8080 是否被绑定

netstat -anp | grep 8080

方法 3: 使用 curl 命令访问默认 demo

curl 127.0.0.1:8080

如果进程存在或者端口状态正确 (LISTEN 状态) 或者能够访问到默认主页,说明启动成功

在这里插入图片描述

外网访问 tomcat 默认 demo

在浏览器地址栏中

http://[服务器外网ip]:8080/

4.1、防火墙

如果出现无法访问此网站,原因:

  • 服务器没有正常启动——netstat 验证
  • 服务器的防火墙 / 安全组,没有正确打开
    云服务器厂商为了机器的安全,引入安全机制,默认情况下只有你这个机器的 22 端口 (ssh )是可以对外访问的,要想让其它端口也能被外面访问,就需要手动放开

在外网访问这个页面之前需要先开启服务器的 “安全组” 功能
登陆自己的云服务账户, 在主页中找到 控制台 -> 自己的服务器 -> 安全组
需要配置安全组, 允许外部主机访问服务器的 8080 端口

安全组配置界面如果找不到,可以随时咨询云服务器客服

轻量应用服务器:防火墙。ECS 服务器:安全组

在这里插入图片描述

可看到默认的页面:

在这里插入图片描述


5、修改端口号

如果启动不成功,cd logs/ 在 logs 目录下查看日志信息,用 vim 去看这些日志中的内容,从大的文件开始看

在这里插入图片描述

例:日志中说明 8005 被占用,而 Tomcat 启动需要 8080 和 8005

在这里插入图片描述

所以我们查看 8005 被谁占用了 netstat -anp | grep 8005

tcp6       0       0  127.0.0.1:8005            :::*                    LISTEN         1700/java

此条信息说明,8005 被名为 java ,id 为 1700 的进程占用了

使用 ps -aux | grep 1700 查看具体的信息

在这里插入图片描述

解决方法:

  1. 将 1700 干掉
  2. 将 8005 端口号改成别的(推荐),修改方法如下:

1). 切换至 conf 目录,放的是配置文件

在这里插入图片描述

2). grep 8005,看看这个端口号是在哪里写的,

在这里插入图片描述

3). vim server.xml,修改成没有被使用的端口号

在这里插入图片描述


MySQL

1、安装

MySQL 同样也可以使用 yum 安装. 但是要修改一些配置参考文章:CentOS 7 通过 yum 安装 MariaDB

注意:创建数据库时为了支持中文,统一使用 utf8mb4 字符集

MariaDB [(none)]> create database demo_db charset utf8mb4;

yum 上的是 MariaDB,和纯正的 MySQL 还不太一样
MariaDB 和 MySQL 的关系,类似于 CentOS 和 RedHat 关系,从使用角度上, MariaDB 和 MySQL 之间都是兼容的


2、使用

修改 MySQL 登录密码:

mysql_secure_installation

回车,输入新密码,再次输入新密码,四次 y 确认修改密码

在这里插入图片描述

命令行登录使用默认 3306 端口的MySQL:

mysql -uroot -p

3、验证

在这里插入图片描述

使用 netstat -anp 命令来显示所有的网络信息,使用 grep 筛选出 mysql 相关的内容,
mysql 服务器;d => daemon,守护进程的意思 (后台进程);端口号:3306

退出 MySQL: Ctrl + d

在数据库运行过程中出现问题, 可以查看 MySQL 的错误日志.
在 MySQL 中通过这个命令, 获取到日志的路径

mysql> show variables like 'log_error';

# 输出结果
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| log_error | /var/log/mariadb/mariadb.log |
+---------------+------------------------------+

使用 vim 或 less 查看该文件内容即可

less /var/log/mariadb/mariadb.log

MySQL 中除了错误日志, 还有很多其他类型的日志. 详细可以参考
https://www.cnblogs.com/f-ck-need-u/p/9001061.html


4、修改编码方式

查看当前编码方式:

show variables like 'character%';

在这里插入图片描述

进入 etc 目录修改 my.cnf 文件(win 中是 my.ini,Linux 是 my.cnf)

cd /etc
ll
vim my.cnf

在 [client] 下加:

[client]  
default-character-set=utf8 

在 [mysqld] 最下面加:

default-storage-engine=INNODB  
character-set-server=utf8 
collation-server=utf8_general_ci

重启 MySQL 服务:

service mysqld restart

部署 Web 项目到 Linux

部署

工作中涉及到的 “环境”

  • 开发环境: 程序猿写代码用的机器.
  • 测试环境: 测试人员测试程序使用的机器. 一般是退役的部署机器.
  • 生产环境 (线上环境): 最终项目发布时所使用的机器. 对稳定性要求很高

把程序拷贝安装到生产环境上, 这个过程称为 “部署”,也叫 “上线”
这个过程需要拷贝对应的 .class 文件和依赖的资源文件 (各种配置文件,html等)
一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到
换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了

部署过程至关重要,属于程序开发中最重要的一环,一旦部署出现问题,极有可能导致严重的事故 (服务器不可用之类的)
为了防止部署出错,一般公司内部都有一些自动化部署工具 (如 Jenkins 等),当前我们先使用手工部署的方式来完成部署


1、数据库建表

在云服务器的 mysql 中,建库建表

输入密码连接数据库,创建数据库,将项目 db.sql 的代码复制到云服务器的数据库中

create databases java_blog charset utf8mb4; --记得字符集
use java_blog;

2、微调代码

本地的数据库、端口号、用户名、密码和云服务器的数据库,可能是不同的

本地数据库,是你安装的时候设置了密码

云服务器的数据库是默认没密码,如果没有修改过密码,设置为 “” 即可

在这里插入图片描述


3、打包

切换到项目的主目录 (包含 pom.xml的目录),使用 maven 打包即可,打成 war 包

  1.     <!-- 设置包的类型,包的名字 -->
        <packaging>war</packaging>
        <build>
            <finalName>blog_system</finalName>
        </build>
    
  2. 双击 package

此时在 target 目录下就会生成对应的 war 包

曾经我们主要是在 IDEA 中通过图形化工具来使用 maven ,事实上 maven 本质是一个基于命令行的工具
曾经在 IDEA 上进行的 maven 操作在 Linux 中同样也可以通过命令行来完成

在这里插入图片描述


4、拷贝到 Tomcat 中

将 war 包拷贝到云服务器 Tomcat 的 webapps 目录中

注意: 如果该项目之前部署过, 需要先删除之前的包

在这里插入图片描述


5、验证

在浏览器上访问项目的链接. (按照项目的功能进行验证).

  1. 验证账户注册登录
  2. 验证展示博客列表
  3. 验证新增博客
  4. 验证展示博客内容

注意: 本地能够正确运行,部署到云服务器上,不一定能正确运行!

程序执行的正确性,不仅仅取决于代码,还取决于依赖的数据,配置,等环境信息

访问:http://ip:8080/blog_system/blog_login.html

在这里插入图片描述


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

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

相关文章

6. Java + Selenium 环境搭建

前提&#xff1a;Java 版本最低要求为 8&#xff1b;推荐使用 chrome 浏览器 chrome Java 1. 下载 chrome 浏览器&#xff08;推荐&#xff09; 2. 查看 chrome 浏览器版本 重点记住前两位即可。 3. 下载 chrome 浏览器驱动 下载链接&#xff1a; https://chromedriver.…

我爱学QT-仿写智能家居界面 上 中 下

学习链接&#xff1a; 仿写一个智能家居界面&#xff08;上&#xff09;_哔哩哔哩_bilibili 上 给QT工程添加资源文件 在这里 然后选这个&#xff0c;choose后会有起名&#xff0c;之一千万不能是中文&#xff0c;要不就等报错吧 然后把你要添加的图片托到文件夹下&#xf…

云计算基础教程(第2版)笔记——基础篇与技术篇介绍

文章目录 前言 第一篇 基础篇 一 绪论 1.1 云计算的概念以及特征 1.1.1云计算的基本概念 1.1.2云计算的基本特征 1.2 云计算发展简史 1.3 三种业务模式介绍 1. 基础设施即服务&#xff08;IaaS&#xff09; 2. 平台即服务&#xff08;PaaS&#xff09; 3. 软…

F#奇妙游(12):并行编程与π

核越多&#xff0c;越快乐 多核CPU对于计算机程序的开发带来了很大的挑战&#xff0c;但是也带来了很大的机遇。在多核CPU上&#xff0c;程序的性能可以通过并行化来提升&#xff0c;但是并行化的难度也随之提升。本文将介绍多核CPU的基本概念&#xff0c;以及如何在多核CPU上…

OpenCv图像基本变换

目录 一、图像翻转 二、图像旋转 三、仿射变换之平移 四、仿射变换之获取变换矩阵 五、仿射变换之透视变换 一、图像翻转 图像翻转不等同于旋转&#xff0c;类似于一些视频的拍摄&#xff0c;拍摄后实际是左右颠倒的&#xff0c;通过图像翻转可进行还原 案例代码如下: …

Android之Intent

意图介绍 一个意图(Intent)对象包含了目标组件、动作、数据、类别、附加数据、标志六个部分。 目标组件 目标组件可以帮助应用发送显式意图调用请求。在创建Intent时&#xff0c;可以通过setComponent方法来设置一个组件&#xff0c;如&#xff1a; //设置组件 intent.setC…

Linux - CentOS 二进制安装 MySQL 8.0.31(非常实用)

一、下载 mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz 下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 具体如下图所示&#xff1a; 二、将 mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz 放入到服务器的 /usr/local &#xff08;路径可…

C++万字自学笔记

[TOC] 一、 C基础 C的IDE有CLion、Visual Studio、DEV C、eclipse等等&#xff0c;这里使用CLion进行学习。 0. C初识 0.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目创建文件编写代码运行程序 #include <iostream>int main() {using namespace std;cout…

SpringCloud Alibaba——Ribbon底层怎样实现不同服务的不同配置

目录 一、Ribbon底层怎样实现不同服务的不同配置二、源码角度分析 一、Ribbon底层怎样实现不同服务的不同配置 为不同服务创建不同的spring上下文&#xff0c;不同的spring上下文中存放对应这个服务所有的配置。 二、源码角度分析 SpringClientFactory中可以获取到所有ribbon…

基于MSP432P401R跟随小车(一)【2022年电赛】

文章目录 一、赛前准备1. 硬件清单2. 工程环境 二、赛题思考三、软件设计1. 路程、时间、速度计算2. 距离测量3. 双机通信4. 红外循迹 四、技术交流 一、赛前准备 1. 硬件清单 主控板&#xff1a; MSP432P401R测距模块&#xff1a; GY56数据显示&#xff1a; OLED电机&#x…

7.5 SpringBoot 拦截器Interceptor实战 统一角色权限校验

文章目录 前言一、定义注解annotation二、拦截角色注解1. 在拦截器哪里拦截&#xff1f;2. 如何拦截角色注解&#xff1f;3. 角色如何读取?4. 最后做角色校验 三、应用&#xff1a;给管理员操作接口加注解四、PostMan测试最后 前言 在【7.1】管理员图书录入和修改API&#xf…

原生js实现将图片内容复制到剪贴板

核心代码 /*复制图片*/ copyImg(dom) {/* 警告&#xff1a;dom不能是img标签&#xff0c;建议用DIV标签包裹img标签&#xff0c;否者会报错&#xff01;不支持复制背景图&#xff01; */dom.style.userSelect auto;let selection getSelection(), range document.createRan…

支持向量机(SVM)的超参数调整 C 和 Gamma 参数

作者:CSDN @ _养乐多_ 支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督式机器学习算法。它主要用于分类任务,但也适用于回归任务。在本文中,我们将深入探讨支持向量机的两个重要参数:C和gamma。在阅读本文前,我假设您对该算法有基本的了解,并专注于这些…

从网络安全行业人才需求讲讲【个人规划】

如果你是一名正在找工作的网络安全方向大学生&#xff0c;或者是刚刚踏入网络安全领域的新手&#xff0c;这篇文章很适合你&#xff0c;如果你是一名老网安人&#xff0c;看看有哪些你中招了。 当你打开BOSS直聘、拉钩等招聘类网站后&#xff0c;在首页的快速导航页面很难找到关…

微信小程序安装和使用 Vant Weapp 组件库

微信小程序安装和使用 Vant Weapp 组件库 1. Vant Weapp 介绍2. Vant Weapp 的 安装2.1. 通过npm安装2.2. 构建npm2.3. 修改 app.json2.4. 修改 project.congfig.json2.5. 测试一下&#xff0c;使用Vant Weapp提供的组件 1. Vant Weapp 介绍 Vant 是一个轻量、可靠的移动端组件…

《遗留系统现代化》读书笔记(基础篇)

你现在所写的每一行代码&#xff0c;都是未来的遗留系统 为什么要对遗留系统进行现代化&#xff1f; 什么是遗留系统&#xff1f; 判断遗留系统的几个维度&#xff1a;代码、架构、测试、DevOps 以及技术和工具。时间长短并不是衡量遗留系统的标准。代码质量差、架构混乱、没…

【深度学习笔记】正则化与 Dropout

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

Django实现简单的音乐播放器 4

在原有音乐播放器功能基础上&#xff0c;增加上传音乐功能。 效果&#xff1a; 目录 配置上传路径 配置路由 视图处理歌曲 引入类库 保存歌曲文件 模板上传 设置菜单列表 设置菜单列表样式 脚本设置 上传效果 1.显示菜单列表 2.点击上传歌曲 3.上传完成 4.查看保…

GEE:计算每个对象的面积、标准差、周长、宽度、高度

作者:CSDN @ _养乐多_ 本文记录了面对对对象分割,以及计算每个对象的面积、标准差、周长、宽度、高度的代码。 文章目录 一、代码一、代码 // 设置种子 var seeds = ee.Algorithms.Image.Segmentation.seedGrid(20)

如何通过 CrossOver 在 Mac 苹果电脑上安装使用 windows 应用程序?

首先我们可以先了解一下什么是 crossOver &#xff0c;CrossOver 是 Mac 和 Windows 系统之间的兼容工具。使 Mac 操作系统的用户可以运行 Windows 系统的应用&#xff0c;从办公软件、实用工具、游戏到设计软件&#xff0c; 您都可以在 Mac 程序和 Windows 程序之间随意切换。…