前言:
安装软件过程中的一些教程放到此网盘:https://pan.quark.cn/s/eee7ced07573
一、Linux介绍
Linux 是一个开放源代码的类 Unix 操作系统内核,是基于 POSIX(可移植操作系统接口)标准的。它最初由芬兰计算机科学家 Linus Torvalds 在1991年创建,并迅速发展成为一个强大、灵活且广泛使用的操作系统。以下是关于 Linux 的一些主要特点和信息:
1. 开放源代码和自由软件
2. 多样的发行版(Distribution)
3. 多用户、多任务和多平台支持
4. 强大的安全性和稳定性
5. 命令行界面和图形用户界面(GUI)
6. 广泛的应用领域
总体来说,Linux 的成功归因于其开放源代码、稳定性、安全性、灵活性和高度可定制性。它不仅是技术爱好者和开发者的首选,也是众多大型组织和企业的基础设施重要组成部分。
二、Vm+Centos安装
1、下载Vmware
https://link.zhihu.com/?target=https%3A//www.vmware.com/
2、下载Centos镜像
下载地址:https://mirrors.aliyun.com/centos/7/isos/x86_64/
下载DVD 4.4G标准版本的,然后根据安装指导就安装成功
三、配置静态IP
在Linux命令行输入以下命令:
ifconfig
ip addr
找到ens33里面此电脑的ip地址 ,然后复制
然后进入文件夹:
cd /etc/sysconfig/network-scripts/
通过vim编辑下面内容:
vim ifcfg-ens33
然后把 BOOTPROTO设置为静态,ONBOOT设置为yes,后面加上
IPADDER = "刚才复制的电脑ip"
GATEWAR="电脑ip后三位改为.2"
DNS1="电脑ip后三位改为.2"
然后 :wq 退出vim
四、安装Xshell、Xftp、nodepad++这三个软件
安装效果如图所示:
然后,通过Xshell软件连接到Linux虚拟机终端就能在Xshell软件中开始练习Linux了!
五、Linux系统介绍以及常用的指令
Linux 目录结构:
1./bin:存放系统的基本命令(二进制可执行文件)。
2./boot:存放启动 Linux 操作系统所需的文件,如内核文件和引导加载程序配置。
3./dev:存放设备文件,Linux 中所有设备都被视为文件。
4./etc:存放系统配置文件。
5./home:普通用户的家目录。
6./lib:存放系统运行时需要的共享库文件。
7./media:挂载可移动介质的挂载点。
8./mnt:临时挂载其他文件系统的挂载点。
9./opt:可选的软件包安装目录。
10./proc:虚拟文件系统,提供有关系统和进程的信息。
11./root:系统管理员(root 用户)的家目录。
12./sbin:存放系统管理员使用的系统管理命令。
13./srv:存放特定服务提供的数据或文件。
14./tmp:存放临时文件的目录。
15./usr:存放用户安装的应用程序和文件。
16./var:存放经常变化的文件,如日志、数据库等。
Linux 中常用的指令:
1.ls:列出目录内容。
2.cd:切换目录。
3.pwd:显示当前工作目录。
4.mkdir:创建新目录。
5.rm:删除文件或目录。
6.cp:复制文件或目录。
7.mv:移动文件或目录。
8.touch:创建空文件或更新文件时间戳。
9.cat:连接文件并打印到标准输出设备上。
10.grep:在文件中搜索指定的模式。
11.echo:显示文本或将文本输出到文件。
12.chmod:修改文件或目录的权限。
13.chown:修改文件或目录的所有者。
14.sudo:以超级用户身份执行命令。
15.apt-get/yum:包管理器,用于安装、更新和管理软件包。
六、用户
1、查看用户信息的三条指令
查看全部:
cat /etc/passwd
查看文件最后数字行信息:
tail -n 数字 /etc/passwd
查看文件开头数字行信息:
head -n 数字 /etc/passwd
2、用户七个字段信息含义
在Linux系统中,通常使用冒号(:)分隔的七个字段来表示一个用户的详细信息,例如:
user1:x:1001:1001::/home/user1:/bin/bash
这七个字段的含义依次是:
1.用户名(user1):这是用户的登录名称。
2.密码占位符(x):在传统的 /etc/passwd 文件中,此位置通常显示为 x,实际的加密密码保存在 /etc/shadow 文件中,以提高安全性。
3.用户ID(UID,1001):每个用户在系统中都有一个唯一的数字ID,称为用户ID(UID)。
4.组ID(GID,1001):表示用户所属的主要用户组ID。用户组是一组用户的集合,可以让用户共享文件和资源。
5.用户信息(空白,通常是注释字段):通常在这里可以添加用户的详细信息,如全名、电话等,但这个字段不是必须的。
6.用户主目录(/home/user1):用户登录后默认所在的目录,也称为家目录。
7.默认shell(/bin/bash):用户登录后默认使用的shell程序。shell是用户与操作系统交互的界面。
3、用户操作
1.新建用户:useradd newuser
2.删除用户:userdel username
3.修改用户:usermod -l newname oldname (修改用户名)或 usermod -d /new/home/dir username (修改用户家目录)
4.查看用户密码:cat /etc/shadow
5.修改用户密码:passwd username
6.用户切换指令:su:su - username
4、用户组操作
1.新建用户组:groupadd groupname
2.删除用户组:groupdel groupname
3.将用户加入用户组:usermod -aG groupname username
4.查看用户所属的用户组:groups username
5.修改文件或目录的所属用户组:chown :groupname filename_or_directory
6.修改用户组的主组:usermod -g groupname username
5、相关权限问题
文件权限:
每个文件或目录有三组权限:用户(文件所有者)、用户组和其他用户。
权限分为读(r)、写(w)和执行(x),分别用数字或符号表示。
数字表示法:r=4,w=2,x=1。例如,读写执行权限表示为 7,只读权限表示为 4。
用户组权限:
每个文件或目录可以属于一个用户组,用户组可以有特定的权限。
用户组权限可以让同一组的多个用户共享对文件和目录的访问权限。
常用命令和操作:
查看文件权限:ls -l filename,显示文件的详细权限。
修改文件权限:chmod 命令可以修改文件或目录的权限。
例如,chmod 755 filename 将文件设置为所有者具有读写执行权限,用户组和其他用户具有读和执行权限。
修改文件所属用户或用户组:chown 命令可以修改文件或目录的所有者和/或用户组。
例如,chown username:groupname filename 将文件的所有者改为 username,用户组改为 groupname。
权限相关文件:
/etc/passwd:包含系统上的每个用户账号的信息。
/etc/group:包含系统上的每个用户组的信息。
/etc/shadow:包含用户密码的加密形式,只有root用户可以读取。
七、Shell编程
1、概述
Linux Shell编程是在Linux或Unix系统下使用Shell(命令行解释器)编写脚本的过程,用于自动化任务和管理系统。
2、shell脚本格式
Shell脚本是文本文件,可以用文本编辑器(如vim、nano等)编写。它的基本格式包括:
1.Shebang行:通常在脚本文件的第一行指定解释器路径,告诉系统使用哪种Shell来执行脚本。
#!/bin/bash
2.注释:以 # 开头的行是注释,用于解释和描述脚本的目的、作者、修改记录等信息。
# This is a sample shell script
# Author: jn
3.命令:Shell脚本由一系列命令组成,每个命令占据一行或多行。
echo "Hello, World!"
4.变量:用于存储数据和临时结果。在Bash中,变量名通常是大写的。
NAME="Jn"
AGE=18
5.控制结构:包括条件语句(if-else)、循环结构(for、while)、case语句等,用于控制脚本的执行流程。
if [ "$AGE" -gt 18 ]; then
echo "$NAME is an adult."
else
echo "$NAME is a minor."
fi
6.函数:用于封装一组命令,可重复使用。
function greet {
echo "Hello, $1!"
}
greet "Alice"
7.输入输出:可以通过读取标准输入(键盘)、输出到标准输出(屏幕)、重定向文件等实现输入输出操作。
echo "Enter your name:"
read NAME
echo "Hello, $NAME!"
8.退出状态:脚本执行完毕后,通过 exit 命令可以返回一个退出状态码,通常0表示成功,非零值表示失败。
exit 0
3、运行方式
Shell脚本可以通过多种方式来运行,主要取决于脚本的执行权限以及在哪里调用它。以下是几种常见的运行方式:
1.直接执行:
chmod +x myscript.sh # 赋予执行权限
./myscript.sh # 直接执行脚本
2.使用Shell解释器执行:
bash myscript.sh # 使用bash解释器执行脚本
sh myscript.sh # 使用sh
4、数组
在Shell脚本中,数组是一种特殊的变量类型,用于存储多个值。Shell中支持的数组主要包括索引数组和关联数组两种类型。
访问数组元素:
# 访问单个元素
echo ${my_array[0]} # 输出:value1
# 输出整个数组
echo ${my_array[@]} # 输出:value1 value2 value3
# 获取数组长度
echo ${#my_array[@]} # 输出:3
遍历数组:
# 使用for循环遍历
for item in "${my_array[@]}"; do
echo $item
done
关联数组
关联数组(associative arrays)使用字符串作为索引而不是数字。
声明和初始化关联数组:
# 声明关联数组
declare -A my_assoc_array
# 初始化元素
my_assoc_array[key1]=value1
my_assoc_array[key2]=value2
my_assoc_array[key3]=value3
访问关联数组元素:
# 访问单个元素
echo ${my_assoc_array[key1]} # 输出:value1
# 输出整个数组
echo "${my_assoc_array[@]}" # 输出:value1 value2 value3
遍历关联数组:
# 使用for循环遍历
for key in "${!my_assoc_array[@]}"; do
echo "Key: $key, Value: ${my_assoc_array[$key]}"
done
5、for循环
1.数字序列的for循环:
for (( i=1; i<=5; i++ )); do
echo "Number: $i"
done
2.遍历数组元素的for循环:
my_array=(apple banana cherry)
for item in "${my_array[@]}"; do
echo "Fruit: $item"
done
3.使用seq生成序列的for循环:
for i in $(seq 1 5); do
echo "Number: $i"
done
4.嵌套for循环:
for (( i=1; i<=3; i++ )); do
echo "Outer loop iteration: $i"
for (( j=1; j<=2; j++ )); do
echo " Inner loop iteration: $j"
done
done
6、if分支语句
当需要根据条件执行不同的命令或代码块时,可以使用Shell脚本中的if分支语句。简单回答如下:
if [ condition ]; then
# Commands to execute if condition is true
fi
其中,condition 是一个逻辑表达式,如果评估为true,则执行then块中的命令。可以通过以下方式对条件进行比较:
1.字符串比较:[ "$var" == "value" ]
2.数字比较:[ "$num" -gt 10 ]
3.文件或目录检查:[ -f "$file" ] 或 [ -d "$dir" ]
4.多个条件组合:使用逻辑运算符 && 和 ||
例如:
if [ "$num" -gt 10 ]; then
echo "$num is greater than 10"
fi
这段代码会检查变量 num 是否大于10,如果是,则输出相应的消息。
7、case语句
格式如下:
case 值 in
比较值1)
等于比较值1时候执行的代码
;;
比较值2)
等于比较值2时候执行的代码
;;
....
esac
案例:
#!/bin/bash
case $1 in
a)
echo "第一个选项"
;;
b)
echo "第二个选项"
;;
c)
echo "第三个选项"
;;
esac
在你运行次脚本的时候,如果你输入sh 脚本名.后缀 a,就会在终端输出显示 第一个选项
八、Docker
1、docker概念以及特点
概念:
Docker是一种容器化技术,利用Linux操作系统的虚拟化功能,在单个主机上创建和管理轻量级的应用容器。每个容器包含应用程序及其依赖项,提供隔离、快速部署和跨环境的可移植性。
特点:
轻量级: Docker容器比传统虚拟机更轻量,因为它们共享主机操作系统内核。
快速部署: 容器可以快速启动,避免了传统虚拟机启动操作系统的开销。
可移植性: Docker容器在不同环境中可以一致运行,简化了应用程序的部署和维护。
隔离性: 每个容器有独立的文件系统和进程空间,与其他容器及主机隔离开来。
版本控制: Docker镜像可以通过版本控制管理,方便复用和分享。
2、安装docker
1、关闭防火墙,并设置开机不启动
systemctl disable --now filewalld
2、yum 包更新到最新
yum update
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
6、 查看docker版本,验证是否安装成功
docker -v
3、容器相关命令
1、查看容器
#查看正在运行的容器:
docker ps
#查看所有容器
docker ps -a
2、创建并启动容器:
docker run 参数
#创建守护式容器
docker run -id --name=c2 centos:7
3、 进入容器
docker exec -it c2 /bin/bash #进入容器
4、停止、启动、删除、查看信息、退出容器
#停止容器
docker stop 容器名称
#启动容器
docker start 容器名称
#删除容器
docker rm 容器名称
docker rm -f 容器名称 #强制删除容器
#查看容器信息
docker inspect 容器名称
#退出容器
exit
5、卸载docker
查看yum安装的docker文件包
yum list installed |grep docker
查看docker相关的rpm源文件
rpm -qa |grep docker
删除相关服务
yum -y remove xxx ##上述步骤得到的安装包以及相关服务代替xxx进行删除,直到查看不到就卸载了docker
九、Docker应用部署
1、MySql部署
a.搜索MySQL镜像:
docker search docker
b.拉取mysql镜像:
docker pull mysql:5.7
c.创建容器,设置端口映射、目录映射
docker run -d --name=c_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=dn mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
d.开启mysql容器
docker exec -it c_mysql/bin/bash
e.登录mysql
mysql -u root -p123456
f.退出mysql
quit
2、部署tomcat
a.查看tomcat镜像
docker search tomcat
b.拉取tomcat镜像
docker pull tomcat
c.创建容器,设置端口映射、目录映射
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat2 \
-p 8082:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
十、数据卷
1、数据卷的概念和作用
概念:数据卷是宿主机中的一个文件或目录
作用:数据持久化、数据可被多个容器使用和查看、外部机器和容器之间的间接通信
2、配置数据卷
#在/root目录下创建mysql目录用于存储mysql数据信息
#每行指令后面"\"表示换行
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 33306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v ~/conf1:/etc/mysql/conf2 \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
十一、DockerFile
1、docker镜像的本质
Docker镜像本质上是一个只读的模板,包含了用于运行应用程序的文件系统和相关配置。镜像中包含了应用程序的依赖、库文件、运行时环境以及启动指令等。
2、思考
Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G?
Docker的centos镜像只包含了运行基本centos系统所需的最小化文件系统和工具。通常这些镜像是经过优化的,只包含了运行容器所需的核心文件和工具,不包括GUI或其他不必要的组件。因此,它们相对较小,大约在几百MB左右。
传统的centos操作系统的ISO安装文件是一个完整的操作系统镜像,包含了GUI、开发工具、服务、文档等大量的软件包和组件。这些ISO文件通常几个GB,因为它们预装了大量的软件和库文件,适用于多种用途的服务器和桌面环境。
Docker 中一个tomcat镜像为什么有600MB,而一个tomcat安装包只有70多MB?
Docker的tomcat镜像不仅包含了Tomcat服务器本身,还可能包含了一些基础操作系统的依赖和一些配置文件。此外,为了方便使用和部署,镜像可能还包含了一些额外的工具或文件,如启动脚本、日志设置等。这些附加内容会增加镜像的大小。
传统的tomcat安装包仅包含了Tomcat服务器本身及其最基本的配置文件。它是为了在单独的操作系统上安装和运行Tomcat而设计的,不包含任何额外的依赖或工具。因此,其大小通常只有几十MB左右。
3、镜像转容器
#创建tomcat容器
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
# 进入tomcat容器
docker exec -it c_tomcat /bin/bash
#创建a.txt b.txt 在webapps/test下面创建一个文件夹
cd ~
touch a.txt b.txt
#容器转镜像
docker commit 容器ID sj_tomcat:1.0
#压缩镜像
docker save -o sj_tomcat.tar sj_tomcat:1.0
#删除原来镜像
docker rmi sj_tomcat:1.0
#从压缩文件加载镜像
docker load -i sj_tomcat.tar
#创建容器
docker run -it --name=new_tomcat sj_tomcat:1.0 /bin/bash
#进入容器查看内容
docker exec -it new_tomcat /bin/bash
4、dockerfile
Dockerfile是一个文本文件,用于定义和配置Docker镜像的内容和行为。它包含了一系列的指令和命令,这些指令告诉Docker引擎如何构建自动化镜像。Dockerfile的设计目的是简化Docker镜像的构建过程,使得用户可以通过一个脚本文件来自动化地创建镜像,而不需要手动执行一系列繁琐的步骤。
Dockerfile的基本结构和使用例子:
一个简单的Dockerfile通常包含以下几个基本部分:
# 指定基础镜像
FROM ubuntu:20.04
# 设置镜像的作者
LABEL maintainer="your_email@example.com"
# 执行一些操作,比如更新APT包管理工具
RUN apt-get update && apt-get install -y \
package1 \
package2 \
&& rm -rf /var/lib/apt/lists/*
# 设置环境变量
ENV ENV_VAR_NAME=value
# 暴露容器端口
EXPOSE 8080
# 定义容器启动时执行的命令
CMD ["executable","param1","param2"]
在上述例子中:
FROM 指令指定了基础镜像,这里使用了Ubuntu 20.04作为基础。
LABEL 指令设置了镜像的作者信息。
RUN 指令在镜像构建过程中执行了一些命令,例如更新APT包管理工具并安装软件包。
ENV 指令设置了环境变量。
EXPOSE 指令声明了容器运行时所监听的端口。
CMD 指令定义了容器启动时要执行的默认命令。
通过这些指令,用户可以灵活地定制和配置自己的Docker镜像,以满足特定的应用需求和运行环境。
案例部署 一
#在主目录下新建一个文件dockerfiles
mkdir ~/dockerfiles
#打开dockerfiles
cd ~/dockerfiles
#使用vim编译器新建一个centos_dockerfile并编辑
vim centos_dockerfile
在vim输入以下指令,:wq 保存退出
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum update -y
RUN yum install -y vim
WORKDIR /root
然后新建一个镜像:
docker build -f ./centos_dockerfile -t sj_centos:1 .
进入镜像,查看效果:
docker run -it --name=c2 sj_centos:1
进入镜像后,发现vim编辑器可正常使用,案例一部署完成
案例部署 二
1、通过xftp软件把springboot.jar文件拉入到/dockerfiles文件里面
2、
#进入dockerfiles
cd ~/dockerfiles
#vim新建一个springboot_dockerfile并编辑
vim springboot_dockerfile
3.在vim编辑器输入以下命令
FROM java:8
MAINTAINER sj <sj@163.com>
ADD springboot.jar app.jar
CMD ["java","-jar","app.jar"]
4.新建一个镜像
docker build -f ./springboot_dockerfile -t app .
5.创建启动容器
docker run -id -p 9000:8080 app
效果展示
持续更新中...... 感谢大家的观看