Linux【搭建环境与基本指令】

news2024/9/22 5:39:07

Linux【搭建环境与基本指令】

  • 🍎一.Linux搭建环境
    • 🍒1.1什么是Linux
      • 🍉1.1.1Linux介绍
      • 🍉1.1.2CentOS 和 RedHat 的关系
      • 🍉1.1.3在Java中应用到Linux的方面
    • 🍒1.2XShell的安装与使用
      • 🍉1.2.1XShell的安装
      • 🍉1.2.2XShell的使用
  • 🍎二.Linux基本指令
    • 🍒2.1Linux常见基本指令
    • 🍒2.1 Linux环境搭建
      • 🍉2.1.1 JDK1.8
      • 🍉2.1.2 tomcat
      • 🍉2.1.3 MariaDB
    • 🍒2.3在Linux上部署程序

🍎一.Linux搭建环境

🍒1.1什么是Linux

🍉1.1.1Linux介绍

Linux 是一个操作系统. 和 Windows 是 “并列” 的关系.
在这里插入图片描述
Linux 严格意义来说只是一个 “操作系统内核”.
一个完整的操作系统 = 操作系统内核 + 配套的应用程序.由于 Linux 是一个完全开源免费的内核, 因此有些公司/开源组织又基于 Linux 内核, 提供了不同的配套程序. 这就构成了不同的 "发行版

🍉1.1.2CentOS 和 RedHat 的关系

●RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo商标, 重新编译一次.

●RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任

🍉1.1.3在Java中应用到Linux的方面

(1) 基础命令
Linux 虽然也有图形化界面, 但是在 服务器 / 嵌入式设备上往往都是通过命令行的方式操作的. 因此学习Linux 命令就是使用 Linux 的重要基础.

使用命令相比于使用图形界面主要有以下好处:

节省系统资源: 运行图形界面需要让系统付出一些额外的资源开销. 尤其是对于配置比较低的嵌入式设备, 这一点至关重要.
节省网络带宽: 如果通过网络访问服务器, 使用图形界面需要传输一帧一帧的图像, 而使用命令只需要传输简单的字符串.
便于批量执行任务: 可以通过一些 “脚本” 代码 (比如 Linux Shell) 来批量执行一些任务, 完成一些简单的编程工作. (比如定时备份文件, 删除文件等).

*Windows 也有命令(也就是 cmd), 只是对于普通用户来说很少使用

(2) 系统编程 & 网络编程

Linux 自身提供了一些 API, 供程序猿调用来完成一些更复杂的编程任务(比如文件操作, 多线程编程,socket 编程等).但是由于 Java 跨平台的特性, 这部分功能已经被 Java 自身封装好了 (流对象, Thread 对象, Socket 对象等). 所以这部分内容我们不必再学习了.

(3) 部署 JavaWeb 项目
我们自己写的 web 程序, 要想让其他的用户能够访问, 就需要发布到服务器上. 这是我们接下里重点学习的内容.

小结: 对于 Java 程序猿, 关于 Linux 重点学习 基础命令 和 项目部署 即可.

🍒1.2XShell的安装与使用

🍉1.2.1XShell的安装

下载地址: 下载地址
点击下载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后就在你填写的邮箱里收到下载连接,我们点击连接进入,就可以下载了,下载好后,就跟随安装指引正常安装就可以了

🍉1.2.2XShell的使用

双击打开XShell后,点击左上角文件,点击新建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🍎二.Linux基本指令

🍒2.1Linux常见基本指令

ls
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

常用选项:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-r 对目录反向排序。
-t 以时间排序。
-R 列出所有子目录下的文件。(递归方法)

举例:
在这里插入图片描述
●pwd
语法: pwd
功能:显示用户当前所在的目录

举例:
在这里插入图片描述
cd
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下.

cd .. : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录

在这里插入图片描述

几个特殊的目录:
/ 称为根目录
. 称为当前目录
.. 称为当前目录的上级目录

举例:
在这里插入图片描述
绝对路径 vs 相对路径

形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.
形如: ./logs 以 . 或者 .. 开头的, 称为相对路径.
使用 tab 键补全,我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.
使用 ctrl + c 重新输入,如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令.

●touch
语法: touch [选项]… 文件…
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

举例:
在这里插入图片描述

●echo
打印内容到控制台,也可以写内容
●cat
语法:cat [选项] [文件]
功能: 查看目标文件的内容
举例:
在这里插入图片描述
●mkdir
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录

举例:
在这里插入图片描述
●rm
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件

举例:
在这里插入图片描述
●tree
查看当前目录结构
在这里插入图片描述

在这里插入图片描述
如果有人子啊查询时发现错误那就是没有导入包
我们可以在XShell "应用商店"中下载输入 yum install tree
在这里插入图片描述

