Linux的基本使用

1. 前言

前面已经把博客前后端分离了,但是使用的IP地址是本地端口,无法在其他主机上访问,要想实现每个主机都能访问,就需要外网IP,这时候就可以使用购买服务器获取外网IP,但是服务器中的操作系统通常都是Linux,所以下面主要介绍如何在Linux上部署项目,首先先了解Linux的基本使用.

2. Linux的基本使用

2. 1 Linux的背景知识

Linux和Windows一样都是操作系统,其中一个区别是Linux是命令行页面,而Windows是图形化页面.

Linux是由一个更加古老的操作系统Unix发展出来的.

  • Unix & Linux 发展历程图

Linux的基本使用_第1张图片

  1. 1969-1970 年, 贝尔实验室的 Dennis Ritchie 和 Ken Tompson 开发了 Unix 操作系统
  • 这俩大佬本来是想开发一个操作系统, 但是开发着开发着, 发现现有的编程语言不太好使, 于是俩人一合计, 先整个编程语言出来吧. 于是 C 语言 就诞生了 ,Dennis Ritchie 大佬 2011 年就去天堂写代码了. Ken Tompson 大佬后来在 google, 又参与发明了 Go 语言.
  1. Unix 火了之后, 衍生出很多的分支. 其中有一只为 “Minix”. 由荷兰的Andrew S. Tanenbaum 教授开发. MINIX 含义为 “小型的UNIX”, 源代码开放给大学教学和研究工作
  2. 1991 年, 还在读大学的 芬兰人 Linus Benedict Torvalds (1969年12月28日出生, 当时 22 岁) 基于Minix 的启发, 开发出了 Linux 的第一个版本
  • Linux的基本使用_第2张图片
  • Linus 在开发 Linux 的时候, 觉得现有的 版本管理工具 并不太方便. 于是开发了一个新的版本管理工具. 也就是现在最广泛使用的 git

在经历这么多年的发展,Linux已经成为世界第一操作系统

可能大家会好奇,Linux怎么没有听说过,下面介绍它的应用场景大家就清楚了

  • 服务器: 绝大部分服务器系统都是Linux
  • 嵌入式设备,路由器,交换机,冰箱,电视…的大部分系统都是Linux
  • 移动端,智能手机,Android就是Linux

Linux发行版

Linux严格意义上只是一个操作系统内核,而一个完整的操作系统是由操作系统内核和配套的应用程序组成.

由于Linux是一个完全开源免费的的内核,因此有些公司/开源组织就基于Linux内核,提供不同的配套程序,就形成各种各样的发行版

Linux的基本使用_第3张图片

在企业中使用的发行版是RedHat,但是RedHat是一个收费的发行版,我使用的是CentOS 7这个版本,

CentOS 和 RedHat 的关系

  • RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo商标, 重新编译一次.RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任 .但是一个不幸的消息CentOS官方已经宣布不在继续维护了.

Linux环境搭建

部署Linux环境可以使用安装虚拟机或者直接安装到物理机上,但是虚拟机技术不成熟不推荐,物理机对不是十分熟悉程序员十分不友好,所以强烈推荐购买服务器.

注: 系统镜像为CentOS 7,如果点错了,可以在控制台中重装系统

Linux的基本使用_第4张图片

大家可以在腾讯云,阿里云,华为云等等服务器厂商中选择价格合适的服务器,由于是作为学习使用,建议买低配置,低价格的服务器.我选择的服务器是腾讯云的,购买完成后就可以在控制台查看服务器状态https://console.cloud.tencent.com/lighthouse/instance/detail?rid=1&id=lhins-e1rkw1t5.

如果要登录到Linux中需要三个重要信息:

  • 服务器的外网 IP
    • Linux的基本使用_第5张图片
  • 服务器的管理员账户 (固定为 root)
  • 管理员账户密码
    • 在左上角中有重置密码的入口image-20221025232151301

当我们获得以上三个信息后就可以使用终端软件连接到 Linux

使用终端软件连接到 Linux

终端软件是一类工具软件, 可以和远程的主机建立网络连接, 从而对主机进行一些操作.
常见的终端软件:

  • XShell
  • Putty
  • MobaXTerm
  • Iterm2
  • SecureCRT

