0%

Linux_笔记(狂神)

狂神Linux教学视频学习笔记,包括购买服务器、Linux简介、Linux文件、Vim编辑器、磁盘管理、环境安装等内容

0 前置环境部署

购买服务器及环境部署

1 阿里云购买服务器

2 安装宝塔部署开发环境

0.1 阿里云购买及部署

阿里云购买连接 https://developer.aliyun.com/plan/grow-up

1 购买阿里云

2 进入阿里云控制台、创建安全组

3 然后在控制台、点击轻量应用服务器进入你的服务器列表、修改密码并重启、概述里可以看到ip地址、也可以设置密码 https://swas.console.aliyun.com/

4 下载Xshell的SSH工具、远程连接服务器 https://www.netsarang.com/zh/xshell/

1 购买阿里云

  • 我选的轻量应用服务器2核2G,新人99/年。购买时选择系统镜像、CentOS7.6即可。
image-20210705083032303 image-20210705083300326

2 进入阿里云控制台、创建安全组

  • 点击云服务器ECS、侧边栏的网络与安全-安全组、创建安全组(默认就行)
  • 如果购买的是轻量应用服务器这里是没有ECS服务器的、在这里创建安全组就可以了
image-20210705084425389

3 进入轻量应用服务器列表、修改密码并重启、概述里可以看到ip地址、也可以设置密码

image-20210705084659511 image-20210705084831033

4 下载Xshell的SSH工具、远程连接服务器

image-20210705085231311

0.2 安装宝塔部署开发环境

1 安装宝塔 官方有详细教程 https://www.bt.cn/bbs/thread-19376-1-1.html

​ 唯一要注意的就是开端口,安全组和防火墙两处都需要开启8888端口

2 进入宝塔管理面板一键部署应用

1 安装宝塔 得到url 、username、password

img

2 宝塔管理面板的软件商店一键部署应用

image-20210705090046831

1 Linux简介

Linux简介

​ Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX (可移植操作系统接口)和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
​ Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux 继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux发行版

发行版就是将Linux内核与应用软件做一个打包
在这里插入图片描述

​ 今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx + MySQL + PHP)组合。目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎。

2 Linux常用命令

2.1 系统目录

1、Linux系统 一切皆文件
2、根目录/ ,所有的文件都挂载在这个节点下

1
2
3
4
5
ls #查看当前下的目录、可能时最常用的命令
ls -a #查看当前目录下的所有目录,包括隐藏
ls -l #列出当前下目录的包含文件的属性与权限等等数据;(常用)
ls -al #列出当前下目录的包含文件的属性与权限等等数据,包括隐藏
ls / #查看根目录/下的目录

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。 用完即丢的文件可以放在这个目录下
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: 内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
/www:存放服务器网站相关的资源,环境,网站的项目

2.2 目录管理【重要】

切换目录cd

1
2
3
4
5
6
7
cd #切换目录
cd [绝对路径] #切换至该绝对路径下
cd / #表示切换到根目录下
cd .. #表示返回上一级目录
cd ~ # 表示回到/root目录下(特殊)
pwd #显示目前所在的目录
pwd -P # 如果是链接,要显示真实地址

创建目录 mkdir

1
mkdir -p test2/test3/test4 # 用-p递归创建层级目录

删除空的目录 rmdir

1
rmdir -p test2/test3/test4 #递归删除文件

复制文件或者目录 cp

1
cp /root/install.sh /home #将install.sh 复制到home文件夹中

移除文件或者目录 rm

1
2
3
4
-f #忽略不存在的文件,不会出现警告,强制删除!
-r #递归删除目录! 这是非常危险的选项!!!
-i #互动,删除询问是否删除
rm -rf install.sh #删除系统中的install.sh

移动文件或者目录|重命名文件 mv

1
2
3
4
-f #强制
-u #只替换已经更新过的文件
mv install.sh cqhstudy #移动文件
mv cqhstudy cqhstudy2 #重命名文件夹名

2.3 基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

1 基本属性查看

下面以/home目录下的几个文件或目录的基本属性作为介绍:ls -l查看文件属性

1
2
3
4
5
6
7
8
[root@iZbp14cwp14hjrpbcb149wZ /]# cd /home
[root@iZbp14cwp14hjrpbcb149wZ home]# ls -l
total 1668
-rw-r--r-- 1 root root 1694239 Jul 5 09:19 36、Linux使用.pdf
drwx------ 3 admin admin 4096 Jul 4 20:33 admin
drwx------ 2 redis redis 4096 Jul 4 22:00 redis
drwx------ 3 www www 4096 Jul 4 22:00 www
[root@iZbp14cwp14hjrpbcb149wZ home]#