●cp
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

常用选项:

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

举例:
在这里插入图片描述
●mv
语法: mv [选项] 源文件或目录 目标文件或目录
功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移
    至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目
    录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源
    文件均移至目标目录中。
    常用选项
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

举例
在这里插入图片描述
●man
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法: man [选项] 命令
常用选项

-k 根据关键字搜索联机帮助

num 只在第num章节找
man man 能够看到 man 手册中的若干个章节及其含义.

举例
在这里插入图片描述
●vim
vim 是一个知名的文本编辑器. 前面学习的 cat, less, head, tail 等命令只能查看文本, 不能编辑文本. 使用 vim 就可以进行编辑了.
vim 就相当于 Windows 的记事本. 只不过功能比记事本强大一些.
(1) 创建文件 / 打开文件

vim [文件名]

(2) 进入插入模式
vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键. (例如按下 j 并不是输入字母 “j”, 而是表示光标往下移动一行). 需要进入插入模式才能进行文本编辑.使用 i 键可以进入到插入模式. (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了.

(3) 保存
在插入模式下不能保存文件, 需要先回到 普通模式 . 按下 Esc 回到普通模式.在普通模式下输入 :w , 再按下回车, 即可保存文件.

(4) 退出
vim [文件名]
在插入模式下不能退出, 需要先回到 普通模式.在普通模式下输入 :q , 再按下回车, 即可退出.也可以直接使用 :wq 同时执行保存和退出.

🍒2.1 Linux环境搭建

🍉2.1.1 JDK1.8

yum install java-1.8.0-openjdk.x86_64

注意: yum上的 JDK 是 OpenJDK, 是一个开源版本的 JDK, 和 Oracle 官方的 JDK 略有差别. 此处我们就使用 OpenJDK 即可. 安装 Oracle JDK 比较麻烦.使用 java -version 验证是否安装成功.如果提示 “java 命令找不到” 则说明安装失败.
输入 yum list | grep jdk (在应用商店找关键字应用)
在这里插入图片描述
在复制选中的jdk1.8 yum install来进行安装
在这里插入图片描述

🍉2.1.2 tomcat

(1)下载 传输

tomcat下载官网
在这里插入图片描述
下载后可以直接将压缩包拉入到XShell里就会传输了

(2) 解压缩

unzip apache-tomcat-8.5.47.zip

解压缩后
在这里插入图片描述
(3)修改可执行权限

cd apache-tomcat-8.5.47/bin
# 将所有 .sh 后缀的文件加上可执行权限(后面会介绍)
chmod +x *.sh

解压缩后显示绿色的.sh文件就表示修改权限成功
在这里插入图片描述
(4)启动 Tomcat

sh bin/startup.sh
# 方法1 查看 tomcat 进程是否存在
ps aux | grep tomcat
# 方法2 查看端口 8080 是否被绑定
netstat -anp | grep 8080
# 方法3 使用 curl 命令访问默认 demo
curl 127.0.0.1:8080

在这里插入图片描述
(5)外网访问 tomcat 默认 demo

  1. 在云服务器找到防火墙然后新创建一个规则
  2. 在这里插入图片描述
  3. 在这里插入图片描述
    在这里插入图片描述

在浏览器地址栏中输入 你的外网IP+端口号(默认是8080)
在这里插入图片描述

🍉2.1.3 MariaDB

安装MySQL,因为历史原因,MySQL被oracle收购后,MySQL创始人又发明了MariaDB,语法可以说与MySQL一模一样,所以准确说是安装MariaDB

安装MariaDB 服务

# yum install -y mariadb-server

安装 mariadb 命令行客户端

# yum install -y mariadb

安装 mariadb C library

# yum install -y mariadb-libs

安装 mariadb 开发包

# yum install -y mariadb-devel

第一步,更改 /etc/my.cnf.d/client.cnf 文件
输入命令vim /etc/my.cnf.d/client.cnf,在插入模式下,在[client] 下加一行配置 default-character-set=utf8mb4,esc退出插入模式,输入:wq保存

#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#


[client]
default-character-set = utf8mb4

# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]

第二步,更改 /etc/my.cnf.d/mysql-clients.cnf 文件
也是使用vim命令,过程上面说过一遍,这里就不多说了,在[mysql] 下加一行配置 default-character-set=utf8mb4

#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#

[mysql]
default-character-set = utf8mb4

[mysql_upgrade]

[mysqladmin]

第三步,更改 /etc/my.cnf.d/server.cnf 配置

在[mysqld] 下加配置

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
sql-mode = TRADITIONAL
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
sql-mode = TRADITIONAL
# this is only for embedded server
[embedded]

# This group is only read by MariaDB-5.5 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mysqld-5.5]

# These two groups are only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

启动

启动服务

# systemctl start mariadb

设置服务开启自启动

# systemctl enable mariadb

查看服务状态

# systemctl status mariadb

可能的输出为,注意到 Active 状态为 active (running)

● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2018-11-09 12:49:23 CST; 19min ago
 Main PID: 1510 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─1510 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─2030 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-...

1109 12:49:15 peixinchen.host systemd[1]: Starting MariaDB database server...
1109 12:49:17 peixinchen.host mariadb-prepare-db-dir[1062]: Database MariaDB is probably initialized in /var/lib/m...ne.
1109 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
1109 12:49:19 peixinchen.host mysqld_safe[1510]: 181109 12:49:19 mysqld_safe Starting mysqld daemon with databas...mysql
1109 12:49:23 peixinchen.host systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.

测试连接

使用命令行客户端尝试连接

# mysql -uroot

在这里插入图片描述

🍒2.3在Linux上部署程序

第一步,在服务器建表,拿出我们之前写的sql语句,粘贴到服务器数据库建表。
第二步,微调java代码,主要就是DBUtil类中的数据源配置信息,主要是要修改为服务器数据库所对应的url,账户名和密码,我的服务器上的数据库上没有密码因此需要将密码设置为空字符串"",由于我的数据库账户名仍然为root,建的表也一样,因此账户名与url不变。
第三步,设置打包格式为war包和名称,就是在pom.xml配置文件加上下面的语句即可:

<!-- 打包为war包 不写默认为jar包-->
    <packaging>war</packaging>

    <build>
        <!--指定war包名-->
        <finalName>blog_system</finalName>
    </build>

第四步,打包程序,上传到服务器Tomcat的webapps目录中,在指定目录拖拽即可

第五步,就可以在自己云服务器的IP地址加端口号就可以让他人访问自己的程序了
在这里插入图片描述

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

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

相关文章

定时器的使用和线程安全

在linux下如果对定时要求不太精确的话&#xff0c;使用alarm()和signal()就行了&#xff1b; 但是如果想要实现精度较高的定时功能的话&#xff0c;就要使用setitimer函数。 核心api&#xff1a; int setitimer(int which, const struct itimerval *value, struct itimerval *…

【李宏毅】机器学习-RNN

RNN(Recurrent Neural Network) 为什么需要RNN呢&#xff1f; 举例来说&#xff0c;有一个任务需要识别每个单词代表的含义。在下面的句子中&#xff0c;taipei分别表示目的地和出发地&#xff0c;我们希望神经网络能够在不同的句子中&#xff0c;识别出不同的语义&#xff0c;…

3、排序(order by)与分页(limit)多表查询 -mysql

3、排序与分页&多表查询 -mysql排序与分页一、排序 Order By二、分页 Limit多表查询一、一个案例引发的多表连接2、笛卡尔积&#xff08;或交叉连接&#xff09;的理解二、多表查询分类讲解1、等值连接 vs 非等值连接2、自连接 vs 非自连接3、内连接 vs 外连接三、SQL99语法…

pytorch深度学习实战lesson18

第十八课 卷积层 卷积是深度学习最重要的概念之一&#xff0c;下面来学习和回顾一下卷积的基本概念。 目录 理论部分 从全连接层到卷积层 卷积层 实践部分 理论部分 从全连接层到卷积层 还是从一个例子开始&#xff1a;假设我要对猫和狗进行分类。 假设我用一千二百万像…

3年经验,光靠自动化测试基础,你可能连17k的测试岗都找不到,认清现实.....

相信对于每一个求职者来说都有被面试的经历吧&#xff0c;曾经作为一位测试小白的我&#xff0c;每一次面试过后都会各种吐槽面试官的不是&#xff0c;吐槽HR人事的不足&#xff0c;以及自己的有点没有发挥出来&#xff0c;今天我终于体会了一次面试官的心情.... 起因&#xf…

【夯实Kafka知识体系及基本功】分析一下(Broker)服务的可靠性机制分析「原理篇」

副本机制 分布式系统中&#xff0c;为了提高可靠性&#xff0c;最常用、最有效的策略是“副本机制”&#xff0c;Kafka也不例外。 Kafka 为每个 Partition 维护了一个 AR&#xff08;Assigned Replicas&#xff09;列表&#xff0c;由 ISR&#xff08;In-Sync Replicas&#x…

通过瑞利判据对显微镜物镜进行分辨率研究

摘要 通常可以采用瑞利判据理论表征显微镜的分辨率&#xff0c;瑞利判据是1896年由第三代瑞利男爵约翰威廉斯特拉特(John William Strutt)提出的。该理论认为&#xff0c;当一个艾里图样的中心与另一个艾里图样的第一个最小值重叠时&#xff0c;就可以分辨它们。在这个例子中…

力扣(LeetCode)3. 无重复字符的最长子串(C++)

滑动窗口 设置滑动窗口&#xff0c; lll 维护左窗口 &#xff0c; rrr 维护右窗口 &#xff0c;利用哈希表统计字母出现次数。 遍历字符串 sss &#xff0c;lll 循环右移&#xff0c;每次移动 &#xff0c; lll 指向的字母 s[l]s[l]s[l] 出现次数 。如果窗口内 s[l]s[l]s[l] …

NCMMSC 2021丨长短视频多语种多模态识别挑战赛

比赛背景 2021年第十六届全国人机语音通讯学术会议&#xff08;National Conference on Man-Machine Speech Communication&#xff0c;NCMMSC2021&#xff09;将于2021年10月15-18日在江苏徐州举行。本次会议由中国中文信息学会和中国计算机学会联合主办。 针对本次会议&…

STA -- clock gating check

对于现在design中例化好的icg以及工具插进去的icg&#xff0c;不存在clock gating check的问题&#xff0c;因为clock gating 搞成了一个lib cell&#xff0c;不再是latch加上与门的组合。不过design中除了这些icg&#xff0c;还有一些的clock gating check的出现&#xff0c;这…

写给 Android 开发:从0到1,再从1到N,都离不开 Framework

作为过来人&#xff0c;发现很多学习者和实践者都在 Android Framework上面临着很多的困扰&#xff0c;比如&#xff1a; 工作场景中遇到难题&#xff0c;往往只能靠盲猜和感觉&#xff0c;用临时性的补救措施去掩盖&#xff0c;看似解决了问题&#xff0c;但下次同样的问题又…

Node.js开发、CommondJS 、ES-Module模块化设计

目录 Node.js是什么 基础使用 Node的REPL 全局变量 模块化设计 CommondJS规范 基础使用exports和module.exports require CommondJS优缺点 AMD和CMD规范 ES_Module 基本使用方法 导出 导入 结合使用 默认导出 ES Module解析流程 Node.js是什么 Node与浏览器的对比 在…

两点云求差集和交集

这里两点云的差集指从点云1中删除属于点云2的点得到的点集&#xff0c;并集指既属于点云1又属于点云2的点集。 两点云求差集 基于kd-tree搜索的方法较快速&#xff0c;当然也可以暴力搜索。思路如下&#xff1a; step1 在点云2建立kd-tree&#xff0c;设置容忍误差&#xff0…

UI控件DevExpress WinForm新手指南——如何在应用启动时执行操作

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

RESTful 接口设计

文章目录RESTful 接口设计1.获取所有员工列表2.增加一个员工3.更新员工4.删除员工5.查询单个员工RESTful 接口设计 1.获取所有员工列表 /*** 获取所有员工* 1. 请求路径--确认资源--员工--/employees* 2. 请求方法--get* 3. 请求参数--无* 4. 请求响应--多个员工--List<Em…

苹果iOS App Store上架操作流程

很多开发者在开发完iOS APP、进行内测后&#xff0c;下一步就面临上架App Store&#xff0c;不过也有很多同学对APP上架App Store的流程不太了解&#xff0c;下面我们来说一下iOS APP上架App Store的具体流程&#xff0c;如有未涉及到的部分&#xff0c;大家可以及时咨询&#…

基于微信小程序的学生购电系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

服务端Skynet(二)——消息调度机制

服务端Skynet(二)——消息调度机制 文章目录服务端Skynet(二)——消息调度机制1、提前了解知识1.1、互斥锁&#xff08;mutex lock : **mut**ual **ex**clusion lock&#xff09;1.2、自旋锁&#xff08;spinlock&#xff09;1.3、读写锁&#xff08;readers–writer lock&…

最简单的git图解(多远程仓库)

上一节我们讲了git操作最基本的命令&#xff1a;最简单的git图解&#xff08;最基本命令&#xff09;_jerry_dyy的博客-CSDN博客 这一节我们来讲一下面对多个远程仓库的场景&#xff0c;应该如何来处理。 为什么要有多个远程仓库&#xff1f; 在企业内部开发团队开发过程中&a…

什么是CDN?CDN的技术原理是什么?

什么是CDN&#xff1f; CDN的全称是Content Delivery Network&#xff0c;中文名称“内容分发网络”。其主要原理是在现有网络中增加一层新的网络架构&#xff0c;将源站中的内容发布到不同的网络节点上&#xff0c;使用户可以就近获得所需的内容&#xff0c;从而提高用户访问…