Linux
Linux简介:
Linux是一种操作系统,它可以作为计算机硬件和软件之间的接口,使计算机程序和应用程序能够与计算机硬件进行交互。与其他操作系统如Windows和Mac OS X不同的是,Linux具有很高的可定制性和灵活性,使用户可以通过自定义和配置来获得更高的效率和更好的用户体验。
Linux由许多不同的组件组成,其中最核心的组件是内核,它负责管理计算机硬件资源并提供基本的系统服务。除了内核之外,Linux还有众多的系统工具和应用程序,它们一起构成了一个完整的操作系统,并提供了大量的功能和服务,包括文件管理、网络管理、安全性管理和软件开发等。
由于Linux是开放源代码的,因此用户可以自由地查看和修改Linux的源代码,以满足他们的特定需求。这种开放性使得Linux成为许多软件开发人员和计算机专业人士的首选操作系统。Linux非常适合运行服务器和大型计算机集群,这些系统需要高度的性能和安全性。
总的来说,Linux是一种免费且开放源代码的操作系统,提供了高度的可定制性和灵活性,适用于各种不同的计算机硬件和软件配置。它在许多领域得到了广泛的应用,包括服务器、嵌入式系统、移动设备和高性能计算等。
Linux安装
安装方式:
- 物理机安装:直接将操作系统安装到服务器硬件上
- 虚拟机安装:通过虚拟机软件安装
虚拟机:指通过软件模拟的具完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。
常用的虚拟机软件
- VMWare(我们使用的)
- VirtualBox
- VMLite WorkStation
- Qemu
- HopeddotVos
安装我们的VMWare
虚拟机安装包:
链接:https://pan.baidu.com/s/1RVLwkHr_oUsQ9DhRGcEkEA?pwd=2a3b
提取码:2a3b
Linux下载网站:
http://mirrors.aliyun.com/centos/7/isos/x86_64/
finalshell安装包:
链接:https://pan.baidu.com/s/1GqE3GalYIeiWN3Cy1OIoaA?pwd=2a3b
提取码:2a3b
虚拟机和Linux的安装
我们直接安装进行了
在我们刚刚安装的虚拟机里面创建新的虚拟机
磁盘大小,默认20g也可以根据自己需求来调整
点击进入进行配置
配置好后我们直接关闭,如何创建就完成了。
创建完成后我们到首页就可以看到虚拟机了我们直接开机进行,开机如下图所示
我们选择第一个然后按回车就可以了,如何下面会跳出让我们选择语言。
如何我们需要在安装位置进行配置一下
我们选择默认即可,继续往下走
然后我们需要设置一下root密码,也可以增加用户,设置完成后等待即可。
安装完成后重启即可。
我们重启过后需要我们刚刚配置的用户和密码进行登入,这样我们的安装就完成了。
网卡设置
由于启动服务器时未加载网卡,导致ip地址初始化失败。
我们可以通过ip addr进行查看
修改网络初始化配置,设定网卡在系统启动时初始化
进入根目录
cd /
进入etc目录
cd etc
进入sysconfig目录
cd sysconfig
进入network-scripts
cd network-scripts
编辑ifcfg-ens33文件
vi ifcfg-ens33
i 进入编辑状态
光标 移动光标
<esc> -> :wq -> <ENTER> 保存退出
我们执行完vi ifcfg-ens33这个命令以后我们只需要按一下i就可以进入编辑状态
我们修改完成以后我们直接按esc然后输入 :wq 表示保存退出,然后我们直接重启即可。
我们重新启动后在重新登入然后再输入 ip addr就可以看见我们的ip地址了。
安装SSH连接工具
SSH,建立在应用层上的安全协议
常用的SSH工具:
- Putty
- secureCRT
- xshell
- finalshell(我们用的)
我们直接安装即可。
然后我们打开我们已经安装好的工具来进行连接
然后我们下一步
我们配置完成以后我们退出就可以直接连接了。
Linux系统和Windows目录结构对比
linux系统中目录
- / 是所有目录的顶点
- 目录结构像一颗倒挂的树
Linux常用命令
Linux命令初级体验
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
1 | ls | list | 查看当前目录下的内容 |
2 | pwd | print word directory | 查看当前所在目录 |
3 | cd[目录名] | change directory | 切换目录 |
4 | touch[文件名] | touch | 如果文件不存在,新建文件 |
5 | mkdir[目录名] | make directory | 创建目录 |
6 | rm[文件名] | remove | 删除指定文件 |
注意事项:
在执行Linux命名时,提示信息如果提示为乱码,这是由于编码问题导致的,只需要修改Linux的编码即可命名如下
echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
Linux命令使用技巧
- Tab键自动补全
- 连续两次Tab键,给出操作提示
- 使用上下箭头快速调出曾经使用过的命令
- 使用clear命令或者Ctrl+l快捷实现清屏
Linux命令格式
command [-options] [parameter]
说明:
- command:命令名
- [-options]:选项,可以来对命令进行控制,也可以省略
- [parameter]:传给命令的参数,可以是零个、一个或者是多个
注意:
[]代表可选
命令名、选项、参数之间有空格进行分割
Linux常用命令
文件操作命令
ls
作用:显示指定目录下的内容
语法:ls [-al] [dir]
说明:
- -a 显示所有文件及目录(.开头的隐藏文件也会列出)
- -l 除文件名称外,同时将文件形态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出
注意:
由于我们使用ls命令时经常需要加入-l选项,所以Linux为ls-l命令提供了一种简写方式,即ll
cd
作用:用于切换当前工作目录
语法:cd [dirName]
说明:
- ~表示用户的homemulu
- . 表示目前所在目录
- … 表示目前目录的上级目录
举例:
- cd … 切换当前目录的上级目录
- cd ~ 切换用户的home目录
- cd/usr/local 切换到/usr/local目录
cat
作用:用于显示文件内容
语法:cat [-n]fileName
说明:
- -n :由1开始对所输出的行数进行编号
举例:
- cat/etc/profile 查看/etc目录下的profile文件内容
more
作用:以分页的形式显示文件内容
语法:more fileName
操作说明:
- 回车键: 向下滚动一行
- 空格键: 向下滚动一行
- b 返回上一屏
- q或者Ctrl+c 退出more
举例:
more/etc/profile 以分页的方式显示/etc目录下的profile文件内容
tail
作用:查看当前文件末尾的内容
语法:tail [-f] fileName
说明:
- -f :动态读取文件末尾内容并显示,通常用于日志文件的内容输出
举例:
tail/etc/profile 显示/etc目录下的peofile文件末尾10行内容
tail -20/etc/profile 显示/etc目录下的peofile文件末尾20行内容
tail -f/itcast/my.log 动态读取/itcast目录下的my.log文件末尾内容并显示
mkdir
作用:创建目录
语法:mkdir [-p] dirName
说明:
- -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录结构同时创建。
举例:
- mkdir anle 在当前目录下,建立一个名为anle的子目录
- mkdir -p anle/test 在工作目录下的anle目录中建立一个子目录为test,如果anle目录不存在,则建立一个。
rmdir
作用:删除空目录
语法:rmdir [-p] dirName
说明:
- -p:当前目录被删除后使父目录为空的话,则一并删除
举例:
- rmdir anle 删除名为anle的目录
- rmdir -p anle/test 删除anle目录中名为test的目录,若test目录删除后anle为空,则也会被删除
- rmdir anle* 删除名称以anle开头的目录
rm
作用:删除文件或者目录
语法:rm [-rf] name
说明:
- -r:将目录及目录中的文件(目录)逐一删除,即递归删除
- -f:无需确认直接删除
举例:
- rm -r anle/ 删除名为anle的目录和目录中的文件及目录,删除请需要确认
- rm -rf anle/ 无需确认,直接删除anle目录中的所有文件
- rm -f hello.txt 无需确认,直接删除hello.txt文件
拷贝移动命令
cp
作用:用于复制文件和目录
语法:cp [-r] sourcr dest
说明:
- -r:如果复制的时目录需要使用此选项,此时将复制该目录下的所有子目录和文件
举例:
- cp hello.txt anle/ 表示将hello.txt文件复制到anle目录中
- cp hello.txt./ hi.txt 将hello.txt复制到当前目录,并改名为hi.txt
- cp -r an/ ./anle/ 将an目录和该目录下的所有文件复制到anle目录下
- cp -r an/* ./anle 将an目录下所有文件复制到anle目录下,不包括an目录
mv
作用:为文件或目录改名、或将文件或目录进行移动到其他位置
语法:mv source dest
举例:
- mv hello.txt hi.txt 将hello.txt文件该为hi.txt
- mv hi.txt anle/ 将hi.txt文件移动到anle目录下
- mv hi.txt anle/hello.txt 将hi.txt文件移动到anle目录下在改名为hello.txt
- mv an/ anle/ 如果anle目录存在,将an目录移动到anle目录中
打包压缩命令
tar
作用:对文件进行打包、解包、压缩、解压
语法:tar [-zcxvf] fileName [file]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩
说明:
- -z:z表示的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
- -c:c表示的是create,即创建新的包文件
- -x:x表示的是extract,实现从包文件中还原文件
- -v:v代表的是verbose,显示命令的执行过程
- -f:f代表的file,用于指定包文件的名称
常用的打包压缩命令
打包:
- tar -cvf hello.tar ./* 将当前目录下所有文件打包,打包后的文件名为hello.tar
- tar -zcvf hello.tar.gz ./* 将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
解包:
- tar -xvf hello.tar 将hello.tar文件进行压缩解包,并将解包后的文件放在当前目录
- tar -zxvf hello.tar.gz 将hello.tar.gz文件进行解压,并将压缩后的文件放在当前目录
- tar -zxvf hello.tar.gz -C /usr/local 将hello.tae.gz文件进行解压,并将解压后的文件放到/usr/local 目录
文本编辑命令
vi/vim
作用:vi命名是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于windows中的记事本
语法:vi fileName
说明:
-
vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件可以对文本进行着色,方便我们对文本进行编辑处理,所有实际中vim用的比较多
-
要使用vim命令需要我们自己进行安装,只需要输入以下命令
yum install vim
vim
作用:对文件内容进行编辑yum,vim其实就是一个文本编辑器
语法:vim fileName
说明:
- 在使用vim命令编辑文件时,如果指定的文件存则直接打开此文件,如果指定的文件不存在则新建一个文件。
- vim在进行文本编辑时共分为三种模式,分别为命令模式,插入模式和底行模式。这三种模式之间可以相互切换,我们在使用vim时一定要注意我们当前所处的是那种模式。
针对vim中的三种模式说明:
命令模式
- 命令模式下可以查看文件内容,移动光标(上下箭头、gg、G)
- 通过vim命令打开文件后,默认的是命令模式
- 另外两种模式需要首先进入命令模式,才能进行彼此
插入模式
- 插入模式下可以对文件内容进行编辑
- 在命令模式下按[i、a、o]任意一个,可以进入插入模式。进入插入模式后,下方会出现[insert]字样
- 在插入模式按Esc键,回到命令模式
底行模式
- 底行模式可以对文件内容进行查找、显示行数、退出等操作
- 在命令模式下[:,/]任意一个,可以进行底行模式
- 通过/方式进入底行模式后,可以对文件进行查找
- 通过 : 进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)
查找命令
find
作用:在指定目录下查找文件
语法:find dirName -option fileName
举例:
- find . -name “*java” 在当前目录及其子目录下查找.java结尾文件
- find /anle -name “*Java” 在anle目录及其子目录下查找.Java结尾文件
grep
作用:从指定文件中找指定的文本内容
语法:grep word fileName
举例:
- grep Hello HelloWord.java 查找HelloWord.java文件中出现的Hello字符串的位置
- grep hello *.java 查找当前目录下所有.java结尾文件中包含hello字符串的位置
软件安装
软件安装的方式:
-
二进制发布包安装
软件已经针对具体平台编译打包发布,只要解压,修改配置即可。
-
rpm安装
软件已经按照redhat的包管理规范进行打包,使用rpm命令进行按照,不能自行解决库依赖问题
-
yum安装
一种在线的软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
-
源码编译安装
软件以源码工程的形式发布,需要自己编译打包
安装jdk
操作步骤:
-
使用finalShell自带的上传工具将jdk的二进制发布包上传到Linux
相关的软件包资源:
链接:https://pan.baidu.com/s/1eAi8AzjWIx7Z2KLNhcRZnw?pwd=7krq
提取码:7krq -
解压安装包,命令为 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
-
配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
-
重新加载profile文件,使更改的配置立即生效,命令为source /etc/profile
-
检查安装是否成功,命令为java -version
安装Tomcat
操作步骤:
-
使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux
相关软件包资源:
链接:https://pan.baidu.com/s/1nWkxVYSCaqdKF9DBZmZyDw?pwd=g3iv
提取码:g3iv -
解压安装包,命令为tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local
-
进入Tomcat的bin目录启动服务,命令为sh startup.sh 或者 ./startup.sh
验证Tomact启动是否成功,有多种方式
- 查看启动日志
- more /usr/local/apache-tomcat-7.0.57/logs/catalina.out
- tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
- 查看进程 ps - ef | grep tomcat
- 注意:
- ps命令是linux中非常强大的查看进程的命令没通过 ps -ef 可以查看当前运行的所有进程的信息
- “|” 在linux中称为管道符,可以将前一个命令的结果输出后一个命令作为输入
- 使用ps命令查看进程时,经常配合管道符查找命令 grep 一起使用,来查看特定进程。
防火墙操作:
- 查看防火墙状态(systemctl status firewalld 、firewall-cmd --state)
- 暂时关闭防火墙(systemctl stop firewalld)
- 永久关闭防火墙(systemctl disable firewalld)
- 开启防火墙(systemctl start firewalld)
- 开发指定的端口(firewall-cmd --zone=public --add-port=8080/tcp --permanent)
- 关闭指定端口(firewall-cmd --zone=public --remove-port=8080/tcp --permanent)
- 立即生效(firewall-cmd --reload)
- 查看开放的端口(firewall-cmd --zone=public --list-ports)
注意:
- systemctl 是管理linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
- firewall-cmd 是linux中专门用于控制防火墙的命令
- 为了保证系统安全,服务器防火墙不建议关闭
安装Mysql
-
检测当前系统是否安装Mysql数据库
rpm -qa 查询当前系统中安装的所有软件 rpm -qa | grep mysql 查询当前系统中安装的名称带mysql的软件 rpm -qa | grep mariadb 查询当前系统中安装的名称带maiadb的软件
RPM:软件包管理,是红帽Linux用于管理和安装软件的工具
注意:
如果当前系统中已经有mysql数据库,安装将失败。CentOS7自带mariadb,与mysql数据库冲突。
-
卸载已经安装的冲突软件
rpm -e --nodeps 软件名称 卸载软件 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
-
将mysql的资源上传到Linux并压缩
资源:
链接:https://pan.baidu.com/s/1mr0tWj1levFEbT0KqnoF6w?pwd=nye3
提取码:nye3mkdir /usr/local/mysql tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /user/local/mysql
解压后得到6个rpm的安装包文件
-
安装顺序安装rpm安装包
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm yum install net-tools rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
说明1:安装过程中缺少net-tools依赖,使用yum安装
说明2:可以通过指令升级现有软件及内核
yum update
-
启动mysql
systemctl status mysqld 查看mysql服务状态 systemctl start mysqld 启动mysql服务
说明:可以设置开机时启动mysql服务,避免每次开机启动mysql
systemctl enable mysqld 开机启动mysql服务、 netstat -tunlp 查看已经启动的服务 netstat -tunlp | grep mysql ps -ef | gerp mysql 查看mysql进程
-
登入mysql数据库,查阅临时密码
cat /var/log/mysqld.log 查看文件内容 cat /var/log/mysqld.log | grep password 查看文件内容中包含password的信息
注意: 冒号后面的是密码,注意空格。
-
登入mysql,修改密码,开放访问权限
mysql -uroot -p 登入mysql(使用零时密码) #修改密码 set global validate_password_length=4; 设置密码长度最低位数 set global validate_password_policy=LOW; 设置密码安全等级低,便于密码可以修改成root #开启访问权限 grant all on *.* to 'root'@'identified by 'root'; flush privileges;
-
测试MySQL数据库是否正常工作
show databases;
安装lrzsz
操作步骤
-
搜索lrzsz安装包,命令为
yum list lrzsz
-
使用yum命令在线安装,命令为
yum install lrzsz.x86_64
注意:Yum是Fedora和RedHat以及centOs中shell前端软件包管理器,基于RPM包管理,能够从指定服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载,安装。
项目部署
手工部署项目
-
在ider中开发springboot项目并打成jar包
-
将jar包上传到linux服务
mkdir/usr/local/app 创建目录,将jar包放到该目录下
-
启动springboot程序
java -jar jar包名
-
检查防火墙,确保8080端口对外开放,访问springboot项目
-
改为后台运行springboot程序,并将日志输出到日志文件
目前程序运行的问题:
- 线上程序不会采用控制台霸屏的形象运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制欲,而是输出到日志文件,方便运维查询信息
nohup 命令:用于不挂断运行指定命令,退出终端不要影响程序的正常运行 语法: nohup Command [Arg ...] [$] 参数说明: Command:要执行的命令 Arg:一些参数,可以指定输出文件 &:让命令在后台运行 举例: nohup java -jar boot工程.jar &>hello.log & 后台运行java -jar命令,并将日志输出到hello.log文件中
-
停止springboot程序
ps -ef | ger 'java -jar' kill -9 进程号
通过shell脚本自动部署项目
-
在linux中安装git
yum list git 列出git安装包 yum install git 在线安装git
-
使用git克隆代码
cd /usr/local git clone git仓库的地址
-
将资料中提供的maven安装包上传到Linux中安装maven
资源:
链接:https://pan.baidu.com/s/172x6709U2XaLlS2Tnk6fmw?pwd=hb2j
提取码:hb2j
tar -zxvf maven包名 -C /usr/local
vim /etc/profile 修改配置文件,加入如下内容
export MAVEM_HOME=/usr/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/BIN:$PATH
source/etc/profile
mvn-version
vim /usr/local/apache-maven-3.5.4/conf/settings.xml 修改配置文件内容如下
<localRepository>/usr/local/repo</localRepository>
-
将资料中提供的shell脚本文件复制到linux
资源:
链接:https://pan.baidu.com/s/1LU7TnZN0c1uk3fZpwtYFmw?pwd=9rwj
提取码:9rwjshell(脚本)是一种linux系统中的脚本程序 使用shell脚本编辑跟javaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释器就可以了。
-
为用于授权
chmod 命令是控制用于对文件的权限的命令 linux中的权限分为: 读(r)、写(w)、执行(x)三种权限 linux的文件调用权限分为三级:文件所有者、用户组、其它用于 只有文件的所有者和超级用户可以修改文件或目录的权限 要执行shell脚本需要有对此脚本文件执行权限,如果没有则不能执行
chmod命令可以使用八进制数来指定权限
-
设置静态ip
修改/etc/sysconfig/network-scripts/ifcfg-ens33 内容如下:
-
重启网络服务
systemctl restart network
注意:重启网络服务后ip地址发生了改变,此时FinalShell已经连接不上linux系统,需要创建一个新连接才能连接到linux服务。
nf/settings.xml 修改配置文件内容如下
/usr/local/repo
4. 将资料中提供的shell脚本文件复制到linux
资源:
链接:https://pan.baidu.com/s/1LU7TnZN0c1uk3fZpwtYFmw?pwd=9rwj
提取码:9rwj
shell(脚本)是一种linux系统中的脚本程序
使用shell脚本编辑跟javaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释器就可以了。
5. 为用于授权
chmod 命令是控制用于对文件的权限的命令
linux中的权限分为: 读(r)、写(w)、执行(x)三种权限
linux的文件调用权限分为三级:文件所有者、用户组、其它用于
只有文件的所有者和超级用户可以修改文件或目录的权限
要执行shell脚本需要有对此脚本文件执行权限,如果没有则不能执行
chmod命令可以使用八进制数来指定权限
[外链图片转存中...(img-ty6O4Cyy-1688547243524)]
6. 设置静态ip
修改/etc/sysconfig/network-scripts/ifcfg-ens33 内容如下:
[外链图片转存中...(img-JKqLTNZc-1688547243524)]
7. 重启网络服务
systemctl restart network
注意:重启网络服务后ip地址发生了改变,此时FinalShell已经连接不上linux系统,需要创建一个新连接才能连接到linux服务。