【Java EE初阶二十九】Linux 系统的学习

news2024/11/17 23:32:41

        当前写的博客系统程序,只是部署在咱们自己的电脑上,其他用户是无法直接访问的.由于 NAT 机制的存在,导致了IP 地址就被分成了 内网 IP 和 外网 IP.

        云服务器,包括公司中使用专用服务器,一般都是 Linux 系统,这个系统的使用和 Windows 差异很大.(通过命令行来操作的系统)

1  初识Linux

        Linux 不仅仅是使用在服务器领域. 也用于嵌入式设备(冰箱,洗衣机)和移动端设备(安卓系统,也是基于 Linux 发展而来的);

        Linux 发行版,严格的说, Linux 不是一个"操作系统"而是一个"操作系统内核",所谓的操作系统= 内核 + 配套的应用程序,公司中使用的一般都是如下的配套linux的应用程序:

1.1 购买云服务器

        云服务器是在遥远的机房,要通过网络来进行操作,所部署的程序,也是要通过这个外网 ip 来访问的;

1.2 XShell来连接云服务器

        安全成功的下载xshell,如下所示:

        要想使用 xshell 连上云服务器,就需要明确云服务器的几个信息:

1、外网IP:49.235.129.183;

2、用户名:大部分 Linux 默认的用户名是 root;

3、密码:首次使用需要进行重设置密码;

        开始建立xshell与云服务器的连接:

        出现上图所示之后,点击连接,点了之后会弹出一个对话框,问你是否要保存密钥(选择是),如下图所示:


又会弹出对话框,让你输入用户名(勾选保存),又会弹出密码,让你输入密码(勾选保存),上述操作都成功之后,就能进入linux 命令行界面了,如下图所示:

名词介绍:

 2. Linux 常用命令

        ls:list 列出当前目录下都有哪些内容 (文件/目录),直接输入ls是查看当前目录的情况;

        ls /:跟上/意思就是看看/这个目录下的情况,/称为"根目录”就是 Windows上的"此电脑“的意思,因为Linux 中没有盘符,所有的目录和文件都是在/目录下的.注意ll和/之间是有一个空格的;

上述这些就都是/目录下包含的内容,且这些文件都是系统自带的文件和目录;

        ll,也就是ls -l的写法,将当前目录下的文件竖着向我们展示出来;如下图所示:

        下面简单介绍一下上图中的相关消息,如下图所示:

        权限字符串的第一个字母,表示了文件的类型
- 表示普通的文件(显示成白色)
d 表示目录文件(文件夹)(显示成蓝色)
l 表示链接文件(快捷方式)(显示成浅蓝色)

使用 linux 的时候,按 ctrl +|可以清屏哦!!!

        cd :change directory 修改(当前)目录

cd / 指的是来到根目录, 就相当于点击"此电脑“,如下图所示

        cd指令的小技巧:

通过上述连续的 cd 操作,已经进入到 /etc文件里面

       pwd: 使用 pwd 可以查看到当前所处的路径的绝对路径.

在 linux 的命令中, 但凡涉及到目录相关的操作,都是可以支持绝对路径 和相对路径的,Linux 上,绝对路径,是以/开头的,相对路径,以.或者..开头的;

        touch:创建空的文件

对于linux来说,输入一个命令,没有任何提示此时就是"成功”,如果失败, 就会告诉你一些报错信息;

        cat:查看文件内容(把文件内容打印到控制台上)

       echo: 打印内容到控制台上

注意:这里的 echo + 重定向,只能写一些简单的字符串内容,如果你的需要写的内容很多,不太方便,更不方便修改。

        简单介绍vim:

        vim 是 Linux 上自带的一个文本编辑器,使用 vim 就可以更灵活的对文件进行编辑了.
虽然和记事本的差不多,但实际上 vim 的使用要复杂很多,接下来只是简单介绍 vim 最基础的操作.

1)、打开文件

        指令操作:vim 文件名,如下图所示:

