当前位置: 首页 > news >正文

【JavaEE进阶】使用云服务器搭建Linux环境

🍃前言

本篇博客主要包含以下三点

  1. Linux的背景知识
  2. 如何使用云服务器搭建Linux环境
  3. 使用终端软件连接到云服务器的Linux环境

Linux 是什么?.

Linux发行版

企业中主要使⽤的发⾏版是RedHat(红帽),CentOS(RedHat的社区免费版本)和ubuntu.

但是RedHat是收费的,CentorOS官⽅在2020年12月份通知:2021年底停⽌维护CentOS8,2024年6⽉30⽇停⽌维护CentOS7,后续将无法获得官⽅升级和补丁.

出于以上考虑(没钱),咱们这里上使用的是Ubuntu

Linux的优势

  1. 开源(意味着免费,便宜)
  2. 稳定(Linux可以运⾏很多年,都不会发⽣重⼤问题)
  3. 安全(Linux只有管理员或者特定⽤⼾才能访问Linux内核)
  4. ⾃由(不会被强加商业产品和服务)
  5. 社区⽀持(Linux在全球社区都⾮常活跃和使⽤⼴泛,有很多志愿者在线帮⼤家解决问题)

Linux环境搭建

使⽤云服务器,可以直接在腾讯云,阿⾥云或华为云等服务器⼚商处直接购买⼀个云服务器.[推荐]

使用云服务器

Xshell 下载 - NetSarang Website

登录root用户

ssh root@182.92.242.181

Linux常用指令

tab

使⽤ tab 键补全
我们敲的所有的 Linux 命令, 都可以使⽤ tab 键来尝试补全, 加快效率
使⽤ tab 键补全
我们敲的所有的 Linux 命令, 都可以使⽤ tab 键来尝试补全, 加快效率

pwd 与 ls

pwd

功能:显⽰⽤⼾当前所在的⽬录(出来的是绝对路径)

当前是root用户,代表个人的文件夹,如果想查看这个路径上有什么内容,通过ls查看

ls

语法:ls [选项] [⽬录或⽂件]

功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。

常⽤选项:

-a列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。
-d将⽬录象⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls ‒d 指定⽬录
-k 以 k 字节的形式表⽰⽂件的⼤⼩。ls -alk 指定⽂件
-l 列出⽂件的详细信息。
-r 对⽬录反向排序。
-t 以时间排序。
-R 列出所有⼦⽬录下的⽂件。(递归)

小技巧:

  • 使用ll可以快速查看当前路劲下的所有文件以及目录(可用上述 ls-l 代替)

cd

Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵目录树,每个节点都是⽬录或⽂件。

语法: cd ⽬录名

功能:改变⼯作⽬录。将当前⼯作目录改变到指定的⽬录下,可以跟绝对路径,也可跟相对路径.

例子:可以看到当前"/"这个路径下,有这些信息

注意:一般不要在"/"目录下操作,这是一个根目录

mkdir与touch

mkdir

语法:mkdir [选项] dirname…

功能:在当前⽬录下创建⼀个名为“java110”的⽬录

可通过cd进入到该目录:

常⽤选项:

  • -p,–parents可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多级⽬

touch


上述通过mkdir新建的"java110"目录里面什么都没有,我们可通过touch来新建文件

语法:touch [选项]… ⽂件…

功能: touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者新建⼀个不存在的⽂件。

在"java110/linux/xshell"新建一个"test.txt"文件:

cat与rm

cat

语法:cat [选项] [⽂件]

功能: 查看⽬标⽂件的内容

查看上述test.txt文件的内容:由于该文件什么都没有,即为空

有其他命令也可查看文件内容:more,less(使用 ":q" 进行退出),head,tail

万能退出命令:crtl + c(多按几次,若不行想想其他办法)

rm

语法:rm [-f-i-r-v] [dirName/dir]

功能:删除⽂件或⽬录

常⽤选项:

  • -f 即使⽂件属性为只读(即写保护),亦直接删除
  • -i 删除前逐⼀询问确认
  • -r 删除⽬录及其下所有⽂件

使用举例如下:

当前xshell目录下有两个txt文件

现要删除test.txt文件

注意事项:

  • 千万不要运行rm -rf /,尤其是在公司的⽣产服务器上.

vim

vim 是⼀个知名的⽂本编辑器. 使⽤ vim 可以进⾏⽂本编辑了

vim 就相当于 Windows 的记事本. 只不过功能⽐记事本强⼤⼀些.

打开文件

编辑test.txt文件:

进入插入模式

进入到编辑页面后,发现进行输入是输不进去的,点击小写的i切换到insert,进入到编辑模式即可

保存

在插⼊模式下不能保存⽂件,需要先回到普通模式.按下 Esc 回到普通模式.

在普通模式下输⼊ :w ,再按下回⻋,即可保存⽂件.

退出

在插⼊模式下不能退出,需要先回到普通模式.

退出时,分以下情况:

  1. ⽂件未修改:输⼊ :q ,再按下回⻋,即可退出
  2. ⽂件修改并保存:使⽤ :wq 同时执⾏保存和退出.
  3. ⽂件修改, 但突然不想保存:使⽤ :wq! 进⾏强制退