36、Linux使用.pdf这个pdf文件为例,属性分为几个部分

1
2
3
4
5
-rw-r--r--  前十个字符:表示类型和读写权限
1 表示hard links的个数
root root 表述属主和属组都是root
1694239 表示文件的大小?(对的)
Jul 5 09:19 36、Linux使用.pdf 表示时间和文件名

每个文件的属性由左边第一部分的10个字符来确定 (如下图) :

  • 第一位表示文件类型
1
2
3
4
5
当为[d]则是目录
当为[-]则是文件;
若是[l]则表示为链接文档( link file);
若是[b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置) ;
若是[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标( 一次性读取装置)。
  • 后9位表示 权限,如下所示
在这里插入图片描述

2 修改文件的属性

1 chgrp :更改文件属组

1
2
chgrp [-R] 属组名文件名
# -R :递归更改文件属组,就是在更改某个目录文件的属组时,如果加上R的参数,那么该目录下的所有文件的属组都会更改。

2、chown :更改文件属主,也可以同时更改文件属组

1
2
chown [-R] 属主名文件名
chown [-R] 属主名:属组名文件名

3、chmod :更改文件9个属性

1
chmod [-R] xyz 文件或目录

2.4 文件内容查看

Linux系统中使用以下命令来查看文件的内容

1
2
3
4
5
6
7
cat #由第一行开始显示文件内容
tac #从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl #显示的时候,顺道输出行号!
more #一页一页的显示文件内容
less #与 more 类似,但是比 more 更好的是,他可以往前翻页!
head #只看头几行
tail #只看尾巴几行

1 cat 由第一行开始显示文件内容

1
2
3
4
5
6
7
cat [-AbEnTv] 文件名
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符

2 nl 显示的时候,顺道输出行号!

1
2
3
4
5
6
7
8
9
nl [-bnw] 文件
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。

3 more #一页一页的显示文件内容

1
2
3
4
5
6
7
8
move 文件
more 这个程序的运行过程中,你有几个按键可以按的
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用

硬链接和软链接:

  • 硬链接:A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制硬链接到一个重要文件上,防止误删
  • 软链接:类似Windows下的快捷方式,删除源文件,快捷方式也就访问不了

操作步骤:
1 创建链接 ln命令!ln ln -s
2 touch命令创建文件!
3 echo输入字符串
4 删除f1之后,查看f2和f3的区别

123步骤如下:

在这里插入图片描述

4 删除f1之后,查看f2和f3的区别:

  • f2 硬链接还在 f3软连接失效

在这里插入图片描述

2.5 Vim编辑器【重要】

所有的 Unix Like 系统都会内建 vi 文书编辑器。vim 是vi的升级,具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

1 三种输入模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是

  • 命令模式:敲击键盘动作会被Vim识别为命令
1
2
3
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
  • 输入模式:编辑文本、输入多行字符
1
2
3
4
5
6
7
8
9
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
  • 底线命令模式 : 可以输入单个或多个字符的命令
1
2
3
q 退出程序
w 保存文件
//一般就wq组合使用

2 vim新建txt文件示例

1 进入目标目录,执行 vim 文件名

2 按下 i 进入输入模式,编写文本内容

3 按下 ESC 按钮回到一般模式,执行wq保存并退出

1 使用 vim 来建立一个名为 runoob.txt 的文件时,输入:

  • 直接输入 vim 文件名 就能够进入 vi 的一般模式了。文件不存在则新建、存在则修改。
1
$ vim runoob.txt
img

2 按下 i 进入输入模式(也称为编辑模式),开始编辑文字

  • 在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。
img

3 按下 ESC 按钮回到一般模式,执行wq保存并退出

  • 按下 Esc 这个按钮,会发现画面左下角的 – INSERT – 不见了!,表示进入了一般模式

  • 存盘并离开的指令很简单,输入 :wq 即可保存离开!

img

OK! 这样我们就成功创建了一个 runoob.txt 的文件。

2.6 用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

每个用户账号都拥有一个唯一的用户名和各自的口令。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

1 Linux系统用户账号的管理

用户账号的管理:添加、修改和删除。

添加账号:

1
useradd 选项 用户名

删除账号

1
userdel 选项 用户名

修改帐号

1
usermod 选项 用户名

用户口令的管理:

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

  • 指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
1
passwd 选项 用户名

2 Linux系统用户组的管理

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

增加一个新的用户组使用groupadd命令

1
groupadd 选项 用户组

删除一个已有的用户组,使用groupdel命令:

1
groupdel 用户组

修改用户组的属性使用groupmod命令:

1
groupmod 选项 用户组

用户可以在用户组之间切换

1
2
$ newgrp root
# 这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

2.7 磁盘管理

占个坑,以后来补,下次一定。

1 磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题。

Linux磁盘管理常用三个命令为df、du和fdisk。

  • df:列出文件系统的整体磁盘使用量
  • du:检查磁盘空间使用量
  • fdisk:用于磁盘分区

2 磁盘格式化

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。

1
mkfs [-t 文件系统格式] 装置文件名

3 磁盘检验

fsck(file system check)用来检查和维护不一致的文件系统。

若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

1
fsck [-t 文件系统] [-ACay] 装置名称

4 磁盘挂载与卸除

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

1
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

2.8 进程管理

在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。

每个进程都可能以两种方式存在的。前台与后台 。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

ps 查看当前系统中正在执行的各种进程的信息!

1
2
3
4
5
6
7
8
ps- xx:
  -a 显示当前终端所有的进程信息
  -u 以用户的信息显示进程
  -x 显示后台运行进程的参数
#ps -aux 查看所有进程
ps-aux|grep mysql 查看mysql相关进程
#命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象(输入)
# grep 查找文件中符合条件的字符串

kill 结束进程:杀掉进程 等价于Windows结束任务

1
2
kill -9 PID
# 常用选项: -9 :表示强迫进程立即停止

3 环境安装

下载jdk\tomcat\docker,直接宝塔。。环境应该不用自己配吧?答:不用,真香。

3.1 安装Redis

Redis宝塔安装的6.X版本有问题,我这里卸载了手动安装一遍!!安装路径为 /www/server/redis

1 官网下载tar.gz文件,XFTP传到root文件夹下

2 解压

1
tar -zvxf redis-5.0.8.tar.gz

3 移动redis目录

1
mv /root/redis-5.0.8 /www/server/redis

4 编译

1
2
cd /www/server/redis
make

5 安装

1
make PREFIX=/www/server/redis install

6 后台启动Redis

1
2
./bin/redis-server ./redis.conf
# 按ctrl+z退出

7 修改配置文件redis.conf

1
2
3
bind注释
将protected-mode设置为no
daemonize改为yes

8 运行redis

1
2
3
cd /www/server/redis   #进入redis目录
./bin/redis-server ./redis.conf #开启服务
src/./redis-cli #建立连接

9 查看连接

1
2
ps -aux | grep redis #查看redis相关的进程
kill -9 进程号 #强制关闭某进程

10 关闭连接

1
2
shutdown
exit

11 使命令全局可用

1
2
ln -s /www/server/redis/src/redis-server /usr/local/bin/redis-server
sudo cp /www/server/redis/src/redis-cli /usr/local/bin/

12 新的建立连接命令

1
2
redis-server /www/server/redis/redis.conf #指定配置文件
redis-cli #直接运行 舒服了

3.2 LInux运行jar包,跑起来

然后我们打包一个不需要连接数据库的项目springboot-03-web02,看看能不能直接在服务器上跑起来。

1 保证能运行起来,然后clear、package

2 target下找到jar包,在Windows本地资源目录下cmd命令窗口运行之

​ java -jar 文件名 #确保能够在本地跑起来

3 用XFTP将该jar包丢入服务器某个文件夹下

4 查看防火墙开启了哪些端口,如果要用的端口没开请启用之。

5 查看进程占用了哪些端口、如果被占用了、请kill该进程

6 定位目标文件夹 java -jar运行之,公网ip即可访问该网站

123过于傻瓜操作、我不屑之。

4 查看防火墙开启了哪些端口,如果要用的端口没开请启用之

1
2
3
firewall-cmd --list-portsv #查看已开启的端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent #开启某个端口、这里以9000为例
systemctl restart firewalld.service #重启防火墙命令 发现有9000了(如果是阿里云还要设置安全组)

5 查看进程占用了哪些端口、如果被占用了、请kill该进程

  • 我操作时项目发布是默认8080端口,但被占用了
1
2
3
netstat -lnp|grep 80  #查看80相关的端口、被占用的情况,找到进程id
kill -9 4770 #例如,如果是4770进程占用,就关闭之。
netstat -lnp|grep 80 #关闭之后记得再次查看端口占用情况,如果还占用、继续kill

6 定位目标文件夹 java -jar运行之,公网ip即可访问该网站

1
2
3
cd /home/wukang
java -jar springboot-03-web02.jar
# 然后就跑起来了...嘿嘿嘿嘿嘿

登录之、一切正常:

image-20210705201741583 image-20210705201903075
-------------感谢阅读没事常来-------------