2)、编辑内容

        vim 包含很多快捷键, 快捷键的画风和其他的软件截然不同,vim 更期望输入单个按键,就能起到快捷键的效果,所以vim 引入了"模式"概念;

        启动 vim 之后, 默认处于 normal mode (普通模式),键盘按键,都是快捷键,而不是输入文本,此时下图就是普通模式:

        要想输入文本, 就需要进入 insert mode (插入模式).进入插入模式的方法,有很多,最简单的就是i,下图就是插入模式;

3)、保存退出

        在 xshell 中,按 ctrl +s是冻结屏幕的意思,有的时候,服务器打印的日志太快了,滚动太快看不清,就可以冻结屏幕按 ctr + q 就能解除冻结;

        先按 esc, 回到普通模式,再按:进入命令模式

        mkdir:make directory 创建目录;

        rm:remove 删除文件/目录;

有的系统上(centos) 输入 rm 删除,就会有个提示,是否确认要删除.输入y就是删除.n 就是不删除,所谓的删除目录,不仅仅是删除目录本身,还要删除目录包含的其他目录和文件.故此需要使用 rm -r 来删除,其中 -r 表示"递归”;

        有的系统上删除的时候,也会和上面一样,提示你是否要真的删除,如果是删除目录的话,递归过程比较麻烦,同时每个目录都会提示你要进行确认,我们就可以使用 rm -rf 的方式直接删除,f表示“强制删除”不需要进行确认;

        需要注意的是:

        mv: move 移动(剪切,粘贴)要移动的源  要移动的目标地方,也可以移动目录(把目录内部包含的所有内容都进行移动),使用 mv 还可以针对文件/目录进行重命名;

        cp: 要复制的源 要复制的目标,可以拷贝普通文件,也可以拷贝目录拷贝目录的时候,和 r 类似,都是要加上 -r 选项,表示要递归的拷贝目录里的内容;

        grep: 字符串匹配/查找,比如,想查找某个文件中是否包含某个关键字,这个关键字在第几行,都可以使用 grep 来查看;

 

        ps:process show 展示进程 显示出当前系统上都有哪些进程

        很多时候 ps 都会搭配 grep 来使用,比如,查看 mysql 进程的进程 pid.

        一般主要有下面两种用法:

ps aux| grep 进程名
ps aux|grep 进程id;

        netstat :查看网络信息,可以用来查看某个端口是否被某个进程使用.也可以查询某个进程使用了哪个端口;

3. 在linux上搭建博客系统

        在 Linux 系统上搭建 Java web 程序的运行环境,需要有一些其他的程序把这个环境搭起来,我们需要安装JVM (JDK),Tomcat,MySQL 数据库,这三个运行所需要的环境;

        Linux 通过命令的方式来安装的,我们就主要使用最简单的方式.即基于包管理器 进行安装;

Linux 会把一些软件包,放到对应的服务器上,通过包管理器这样的程序,来把这些软件包给下载安装;其中ubuntu 系统的包管理器是 apt

3.1 安装jdk

        这里需要确保是处于 root 用户下.(如果不是管理员,需要使用 sudo su 切换到管理员)

1、使用 apt 命令查看服务器上有哪些软件包,apt list l grep jdk;

2、使用 apt 安装软件包

        apt install 软件包名,其中在 Linux 命令行中,复制 ctrl + insert,粘贴 shift + insert;

当出现下图界面时,即jdk安装成功:

root@VM-4-5-ubuntu:/home/ubuntu# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

3.2 安装 tomcat

        如上图所示,咱们用的是 tomcat 8.5,tomcat 8.5 搭配的是 servlet 3.1,所以就需要手动安装 tomcat 了,由于 Tomcat 就是 基于 java 来实现的,且java 是跨平台的.

故此只需要把之前 Windows 上的 Tomcat 上传到 Linux 上即可.

1、把之前 Windows 上的 Tomcat 上传到 Linux 上

        把要上传的压缩包,往 xshel l上一拖, 就可以了,但是