cp与mv

cp

语法:cp [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录

功能:复制⽂件或⽬录

说明:

cp指令⽤于复制⽂件或目录,如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的目录,则它会把前⾯指定的所有⽂件或⽬录复制到此目录中。若同时指定多个⽂件或⽬录,⽽最后的⽬的地并非⼀个已存在的目录,则会出现错误信息
常⽤选项:

-f 或 --force 强行复制⽂件或⽬录,不论目的⽂件或⽬录是否已经存在
-i 或–interactive覆盖⽂件之前先询问⽤户
-r递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理
-R 或 --recursive递归处理,将指定⽬录下的⽂件及⼦⽬录⼀并处理

举例:当前java110目录下有一个temp目录和text.txt文件

现要将text.txt文件复制到temp目录下

mv

法:mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录

功能:

视mv命令中第⼆个参数类型的不同(是目标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的目标⽂件名。
当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄目标目录中。
常⽤选项

-f :force强制的意思,如果⽬标⽂件已经存在,不会询问而直接覆盖

-i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!

例子一:若移动的目标文件是目录,会移动到该目录下

当前的java110目录下有一个temp目录和text.txt文件,temp目录下有一个temp.txt文件

现要将java110目录下的test.txt文件移动到temp目录下

移动之后,java110目录下就只有temp目录了,而temp目录下多了test.txt文件

grep

语法:grep [参数]... [⽂件]...
功能:⽤于查找⽂件中是否包含指定字符串, 并显⽰对应的⾏.
选项:
-n<⾏数> 显⽰的⾏数
-w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, ⽽不仅仅是⼀个单词的⼀部分.
-r 递归查找. 可以搜索多级⽬录下的所有⽂件.
--color ⾼亮查找到的结果
--include 指定查找某些⽂件
--exclude 指定排除某些⽂件

例子一:查询text.txt文件中的"install"字符串

例子二:还是查询上述字符串,显示行数

ps

语法:ps [参数]…

功能:⽤于查看当前系统上运⾏的进程

选项:

  • a 显⽰⼀个终端的所有进程
  • u 以⽤⼾为主的格式来显⽰程序状况
  • x 显⽰所有程序,不⽌是会话中的进程
  • e 显⽰所有进程,包括系统守护进程
  • f 显⽰完整格式输出

netstat

语法:netstat [参数]…

功能:查看系统上的⽹络状态.

选项:

  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址⽽不是去解析主机、端⼝或⽤⼾名
  • -p 显示套接字所属进程的PID和名称

tail

语法:tail [必要参数] [选择参数] [⽂件]

功能:⽤于显⽰指定⽂件从末尾查看内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。

选项:

  • -f 循环读取
  • -n<⾏数> 显示行数

举例:查看末尾10行的文件内容

apt

apt(Advanced Packaging Tool), Linux软件包管理⼯具.⽤于在Ubuntu、Debian和相关Linux发⾏版 上安装、更新、删除和管理deb软件包

⼤多数apt命令必须以具有sudo权限的⽤⼾⾝份运⾏

列出所以包名

这个命令输出所有包的列表,内容⽐较多,可以使⽤grep命令过滤输

更新软件包数据库

注意:apt实际上在可⽤软件包的数据库上⼯作.如果数据库没有更新,系统将不知道是否有更新的软件包可 ⽤.这就是为什么在安装任何Linux系统之后,第⼀件事应该是更新apt数据库

运⾏此命令时,您将看到从各种服务器检索到的软件包信息

如果是在root⽤⼾下执行,命令前就不需要加sudo了

切换root用户:

 安装软件包

在安装软件包之前,先更新软件包数据库

移除软件包

remove命令将卸载给定的软件包,但可能会留下⼀些配置⽂件。如果要删除包含所有配置⽂件的软件包,请使⽤purge⽽不是remove

apt remove和apt purge的区别

apt remove 删除包的⼆进制⽂件,它留下了残留的配置⽂件
apt purge 删除与包相关的所有内容,包括配置⽂件.
如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使⽤apt purge,通常使⽤ apt remove 就⾜够了

JDK

1. 更新软件包

sudo apt-get update

2. 安装openjdk

1.首先查找jdk包:

2.安装openjdk 

安装时会有[Y/n]提示,选择Y继续安装即可

注意:此处安装的是OpenJDK,OpenJDK是⼀个开源版本的JDK,和Oracle官⽅的JDK略有差别.此处我们就使⽤OpenJDK即可.安装OracleJDK⽐较⿇烦

使⽤ java -version 验证是否安装成功.(看到jdk的版本后就安装成功了)

 卸载openjdk

MySQL

1. 使用apt安装MySQL

首先查找MySQL安装包(也可以不用查找,直接安装)

apt install mysql-server

2.按 Y 安装后,我们可以查看Mysql状态检查是否安装成功

systemctl status mysql

3.MySQL安装安全设置

默认的MySQL设置是不安全的,MySQL安装提供了⼀个安全脚本,⽤于解决不太安全的默认选项. 运⾏以下命令:

4. 设置密码

连接mysql服务器

使⽤alter user命令修改密码(BY后面跟你想设置的密码)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'BITE@yyds.666';

退出数据库

修改密码后下次访问数据库时命令如下:输入自己设置的密码即可(注意:输入密码时不会有提示)

部署 Web 项⽬到 Linux

什么是部署

我们在⼯作中会涉及到几个"环境"

  • 开发环境: 开发⼈员写代码用的机器.
  • 测试环境: 测试⼈员测试程序使用的机器.
  • ⽣产环境(线上环境): 最终项⽬发布时所使⽤的机器.对稳定性要求很⾼.

把程序安装到⽣产环境上,这个过程称为"部署".也叫"上线"

⼀旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到.

换句话说,如果程序有BUG,这个BUG也就被千千万万的⽤⼾看到了.

部署过程⾄关重要,属于程序开发中最重要的⼀环.⼀旦部署出现问题,极有可能导致严重的事故(服务器不可⽤之类的).

为了防⽌部署出错,⼀般公司内部都有⼀些⾃动化部署工具(如Jenkins等).

本文章使⽤⼿⼯部署的⽅式来完成部署

环境配置

要使程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境

数据准备

按照之前的数据库建表脚本, 在服务器上运⾏, 建⽴相同的表结构.
程序配置⽂件修改
实际⼯作中, 开发环境, 测试环境以及⽣产环境的配置都是不⼀样的
⽐如mysql的⽤⼾名和密码
我们可以针对不同的环境, 设置不同的配置
多平台⽂件配置
针对不同平台创建不同的配置⽂件, 要求名字为application-XXX.yml或者application-
XXX.properties
以下以application-XXX.yml为例
固定格式, 只有后⾯的字⺟可以修改
在配置⽂件⾥写不同的内容

配置文件

<profiles><profile><id>dev</id><properties><profile.name>dev</profile.name></properties></profile><profile><id>prod</id><activation><activeByDefault>true</activeByDefault></activation><properties><profile.name>prod</profile.name></properties></profile></profiles>

dev用于本地,它的密码和本地mysql一样

prod用于云服务器,密码和云服务器的mysql密码一样

进行选择后要刷新,记得点右上角的闪电,然后clear+打包

可以设置默认环境

上传Jar包到服务器,并运行

直接拖动打好的jar包到xshell窗⼝即可完成⽂件的上传

但是第一次可能不行,需要安装后,然后拖动

开放端口号

 

运行程序

运行程序分为两种,一种使永久的,一种是短暂的

🏀短暂运行

现在来看一下短暂的语法如下(这个命令的运行方式会在你退出终端时就停止)

永久运行

接下来我们看一个永久的运行方式

现在就能永久访问了,即使关掉终端。

跟踪日志:(tail -f XX.log)

还可以选择性跟踪,例如跟踪错误日志:

 

程序运行起来后,就需要开放端口号

如果外网需要访问该服务,需要先服务器防火墙开放对应的端⼝号

本着服务器安全的原则,云服务器上的端口非必要不开启.

杀掉进程

如果我们需要重启服务,或者重新部署等,都需要先停⽌之前的服务

上图119256就是该服务的进程,如果我们不知道怎么去知道端口号被哪个类型程序占的时候,可以用“netstat”相关知识进行解决

http://www.dtcms.com/a/284704.html

相关文章:

  • Java网络通信:UDP和TCP
  • 关于CDH以及HUE的介绍
  • vue-seo优化
  • Android构建流程与Transform任务
  • 题解:P13311 [GCJ 2012 Qualification] Speaking in Tongues
  • java面向对象-多态
  • 【前端】Power BI自动化指南:从API接入到Web嵌入
  • 旅游管理实训基地建设:筑牢文旅人才培养的实践基石
  • LeetCode热题100—— 238. 除自身以外数组的乘积
  • Pygame创建窗口教程 - 从入门到实践 | Python游戏开发指南
  • 小白学Python,网络爬虫篇(1)——requests库
  • java Integer怎么获取长度
  • 【Jmeter】报错:An error occured:Unknown arg
  • 3.PCL点云合并
  • 为什么选择Selenium自动化测试?
  • 接口黑洞?破!安全堡垒?筑!冰火炼狱?战!MES7114W终极掌控
  • 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)
  • 三、CV_VGGnet
  • 栈和队列的实现,咕咕咕
  • CTF之栅栏密码的传统型、W型与偏移量
  • ota之.加密算法,mcu加密方式
  • 开源 python 应用 开发(八)图片比对
  • Android wifi简单白名单实现逻辑
  • 20250717在荣品的PRO-RK3566开发板的Android13系统下解决点屏出现问题unsupport command data type: 217
  • 通俗的解释一下以太网中的端口号
  • 流式数据处理实战:用状态机 + scan 优雅过滤 AI 响应中的 `<think>` 标签
  • 深入理解CSS定位:绝对定位的包含块机制
  • 退休时间计算器,精准预测养老时间
  • 项目实战(18)-POE分离器
  • Spring底层原理(一)核心原理