我们使用的XShell(下载地址https://www.netsarang.com/en/free-for-home-school/ )

我们下载是家庭/教育版: 免费,下载的时候需要填一下名字和邮箱. 下载链接会被发送到填写的邮箱中

Linux的基本使用_第6张图片

下载好XShell后就可以开始登录服务器了

Linux的基本使用_第7张图片

Linux的基本使用_第8张图片

这里的主机就是在控制台中获取的外网IP

Linux的基本使用_第9张图片

默认为用户名为root

Linux的基本使用_第10张图片

密码刚才设置的密码

image-20221025233429942

解释说明:

  • root 代表当前登录系统的用户名(如果以普通用户登录,这里显示的就是普通用户的用户名)
  • VM-12-14-contos: 系统的主机名
  • ~ :~是Linux上特殊目录,称为home目录,每个用户登录成功后默认进入的目录
  • #: #代表当前用户是root用户(管理员),$代表当前是个普通用户

看见这种的就连接成功了

Linux基本命令

Linux自身提交自身提供了一些 API, 供程序猿调用来完成一些更复杂的编程任务(比如文件操作, 多线程编程,socket 编程等) 但是由于 Java 跨平台的特性, 这部分功能已经被 Java 自身封装好了 (流对象, Thread 对象, Socket 对象等). 所以这部分内容我们不必再学习了,但是我们写的web程序需要被用户访问,就需要使用Linux部署项目,所以下面先学习Linux的基本命令

注: 关于XShell的复制粘贴

复制: ctrl + insert

粘贴: shift + insert

ctrl + c / ctrl + v 在Linux中有其他含义.

man

解释: Linux中操作手册(Manual - 手册)

语法: man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能够看到 man 手册中的若干个章节及其含义

举例:

man ls

Linux的基本使用_第11张图片

ls

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

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

举例:

ls -l 也可以简写为ll

Linux的基本使用_第12张图片

显示文件的操作权限,文件大小,文件创建时间等等信息.

Linux上一切皆文件,通过颜色区分其类别

  • 深蓝色: 目录
  • 浅蓝色: 快捷方式
  • 白色: 普通文件
  • 绿色:可执行文件

cd

解释:切换目录/文件

语法: cd 目录名

功能: 改变工作目录。将当前工作目录改变到指定的目录下.

举例

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

Linux的 目录结构

Linux的基本使用_第13张图片

特殊目录:

  • / 称为根目录
  • . 称为当前目录
  • … 称为当前目录的上级目录

小知识:

  • Linux中的可以使用tab键实现类似于代码补全的功能,如果有多个补全结果,就无法补全,但是按两下就会把所以结果集列出来
  • 如果命令或者目录写错了,可以使用ctrl + c来取消当前命令
  • 输入命令cd home和上面的~是不同的,这里的home是所以办公区的集合,而~是指当前用户自己的办公区,而对于root用户的办公区是在/root目录下

pwd

语法: pwd
功能:显示用户当前所在的目录
举例:

pwd

image-20221026140500097

touch

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

Linux的基本使用_第14张图片

cat

语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项

  • -n 对输出的所有行编号
cat test.txt

image-20221026141305399

由于当前文件中没有任何内容,所以下面将学习如何写文件

ehco

解释: 重定向数据流向

echo "hello world" > test.txt

这里是把"hello world"这个字符串通过重定向输入到文件中然后使用cat命令查看文件内容

image-20221026142113199

echo "鸡你太美"

image-20221026142238736

echo默认显示到控制台

mkdir

前面解释使用touch,cat,ehco操作文件,下面学习如果操作目录

语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项

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

举例

mkdir -p  111/222/333/444 

image-20221026144324661

rm

语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项

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

举例:

rm test.txt

image-20221026144728323

输入y表示确认删除,其他则是不删除,也可以使用ctrl + c取消当前命令

rm *.txt

*是通配符,代表删除所有.txt后缀的文件

rm -f *.txt

如果文件很多,不想要一一确认,可以增加选项 -f (force强迫) 强制删除

rm test

image-20221026145315439

rm 无法直接删除目录,因为目录下可能有很多文件/目录,删除该目录后其内部是保留还是删除呢?所以可以使用加上-r(recursion递归删除),删除该目录及其包含的所有内容

注意事项:

第一次学习时,一定要学习 rm -rf /删库跑路命令,这个命令代表从根目录强制递归删除所有文件.

cp

语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录

常用选项

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

示例:

  • 拷贝文件

Linux的基本使用_第15张图片

  • 拷贝目录

拷贝目录需要使用 -r选项

Linux的基本使用_第16张图片

mv

语法: mv [选项] 源文件或目录 目标文件或目录

功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

示例:

  • 移动文件到目录下

Linux的基本使用_第17张图片

  • 修改目录名
mv aaa ccc

Linux的基本使用_第18张图片

vim

vim 是一个知名的文本编辑器 ,前面学习的cat只能查看文本,不能编辑文件,使用vim就可以进行编辑了

1)创建文件/打开文件

vim 文件名

Linux的基本使用_第19张图片

2)编辑文件

vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键.

使用 i 键可以进入到插入模式. (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了

image-20221026153359556

3)保存

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

4)退出

在插入模式下不能退出, 需要先回到 普通模式.在普通模式下输入 :q , 再按下回车, 即可退出.

也可以直接使用 :wq 同时执行保存和退出

grep

