- 学完:JavaSE、MySQL、HTML、CSS、JS、JavaWeb、SSM、Redis、Git、Linux、
- 未学完:SpringBoot、Vue、SpringCloud
- 消息队列(Kafka、RabbitMQ、RockeetMQ)、缓存(Redis)、搜索引擎(ES)、集群分布式(购买多台服务器)
- Linux(CentOS 7)操作系统:Windows、MacOS
Linux一切皆为文件:文件的读、写、权限
一:认识Linux 1.1 为什么学习?- 服务器端,在开发领域Linux非常火热
- Linux内核最初只是由芬兰人林纳斯·托瓦兹(linus Torvalds)在赫尔辛基大学上学时出于个人爱好编写的
- Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口)和UNIX的多用户、多任务、支持多线程和多CPU的操作系统
- Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位、64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
- Linux的发行版本就是将内核与应用软件做一个打包。
- Kali Linux:安全渗透测试使用(补天平台)
- 目前市面上比较知名:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE
-
LAMP:Linux+Apache+MySQL+PHP
-
LNMP:Linux+Nginx+MySQL+PHP
-
可以自己安装(比较繁琐)。也可购买云服务器
-
安装CentOS
-
通过镜像进行安装
- 安装VMware虚拟软件,然后打开我们的镜像即可使用
-
购买阿里云服务器安装
-
就是远程电脑:服务器一般不会关机;
-
阿里云购买服务器:https://www.aliyun.com
-
购买完之后,获得服务器的ip地址,重置服务器密码,就可以远程登录了
- 关于安全组的说明:(在阿里云这个非常重要,自己需要开放什么端口来这里配置就好了;
-
下载xshell工具,进行远程连接使用了阿里云服务器了
-
下载XFTP:文件上传工具
-
-
使用xShell
- 新建一个连接
- 输入服务器IP和端口号连接
- 输入账号、密码
- 连接成功
-
使用XFTP
- 直接在xshell中点击打开使用
- 直接拖到服务器就可以拉
- 一般的jdk、taomcat等到home文件夹中安装即可搭建环境
-
-
开机登录
- 开机回启动很多程序。他们在Windows叫做”服务“,在Linux就叫做”守护进程“
- 用户登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
-
关机
-
在linux领域内大多数用在服务器上,很少遇到关机操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机
-
关机指令:shutdown
#将数据保存,同步到硬盘 sync #关机 shutdown #延迟关机:10分钟之后关机 shutdown -h 10 shutdown -h 20:25 shutdown now #就是重启,等同于shutdown -r now reboot #马上重启 shutdown -r now shutdown -r 10 #关闭系统:等同于shutdown -h now 和poweroff halt
-
- 系统目录结构
- 一切皆为文件
- 根目录为/,所有目录都在/之下
- 以下对这些目录对解释:
- /bin:bin是Binary的缩写,这个目录存放着最经常使用的命令
- /boot:这里存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /dev:dev是Device(设备)的缩写,存放的是linux的外部设备,在linux中访问设备的方式和访问文件的方式相同的
- /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录;redis、mysql等
- /home:用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账户命令的
- /lib:这个目录中存放着系统最基本的动态连接共享库,其作用类似于windows里的DLL文件
- /lost+found:这个目录一般情况下是空着的,当系统非法关机后,这里就存放了一些文件
- /media:linux系统回自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载载/mut下,然后进入该目录就可以查看光驱的内容了
- /opt:这里给主机额外安装软件所摆放的目录,比如你安装一个mysql数据库则就可以放在这个目录下。默认是空的
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
- /root:该目录为系统管理员,也称为超级权限者的用户主目录
- /sbin:s就是super user的意思,这里存放的是系统管理员使用的系统应用程序
- /srv:该目录存放一些服务启动之后需要提取的数据
- /sys:这里linux2.6内核心的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp:这个目录是用来存放一些临时文件的
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下program files目录
- /usr/bin:系统用户使用的应用程序
- /var:这个目录中存放着不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清楚
- /www:存放服务器网站相关的资源,环境,网站的项目
#绝对路径 #相对路径 #列出所有的目录 ls #all,查看全部的文件,包括隐藏文件 ls -a #列出所有的文件,包括文件的属性和权限,没有隐藏文件 ls -l #组合使用 ls -a -l #切换目录:目录名字可以绝对和相对都可以 cd Downloads #绝对目录 cd ../Downloads #相对目录 #创建文件夹 mkdir wei mkdir wei2 wei3 #一次创建多个文件夹 mkdir -p test/test2/test3 #一次创建多个层级文件夹 #删除文件夹 rmdir wei #只能删除一个空文件夹 rmdir -p test #删除层叠目录(删除不空文件夹) #创建文件 touch 文件 #删除文件 rm -f 文件 #忽略不存在的文件 rm -r 文件 #递归删除目录 rm -rf 文件 #删除文件 #复制文件和目录 cp 文件 原来的地方 新地方 cp 文件 新地方 #移动文件 mv 文件 新地方 mv -f 文件 目的地 #强制 mv -u 文件 目的地 #只替换已经更新过的文件 mv wei wei2 #重命名文件夹 #回到用户目录 cd ~ #查看当前目录 pwd2.3 文件属性
-
boot文件的第一个属性用d表示。则该文件为一个文件夹(目录文件):directry
-
在Linux中第一个字符代表这个文件是目录、文件、或者链接文件等等:
- 【d】:目录
- 【-】:文件
- 【l】:链接文档(link file):比如windows中的快捷方式
- 【b】:装置文件里面的可供存储的接口设备(可随机存取装置)
- 【c】:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
-
接下来的字符中,以三个一组,且均为【rwx】的三个参数的组合:
-
r:可读(read)
-
w:可写(write)
-
x:可执行(execute)
-
注意:三个权限的位置不会变,如果没有权限,就会出现【-】代替;比如:r-xrw-r—
-
每个文件的属性由10个字符来确定的。
文件类型 属主权限 属组权限 其他用户权限 0 123 456 789 d rwx r-x r-x 目录文件 读写执行 读写执行 读写执行 -
文件详细解释
Staff:用户属组
Wheel:管理员属组
Admin:超级管理员属组
-
-
修改文件属性
-
更改文件属组
chgrp [-R] 属组名 文件名 #-R:这个文件下所有文件都要修改 chgrp -R root wei #修改wei这个文件夹修改为wheel属组
-
更改文件属主,也可更改文件属组
chown [-R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
-
chmod:更改文件的9个属性:
-
linux文件属性有两种设置方式:
-
数字
r:4 w:2 x:1
-
符号
rwx rwx rwx
chown [-R] 属主名 文件名
-
-
linux文件的基本权限就有9个,分别是owner/group/other三种身份各自有自己的read/write/execute权限。
-
可以使用数子来代替各个权限
-
每种身份各自有自己的三个权限,比如:
owner=rwx=4+2+1=7 group=rw-=4+2+0=6 other=---=0+0+0=0 #更改文件的属性 chown 770 filename
-
-
-
文件内容查看
可以使用man 【命令】来查看各个命令的使用文档;比如man cp
#由第一行开始显示文件内容cat 文件名字#从文件的最后一行开始显示,倒着显示tac 文件名字#显示的时候,带有行号nl 文件名字#一页一页的显示文件内容#more的文件;空格翻页,enter一行行向下more 文件名字#一页一页的显示文件内容,可以翻页less 文件名字 #空格翻页,上下键代表翻页页面,q代表退出;#文档中查找:/aaa:查找aaa;?aaa:向上查aaa;n表示下一个;N:向下找#只看头前面20行head -n 20 文件名#只看尾巴几行tail -n 20 文件名
-
Linux链接文件的概念
硬链接:允许一个文件有一个多个路径,源文件删除,不影响
#创建wei的硬链接的2种方式touch wei wei2ln wei wei3
软链接:类似于windows的快捷方式,删除源文件,不可访问
#创建wei的软链接ln -s wei wei4
-
什么是vim编辑器
-
vim是从vi发展出来的一个文本编辑器,代码补全、编译以及错误跳转等变成的功能特别丰富,在程序员种广泛使用
-
Linux中通过vim:查看内容、编辑内容、保存内容
-
vim键盘图
-
三种模式
-
命令模式
i:切换到输入模式
x:删除当前光标所在的字符
esc:退出输入模式,切换到命令模式
:切换到底线命令模式
-
输入模式
在命令模式下按i进入了输入模式
在输入模式中,可以使用以下按键
- 字符按键以及shift组合:输入字符
- enter:换行
- 推格键:删除光标前的一个字符
- 方向键:在文档移动光标
- del:删除光标前一个字符
-
底线命令模式
- 在命令模式下按:进入底线命令模式
- 底线命令模式可以输入单个或者多个字符命令,可用的命令非常多
- 在底线命令模式中,基本的命令有
- q:退出程序
- w:保存文件
- esc:退出底线命令模式
-
-
具体使用Vim步骤:
- 新建文件:touch hello.txt
- 打开文件:vim hello.txt
- 编辑文件:i
- 输入内容:
- 退出模式:esc
- 底线命令模式::wq
- 完成修改
-
属主:属于哪个类型的用户
属组:属于哪个分组
-
添加
useradd -选项 用户名
- -m:自动创建这个用户的主目录:/home/wei
- -c comment:指定一段注释性描述
- -d 目录:指定用户主目录。如果此目录不存在,则同时使用-m选择可以创建
- -g 用户组:指定用户所属的用户组
- -G 用户组:指定用户所属的附加组
- -s shell文件:指定用户的登录shell
- -u 用户号:指定用户的用户号。如果同时有-o选项,则可以重复使用其他用户的标示号
用户号:
- 指定新账号的登录名
-
修改
usermod 对应修改内容 用户名
-
删除
userdel -r wei:删除用户的时候,将它的目录删除
-
切换用户
- 切换用户的命令:su username
- 从普通用户切换到root用户,还可以使用命令:sudo du
- 在终端输入exit 或者logo或者ctrl+d可以退回到原来的用户
- $:表示普通用户
- #:表示超级用户,也就是root用户
-
用户的密码设置问题
-
我们一般通过root创建用户的时候,要配置密码
-
超级用户
passwd 用户名密码密码
-
普通用户
passwd密码密码
-
-
锁定账户
#锁定用户wei,这个用户就不能登录了passwd -l wei#将密码删掉,之后就不能登录passwd -d wei
-
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root),不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与他同名的用户组,这个用户在创建用户的时候同时创建。
-
用户组的管理涉及用户的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
-
创建一个用户组
#添加开发用户组,创建完之后,有一个组id,这个id可以在创建的时候指定groupadd dev#创建完之后,有一个组id,这个id可以在创建的时候指定,也可以不指定,自动增加groupadd -g 520 dev
-
删除一个用户组
groupdel dev
-
修改一个用户组
#修改dev的名字与idgroupmod -g 555 -n pro dev
-
切换用户组
#普通用户组切换到root用户组$ newgrp root
-
用户相关的文件(了解)
-
/etc/passwd
-
这个文件中每一个行都代表这一个用户,我们可以从这里看出这个用户的主目录在哪里,可以看到哪个组
-
口令在/etc/shadow文件中,不过都是加密过的
用户名:口令(登录密码,我们不可见):用户标准识号:组标识号:注释性描述:主目录:登录shell
-
-
列出文件系统的整体磁盘使用量
df -h
-
检查磁盘使用量
#检查系统中根目录下所占用的大小du -sm /*
-
什么是进程?
- 在linux每一个程序都有一个自己的进程,每一个进程都有一个id号
- 每一个进程都会有一个父进程
- 进程可以有两种存在方式:前台、后台
- 一般服务都是后台进程
-
命令
- ps:查看当前中正在执行的进程
#显示当前终端运行的所有的进程信息(当前进程)ps -a#以用户的信息显示进程ps -u#显示后台运行的进程参数ps -x#查看所有的进程ps -aux#在linux中 | 为管道:比如A|B:#查看文件中符合的字符串grep#把查询结果过滤:只要mysql的进程pps -aux | grep mysql#查看父进程信息ps -ef#结束进程kill -9 进程id
- 安装软件一个有三种方式:
- rpm
- 解压缩
- yum在线安装
-
rpm安装方式(发布springboot项目)
-
我们开发java程序必要的环境
-
jdk下载
-
检查linux系统是否有java环境:java -version
-
如果有则需要卸载:rpm -qa|grep jdk #检查jdk版本信息 rpm -e —nodeps jsk1.8 #强制卸载
-
安装开始
- rpm -ivh rpm的包
-
配置环境变量/etc/profile
-
vim /etc/profile #编辑这个文件,在最后面添加以下java配置和windows安装环境变量是一样的
JAVA_HOME=/usr/java/安装目录CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/libPATH=$JAVA_HOME/bin;$JAVA_HOME/jre/binexport PATH CLASSPATH JAVA_HOME
-
让配置文件生效
source /etc/profile
-
-
安装结束
-
发布一个项目试试
-
先看服务器哪些端口开启了:
#查看哪些端口开启了firewall -cmd --list-ports#开启固定的端口:9999firewall -cmd --zone=public --add-port=9999/tcp --permanent#重启防火墙systemctl restart firewalld.service
-
开启项目需要的端口
-
在本地运行jar包试试可以用吗?
#在本地试试可以吗java -jar 项目jar包
-
添加到服务器中
-
在服务器中运行
java -jar 项目的jar包
-
-
-
解压式安装方式
-
安装步骤
-
下载tomcat
-
解压
#解压文件安装tar -zxvf 压缩包
-
启动tomcat测试
#启动tomcat./startup.sh#结束./shutdown.sh
-
如果防火情8080端口开了,并且阿里云安全组也开放了这个时候就可以直接访问远程了
#查看防火墙服务systemctl status firewalld#开启firewalld.service服务service firewalld start#重启service firewalld restart#关闭service firewalld stop#查看防火墙规则firewall-cmd --list-all #查看全部的信息firewall-cmd --list-ports #只看端口信息#开启端口firewall-cmd --zone=public --add-port=8080/tcp --permanentsystemctl restart firewalld.service #重启防火墙#命令解释--zone #作用域--add-port=8080/tcp #添加端口,格式为:端口/通信协议--permanent #永久生效,没有此参数重启后失效
-
上传完毕的项目直接购买自己的域名,备案解析过去即可!
-
阿里云购买域名,备案,填写解析信息即可
-
域名解析后,如果端口式80-http或者443-https可以直接访问,如果是9000 8080,就需要apache或者Nginx做以下反向代理即可(配置文件的方式,十分简单)
-
-
yum安装方式
-
官方安装参考手册:https://docs.docker.com/engine/install/centos/
-
安装一定要有网,因为docker安装是联网安装
-
安装步骤
-
检测CentOS 7
# cat /etc/redhat-release
-
安装准备环境
yum -y install 包名 #-y自动确认所有的提示都为yesyum -y install gcc #安装gccyum -y install gcc-c++ #安装gcc-c++
-
清除以前的版本
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
根据官网安装即可
-



