Linux 环境搭建

Linux

1、1969-1970 年, 贝尔实验室的 Dennis Ritchie (左图) 和 Ken Tompson (右图) 开发了 Unix 操作系统

在这里插入图片描述

丹尼斯·里奇(1941年9月9日-2011年10月12日),C语言之父,UNIX之父。曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》。此书已翻译成多种语言,被誉为c语言的圣经。2011年10月12日(北京时间为10月13日),丹尼斯·里奇去世,享年70岁。

肯尼斯·蓝·汤普森(英语:Kenneth Lane Thompson,1943年2月4日-),小名为肯·汤普森(英语:Ken Thompson),生于美国新奥尔良。为美国计算机科学学者与软件工程师,任职于贝尔实验室Entrisphere, IncGoogle Inc。与丹尼斯·里奇同为1983年图灵奖得主。他与丹尼斯·里奇设计了B语言C语言,创建了Unix和Plan 9操作系统,编程语言Go的共同作者。发展正规表示法,写作了早期的电脑文字编辑器QED与ed,定义UTF-8编码,以及发展电脑象棋。

这俩大佬本来是想开发一个操作系统,但是开发着开发着,发现现有的编程语言不太好使,于是俩人一合计,先整个编程语言出来吧,于是 C 语言 就诞生了
Dennis Ritchie 大佬 2011 年就去天堂写代码了,Ken Tompson 大佬后来在 google,又参与发明了 Go 语言

2、Unix 火了之后,衍生出很多的分支,其中有一只为 “Minix”,由荷兰的 Andrew S. Tanenbaum 教授开发,MINIX 含义为 “小型的 UNIX”,源代码开放给大学教学和研究工作

在这里插入图片描述

3、1991 年,还在上学,读研的芬兰人 Linus Benedict Torvalds (1969年12月28日出生,当时 22 岁),基于 Minix 的启发,开发出了 Linux 的第一个版本,发到论坛上了,然后就火了~~ Linux 官方认可的标准发音 李na科斯
Linux 就是世界上第一大操作系统!!

本来,Linux 已经足以让他名垂菁史,2000 年之后,大佬觉得已有的 代码管理工具,不太方便用来管理 Linux 源码,就自己开发了一个,也就是咱们今天使用的 git !!!
git 也成了当今最主流的版本管理工具~~

Linus 大佬现在 50 多岁了, 但是仍然在互联网上非常活跃,在 油管 经常会拍一些视频

在这里插入图片描述

操作系统:

  1. 服务器用的操作系统
  2. PC(个人电脑)用的操作系统
  3. 嵌入式设备用的操作系统
  4. 特殊的情况…

除了第二种方面,Linux 都是 No.1


Linux 发行版

Linux 严格意义来说只是一个 “操作系统内核”

Linux内核+各种配套的应用程序 => 完整的操作系统(发行版)
其中有一个非常牛的发行版,叫做 android~~

由于 Linux 是一个完全开源免费的内核,因此有些公司 / 开源组织又基于 Linux 内核,提供了不同的配套程序,这就构成了不同的 “发行版”