语法:grep [参数]… [文件]…
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
选项

  • -n<行数> 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • –color 高亮查找到的结果
  • –include 指定查找某些文件
  • –exclude 指定排除某些文件

示例:

  • 查询文件中是否存在某个字符

image-20221026153836686

ps

语法:ps [参数]…
功能:用于查看当前系统上运行的进程
选项

  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分

举例:

  • 查看所有的进程
ps aux

Linux的基本使用_第20张图片

  • 条件查询
ps aux | grep vim

把后面命令的结果作为前面的输入,grep中可以筛选进程id或者进程名

image-20221026154550864

netstat

语法:netstat [参数]…
功能:查看系统上的网络状态.
选项 :

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

示例:

查看当前所有的网络连接

Linux的基本使用_第21张图片

Linux权限

创建普通用户:

  1. 创建用户

命令 useradd [用户名]
功能 创建新的用户
示例

useradd test
  1. 配置密码

命令 passwd [用户名]
功能 设置或修改用户密码
示例

passwd test

注意, 输入密码的时候, 在控制台中不会有提示. 但实际上已经输入进去了

  1. 切换用户

命令:su [用户名]
功能:切换用户

文件类型和访问权限

访问一个文件的用户分为三种类别

  • 文件和文件目录的所有者:u—User
  • 文件和文件目录的所有者所在的组的用户:g—Group
  • 其它用户:o—Others

使用ll命令中显示一条信息的解释

Linux的基本使用_第22张图片

  • 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

  • 基本权限

读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“-” 表示不具有该项权限

修改文件权限

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式

用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod a=x /home/abc.txt

3. 搭建 Java 部署环境

1. 认识yum

yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上

类似于Linux上的应用商店

常用操作:

  • 查看软件包列表
yum list | grep jdk

Linux的基本使用_第23张图片

  • 安装软件包
yum install 软件包名

注: 需要管理员权限

  • 卸载软件包
yum remove 软件包名

注: 需要管理员权限

2. 安装JDK

输入:

yum install java-1.8.0-openjdk-devel.x86_64 

接下来就是静候安装了

可以使用java -version查看是否安装成功

image-20221027211140309

3. 安装tomcat

在yum上的最新tomcat版本是7,但是建议使用8.5,所以解决方案是在网上下载好zip包,然后拖到Xshell窗口中即可.

Linux的基本使用_第24张图片

下载地址https://tomcat.apache.org/download-80.cgi

image-20221027214713765

  1. 把下载好的zip包拖到Xshell中

如果无法反应,则需要安装一个专门的软件包使用命令yum install lrzsz安装

  1. 使用解压缩命名
unzip apache-tomcat-8.5.47.zip

如果无法识别unzip这个命令.只需要输入yum install unzip即可

  1. 启动tomcat

先使用命令cd bin进入bin目录,给.sh的文件都加上可执行权限(startup.bat是windows的启动版本, startup.sh是Linux的启动脚本),使用命令chmod + x*sh把.sh后缀的文件都加上可执行权限.

然后使用./startuo.sh后缀sh startup.sh启动tomcat

  1. 验证tomcat是否正常工作

方法1: 使用ps查看tomcat的进程是否正常运行

Linux的基本使用_第25张图片

方法2:使用netstat查看8080端口是否被tomcat占用

image-20221027220246748

方法3:在浏览器中输入外网ip+ 8080查看

Linux的基本使用_第26张图片

但是这种方式访问需要设置服务器配置,因为云服务器厂商为了安全,默认情况是禁止外部的客户端访问服务器上的各种端口,如果要开放某个端口,需要在控制台中查看防火墙中添加规则

Linux的基本使用_第27张图片

因为使用的tomcat只需要开放8080端口

Linux的基本使用_第28张图片

成功后:

image-20221027221111447

4. 安装MySql

Linux的基本使用_第29张图片

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

注:

  • 以上操作需要root权限
  • 默认情况MariaDB是没有密码的,所以在使用JDBC连接数据库时的密码为""空字符串
  • 创建数据库时请指定字符集

4. 部署

  1. 在云服务器上创建数据库

在博客系统中的db.sql复制粘贴到数据库中执行.

注: 请指定字符集

create database if not exists blog_system charset utf8mb4;
  1. 数据库密码的修改

image-20221027222509115

  1. 打包

由于没有Smart tomcat使用,所以要手动打包,在打包之前先修改一些我们需要的

<packaging>warpackaging>
<build>
    <finalName>blog_systemfinalName>
build>

点击打包

Linux的基本使用_第30张图片

  1. 拷贝war包到webapps目录中

和之前操作一样,直接拖.然后tomcat会自动解压war包

Linux的基本使用_第31张图片

  1. 访问博客登录页

Linux的基本使用_第32张图片

Linux的基本使用_第33张图片

大家可以访问登录页面康康, 用户名admin 密码123

你可能感兴趣的:(JavaEE初阶,linux,服务器,unix)