1)、一次只能拖一个文件.(打成压缩包)
2)、要想能拖上去,需要先安装 lrzsz 这样的软件包

ubuntu apt install lrzsz,下面是简单的指令:
        sz 把 linux 上的文件传到 Window.
        rz 把 windows 上的文件传到 linux;

2、对 zip 压缩包进行解压缩
        unzip 压缩包名字
        ubuntu: apt install unzip

3、修改 .sh 文件的可执行权限,让这些 sh 都可执行
        先 cd 到 bin 目录中,进行下图操作:

        执行完这个操作,顺利完成没报错,说明就成功了,此时这些 .sh 文件都变绿了,如下图所示:

4、 启动 tomcat

        还是 cd 到 bin 目录下,sh startup.sh,代码如下:

root@VM-4-5-ubuntu:/home/ubuntu/java109/apache-tomcat-8.5.98/bin# sh startup.sh 
Using CATALINA_BASE:   /home/ubuntu/java109/apache-tomcat-8.5.98
Using CATALINA_HOME:   /home/ubuntu/java109/apache-tomcat-8.5.98
Using CATALINA_TMPDIR: /home/ubuntu/java109/apache-tomcat-8.5.98/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/ubuntu/java109/apache-tomcat-8.5.98/bin/bootstrap.jar:/home/ubuntu/java109/apache-tomcat-8.5.98/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

5、验证启动是否成功
        使用 ps 查看java 进程有没有
        使用 netstat 查看 8080 是否被绑定
        访问 tomcat 的欢迎页面

还可以通过浏览器来访问 tomcat 的欢迎页面,我们访问的是项目的登录界面:

        云服务器是另外一台电脑,不是一个程序,这个电脑你需要通过网络连接的方式来进行操作,xshell 就是连接到云服务器的客户端软件;

        同时这里还有一个问题,就是要确保云服务器的 防火墙/安全组 确认是否打开:

        登录到云服务器的后台,找到对应的机器.选择防火墙标签页,如下图所示:

        为了保护你的服务器安全,云服务器厂商就对那些端口能够访问做出限制,默认情况下,就只有 22 (xshell 登录的时候使用 端口)和 3389(Windows 的服务器远程桌面) 能够访问
),为了确保我们的项目能够顺利被访问,就需要把 8080 这个端口添加到上述防火墙中.

        

        当你把端口号开放之后,外界才能够访问到你的这个 8080 端口;

3.3  安装 mysql

        安装 mysql,直接通过 apt 来安装,这里就直接装 mysql8 ,

        安装完毕之后,一般来说, mysql 的服务器就自动启动了;

        

root@VM-4-5-ubuntu:/# service mysql status
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-02-02 14:50:22 CST; 1 month 1 day ago
   Main PID: 1779280 (mysqld)
     Status: "Server is operational"
      Tasks: 41 (limit: 2220)
     Memory: 368.5M
        CPU: 2h 21min 6.061s
     CGroup: /system.slice/mysql.service
             └─1779280 /usr/sbin/mysqld

Feb 02 14:50:21 VM-4-5-ubuntu systemd[1]: Starting MySQL Community Server...
Feb 02 14:50:22 VM-4-5-ubuntu systemd[1]: Started MySQL Community Server.

4. 正式进行程序的部署

4.1 把数据库/数据表都在云服务器上创建好

        当把程序放到云服务器上执行,程序访问的就是云服务器上的数据库了.需要确保数据库里面有数据 (有表,有库),把之前代码中的 db.sql 中的内容 复制到 云服务器的 mysql 客户端中,执行

4.2 针对程序进行打包

        打包之前,还需要确认一下 mysql 相关的配置是否需要修改,这里一般是针对linux上mysql数据库的密码的修改:

        打成 war 包:

 