企业中最主要使用的发行版是 RedHat (红帽),但是 RedHat 是一个收费的系统 (报价参考 Red Hat® Enterprise Linux® ,因此我们课堂上学习使用的是基于红帽系统的的社区免费版本 CentOS

CentOS 和 RedHat 的关系:

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

关于 Linux 我们学习什么

1、基础命令:

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

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

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

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

2、系统编程 & 网络编程

Linux 自身提供了一些 API,供程序猿调用来完成一些更复杂的编程任务 (比如文件操作,多线程编程,socket 编程等)

由于 Java 跨平台的特性,这部分功能已经被 Java 自身封装好了 (流对象,Thread 对象,Socket 对象等),所以这部分内容我们不必再学习了

C++标准库相比于 Java 弱很多
虽然 C++ 标准库里面已经有多线程了,但是网络编程至今仍然不支持~~ 因此他们要想进行相关的编程,就只能使用系统 API

C++ 那边学 Linux,指令+系统编程+网络编程。Java 这边学 Linux 指令

3、部署 JavaWeb 项目

咱们作为 Java 程序猿,在实际开发中,一般不需要使用系统原生的 API,但是经常会涉及到一些和 Linux 相关的部署,或者调试的工作
比如做了一个网站,后端就需要部署到服务器上 (才能被各个用户来访问到),这个部署的过程就需要涉及到一些基本的 Linux 操作了~~


Linux 环境搭建

1、环境搭建方式

要想学习 Linux,需要先有一个 Linux 的环境

主要有四种:

  • 直接安装在物理机上,重装系统,但是由于 Linux 桌面使用起来非常不友好 [不推荐].

  • 使用虚拟机软件,软件在你的机器上虚拟出一些硬件来,构成一个 “假的” 电脑,然后在虚拟的机器里 搭建 Linux,但是由于当前的虚拟机软件 (VMWare / Virtual Box…),存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾 [非常不推荐]

  • 使用 WSL (Windows Subsystem for Linux),这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux,但是目前这个技术还不够成熟 [暂时不推荐]

  • 使用云服务器,可以直接在 腾讯云,阿里云或华为云 等服务器厂商处直接购买一个云服务器 [墙裂推荐]

    • 云服务器,本质上还是虚拟机,只不过这个虚拟机不是在本地,在人家机房里,环境搭建简单,避免折腾

    • 最大的区别,云服务器会同时给你一个外网IP !!

      部署在云服务器上的项目可以直接被外网访问到,这个时候就和一个公司发布一个正式的网站没有任何区别,也就能让我们自己写的程序,真的去给别人去使用
      能够在外网被访问是非常有意义的,这样我们以后面试的时候就可以提前部署好项目,现场给面试官演示了

  • 其次的区别,云服务器非常稳定的,基本也没啥坑,不太需要折腾~~

在这里插入图片描述

1、选机器的详细配置,CPU,内存,硬盘,带宽是多少.…… 都挑最便宜的选
如 2 核就是 2 核心的 CPU,2G 就是内存是 2GB,4M 是指带宽是4Mbps

2、选机房的位置 (活动地域),北京/上海/成都… 无所谓,随便选~~

3、选系统镜像 (给你的云服务器装哪个系统)
主要选择 Centos 7 系列~~


2、使用云服务器

在这里插入图片描述

在云服务器后台页面,会有一个 控制台,阿里云腾讯云华为云等等都是类似的

在这里插入图片描述

咱们买的服务器有两种情况:

  1. 轻量应用服务器 (更便宜)
  2. ECS 云服务器 (对于分布式程序支持的更好)

买哪种都行,但是你得记得你买的是哪个~~

可以在控制台中找到自己买的服务器,点进去能够看到服务器的 IP 地址

蓝色方框为公网 ip 地址,稍后我们就会使用这个 ip 登陆服务器

首次使用,设置 root 密码:点击服务器-更多,点击重置密码 (这个环节可能需要手机短信验证),root 密码建议设置得稍微复杂一些,否则容易被黑客入侵,如果真的被入侵,重装系统即可

在这个环节我们最重要的是得到三个信息:

  1. 服务器的外网 IP
  2. 服务器的管理员账户 (固定为 root)
  3. 管理员账户密码 (在腾讯云网站上设置的)

这三个信息是我们登陆到 Linux 上的必要条件


3、使用终端软件连接到 Linux

使用 终端工具 来远程登录到服务器上,这是工作中操作 Linux 服务器的最常见方式~

——什么是终端软件:

终端软件是一个客户端程序,可以通过网络,和远程的服务器建立网络连接,客户端这边就可以通过命令对主机进行一些操作

常见的终端软件:

XShell
Putty
MobaXTerm
Iterm2
SecureCRT

——下载安装 XShell:

注意: XShell 只支持 windows,如果你是苹果电脑 (mac),需要使用其他的工具了

Xshell 提供了两种授权方式:
企业版:收费
家庭 / 教育版:免费

在这里插入图片描述

我们选择 家庭 / 教育 版即可,点下载,下载的时候需要填一下名字和邮箱,只需 Xshell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJe6z1t0-1689066207469)(C:\Users\Gwen\AppData\Roaming\Typora\typora-user-images\image-20230708145045829.png)]

下载链接会被发送到填写的邮箱中

在这里插入图片描述

——使用 XShell 登陆主机:

新建会话——输入名称——粘贴主机号——连接

弹出窗口,输入用户名 root ,勾选记住,确认

弹出窗口,输入密码,勾选记住,确认

在这里插入图片描述


4、命名提示符

在这里插入图片描述

  • 用户名,root 就是这个用户的名字,
    • 针对一个服务器可以使用同一个 root 用户登录,也可以单独创建用户,Linux 可以支持多用户
  • @ 后的主机名,每个人的机器名字可能都不一样,这里显示啥都行
  • ~ 表示当前目录为 home 目录
    • 多用户的操作系统,会给每个用户分配一个目录,期望说每个用户都在自己的目录内,登录上去之后,默认所在的位置就是home 目录
      这一个机器就是一栋大楼,楼里有很多房间,每个房间都住一户人家 (一个用户)
    • C:\Users\… 下的目录就是 windows 系统上的 home 目录
    • ~ 和 home 有什么关系:
      上古时期,IBM 生产了一个主机(带键盘),这个键盘上,和 home 这两个按键,就是同一个键~~
      home / end
  • # 表示管理员,也可能是 $ 表示用户

首次连接服务器,需要新建会话,后续使用,直接打开上次的会话就行 (用户名,P,密码,都不需要重复输入了)

打开会话,双击,即可进入服务器

当前是通过网络来登录到云服务器的,要想能登录,必须得有网!

后续和 Linux 服务器之间的交互,都是基于命令来完成的!! !和 windows 上这种基于图形化界面的交互方式是截然不同的


Linux 权限

1、用户操作

Linux 下有两种用户:超级用户(root)、普通用户。

  • 超级用户: 可以再 Linux 系统下做任何事情,不受限制
  • 普通用户: 在 Linux 下做有限的事情。
  • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”。

我们的服务器买好了,默认是 root 用户。但是 root 用户权力比较大,一旦使用不当可能会造成严重后果 (例如 rm -rf /)。因此我们真正在公司中不会直接使用 root 用户来操作服务器

2、创建用户

1). 创建用户

命令 useradd [用户名]

功能 创建新的用户

示例:

useradd test

2). 配置密码

命令 passwd [用户名]

功能 设置或修改用户密码

例:

passwd test

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

3). 切换用户
命令: su [用户名]
功能: 切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。
要从普通用户 user 切换到 root 用户则使用 su root(root可以省略),此时系统会提示输入 root 用户的口令


3、三种角色

访问一个文件的人可能分成三种类别

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

4、文件类型和访问权限

命令 ll 显示了一个文件的详细信息,解读如下图:

在这里插入图片描述

a) 文件类型

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

b) 基本权限

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

5、修改文件权限

功能: 设置文件的访问权限

格式: 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  

② 三位8进制数字

实例:

# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

类似的还有 chgrp, chown 命令…


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三春去后诸芳尽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值