4.3 把这个 war 上传到 linux 的 tomcat 的 webapps 目录中

        在 linux 中,退出 mysql 控制台界面使用ctrl+d;

        如下图所示,tomcat 会自动针对 war 包进行解压缩,解压缩成功,基本上就是部署成功了.

4.4 通过浏览器来访问

        

最终我们的博客系统就成功的传到了与云服务器上;

ps:本次的内容就到这里了,如果大家感兴趣的话就请一键三连哦!!!

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

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

相关文章

企业有多套系统需要集成,如何高效率实施项目?

企业有多套系统需要集成&#xff0c;如何解决&#xff1f; 许多企业为了提升业务效率、优化管理流程以及实现数据驱动决策&#xff0c;纷纷引入了多套信息系统。这些系统可能包括ERP&#xff08;企业资源计划&#xff09;、CRM&#xff08;客户关系管理&#xff09;、SCM&#…

时间序列分析技巧(一):根据ACF、PACF进行AR、MA、ARMA模型选择

程序员如何选择职业赛道&#xff1f; &#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#…

Linux网络内核基础框架

本文了解的具体内容与核心 TCP/IP 协议体系 应用层&#xff1a;为网络用户提供各种服务&#xff0c;例如电子邮件、文件传输等。表示层&#xff1a;为不同主机间的通信提供统一的数据表示形式。会话层&#xff1a;负责信息传输的组织和协调&#xff0c;管理进程会话过程。传输层…

Spark 核心API

核心 API spark core API 指的是 spark 预定义好的算子。无论是 spark streaming 或者 Spark SQL 都是基于这些最基础的 API 构建起来的。理解这些核心 API 也是写出高效 Spark 代码的基础。 Transformation 转化类的算子是最多的&#xff0c;学会使用这些算子就应付多数的数…

惊艳!AI助力,图像放大不再模糊!

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 演示环境 &#x1f3e1;&#x1f4d2; 使用方法/运行效果 &#x1f4d2;&#x1f48b; 效果演示 &#x1f388; 获取方式 &#x1f388;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 在数字时代&#xff0c;图…

【Godot 4.2】Tree控件与TreeItem完全解析

概述 本篇是控件完全解析系列之一&#xff0c;主要总结一下Tree控件与TreeItem的使用。 Tree控件是一个非常强大的控件&#xff0c;尤其是在编写一些相关的程序或编辑器插件时&#xff0c;非常适合展示树形组织的节点型数据。 本篇将从简单的添加根节点&#xff0c;根节点子…

低通滤波器(SMART PLC双线性变换法)

低通滤波器的详细介绍可以参考信号处理专栏,常用链接如下: 1、双线性变换+欧拉后向差分 https://rxxw-control.blog.csdn.net/article/details/128586285https://rxxw-control.blog.csdn.net/article/details/1285862852、博途PLC一阶低通滤波器 https://rxxw-control.blo…

设计模式学习笔记(二):工厂方法模式

一、定义 工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种在不指定具体类的情况下创建对象的方法。工厂方法模式定义了一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟…

大语言模型系列-GPT-3.5(ChatGPT)

文章目录 前言一、GPT-3.5的创新点二、GPT-3.5的训练流程SFT数据集RM数据集PPO数据集 三、ChatGPT的诞生总结 前言 《Training language models to follow instructions with human feedback&#xff0c;2022》 前文提到了GPT-3的缺点&#xff0c;其中最大的问题是&#xff1…

C++ 11 新特性 override和final

一.override和final介绍 在C11中&#xff0c;override和final是两个用于支持继承和多态的重要关键字。它们的具体作用如下&#xff1a; override&#xff1a;这个关键字用于派生类中&#xff0c;以确保虚函数的正确重写。当一个派生类的函数被声明为override时&#xff0c;编译…

【Ubuntu 20.04 / 22.04 LTS】最新 esp-matter SDK 软件编译环境搭建步骤

仓库链接&#xff1a;esp-matter SDK官方软件说明&#xff1a;ESP Matter Programming Guide官方参考文档&#xff1a;使用 Matter-SDK 快速搭建 Matter 环境 (Linux) 环境要求 Ubuntu 20.04 或 Ubuntu22.04网络环境支持访问 Gihub 在安装 esp-matter SDK 软件编译环境之前&a…

基于C++中netCDF库读取.nc数据时的一些坑

本文介绍基于C 语言的netCDF库读取.nc格式的栅格文件时&#xff0c;出现数据无法读取、数据读取错误、无法依据维度提取变量等情况的原因与解决方法。 最近&#xff0c;由于需要读取ERA5气象数据&#xff0c;因此使用C语言中的netCDF库读取.nc格式文件&#xff1b;这其中也是踩…

Docker基础教程 - 7 容器数据卷

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 7 容器数据卷 什么是容器卷&#xff0c;为什么需要容器卷&#xff1f; 我们在运行容器的时候&#xff0c;产生的数据都是保存在容器内部的。如果使用Docker来运行mysql容器&#xff0c;数据…

网络性能优化工具

网络优化是 IT 行业的一个重要方面&#xff0c;网络很复杂&#xff0c;管理员努力保持其平稳运行&#xff0c;然而&#xff0c;网络环境也是不可预测和动态的&#xff0c;任何未受监控的问题都可能像滚雪球一样变成中断。 优化网络性能需要引入&#xff1a; 新设备和应用程序…

Axure RP 10:让原型设计更快、更直观、更智能 mac版

Axure RP 10是一款强大的原型设计工具&#xff0c;它能够帮助设计师快速创建高保真、交互式的原型&#xff0c;从而更好地展示和测试设计方案。这款软件凭借其直观易用的界面和丰富的功能&#xff0c;已经成为了许多设计师的首 选工具。 Axure RP 10 for Mac版软件获取 首先&a…

还在使用 RESTful API ? 试一试 GraphQL

前言 GraphQL 和 RESTful API 是两种不同的网络通信接口设计理念&#xff0c;它们都可以用于客户端和服务器之间的数据交换&#xff0c;但是有着不同的工作方式和特点。 各自的特点以及优缺点 GraphQL&#xff1a; 特点&#xff1a; 查询语言: GraphQL 是一个查询语言&…

【MySQL 系列】MySQL 架构篇

在我们开始了解 MySQL 核心功能之前&#xff0c;首先我们需要站在一个全局的视角&#xff0c;来看 SQL 是如何运作执行的。通过这种方式&#xff0c;我们可以在头脑中构建出一幅 MySQL 各组件之间的协同工作方式&#xff0c;有助于我们加深对 MySQL 服务器的理解。 文章目录 1、…

DEYO: DETR with YOLO for End-to-End Object Detection论文翻译

DEYO&#xff1a;DETR与YOLO用于端到端目标检测 摘要 DETR的训练范式在很大程度上取决于在ImageNet数据集上预训练其骨干。然而&#xff0c;由图像分类任务和一对一匹配策略提供的有限监督信号导致DETR的预训练不充分的颈部。此外&#xff0c;在训练的早期阶段匹配的不稳定性会…

利用Cocos游戏开发中的跑马灯祝女神们节日快乐

点击上方亿元程序员+关注和★星标 引言 Cocos游戏开发中的跑马灯广播效果 大家好,今天是国际劳动妇女节,也就是我们如今熟知的女神节。 今天打算通过游戏开发中的跑马灯广播这最直接的方式祝女神们节日快乐! 跑马灯作为游戏中常见的UI元素,通常被用来展示重要的信息或者…

Gafana Redis Overview dashboard

1. 简介 根据提供的 Redis 监控仪表盘 JSON 文件,包含的监控指标及其简要描述如下: redis_uptime_in_seconds: Redis 实例的运行时间(秒)。 redis_connected_clients: 当前连接到 Redis 实例的客户端数量。 redis_memory_used_bytes: Redis 实例使用的内存量(字节)。 redis_m…