Linux操作系统

Linux操作系统

一、操作系统作用

  1. 部署测试环境
    1. 底层依赖环境
      1. JDK
      2. PHP
      3. Python
      4. NodeJS
      5. c语言的内置库文件
    2. 数据库依赖
      1. MySQL
      2. Oracle
      3. Redis
      4. mongDB
    3. 中间件
      1. 消息队列
      2. memcache
    4. 应用容器
      1. tomcat
      2. IIS
      3. weblogic
      4. nginx

二、本周的工作内容

  1. 部署JDK
  2. 部署MySQL
  3. 部署TOMCAT
  4. 部署woniuboss

三、准备工作

  1. 安装虚拟机,VMware workstation 16.1

  2. 安装Linux操作系统:centos7

    1. [root@localhost ~]#
      

      root:当前登录的用户

      localhost:当前登录的计算机终端ip地址或域名
      :当前用户所处的位置是用户的主目录,家目录

      # : 当前用户是超级管理员root,是$表示是普通用户

  3. 安装终端用来连接centos7? mobaxterm

    • ip :查看ip地址以及路由

      • ip [option] object

        • a :显示所有的ip信息

        • address :查ip地址有关的信息

        • route : 查询路由信息

          image-20220421140753669

    • 如果没有inet这一项,那么问题是什么? 一般来讲,虚拟网卡没有启动

      • vi : Linux用于编辑和查看文件的命令,类似于记事本。
      • 用法
        • vi 文件名 : 如果文件名存在,就是打开文件,如果文件名不存在就是新建文件。
        • 网卡的配置文件位置: /etc/sysconfig/network-scrips/ifcfg-eth0
        • 路径:定位文件或者目录的时候需要目录的排列顺序。这个的一个/代表一层。
          • 第一个/被称为根目录。因为Linux是一个文件操作系统。DOS、windows是磁盘操作系统。
            • 文件操作系统:操作系统把计算机控制所有的对象都视为一个文件。
          • 相对路径:从当前位置进行访问的路径。 ./ 当前目录, …/ 代表当前目录的上一级
          • 绝对路径:从根目录开始路径。使用绝对路径,在任何位置都可以访问的文件。
        • vi /etc/sysconfig/network-scripts/ifcfg-eth0
        • image-20220421142326392
        • vi的概念和用法
          • 模式
            • 命令模式:只能输入命令,不能编辑文件
              • 在该模式下使用 i、I、o、O、a、A
              • i :当前光标位置后面插入字符
              • I:当前光标位置的行首插入
              • o:当前光标的下一行新增空行
              • O:当前光标的上一行新增空行
              • a:当前光标位置的后面追加
              • A:当前光标位置的前面追加
            • 编辑模式:只能编辑不能输入命令
              • ctrl +c :切换命令模式
              • esc :切换命令模式
            • 末行模式:在命令模式下的最底下一行,来输入命令使用
              • 在命令模式下输入冒号,进入到末行模式
          • 常用的操作
            • 保存退出
              • :w 写入文件不退出
              • :wq 写入文件并退出
              • :q 直接退出,如果文件发生变化,则无法退出
              • :q! 强制退出不保存
              • :wq! 强制写入退出
            • 快速位移
              • G:直接到文件最后一行的开始处
              • gg: 回到文件的第一行的开始处
              • $ : 跳到当前行的尾部
              • ^ : 跳到当前行的开始处
              • } : 跳到段落的结尾
              • { : 跳到段落的开始
              • :set nu 显示行号
              • :n 直接到达第n行
            • 常用文本操作
              • dd:剪切当前行
              • p:当前行的下面粘贴
              • P:当前行的上面粘贴
              • yy:复制当前行
            • 查找和替换
              • /keyword 查找文本中keyword,使用n跳到下一个,N跳到上一个
              • :%s/old/new/g 把文本中所有的old替换为new,g的作用表示全文,缺少g只替换当前行的第一个
              • :m,ns/old/new/g 把m行到n的old替换为new
            • 撤销
              • u 撤销历史操作
        • 修改网络之后,必须重启网络服务
          • systemctl 系统控制面板
            • 查看服务状态: systemctl status 服务名(比如:network网络服务,防火墙firewalld,mysqld)
            • 启动服务: systemctl start 服务名
            • 停止服务: systemctl stop 服务名
            • 重启服务: systemctl restart 服务名
            • 设置服务开机启动: systemctl enable 服务名
            • 禁止服务开机启动: systemctl disable 服务名
            • 重启服务器: reboot
            • 关闭服务器: poweroff
          • 重启网络服务: systemctl restart network

四、安装JDK

  1. 准备工作

    1. 常用命令
      • 目录切换:cd 路径
        • cd ~ :回到当前用户的主目录下面
      • pwd :显示当前位置的路径
      • ls(list):显示当前路径下的内容
        • ls -l : 以详情列表的形式显示当前目录下的内容,如果加路径,显示路径下的内容,简写为 ll
        • ls -a : 显示目录下面的所有文件,包括隐藏文件。
        • image-20220421161158783
  2. 安装JDK的步骤

    1. 去网上下周jdk的tar包

      1. 百度一下jdk的tar包
    2. 上传到Linux指定目录

      1. 安装一个上传下载工具 lrzsz ; 推荐:secureCRT里面使用

        1. yum命令: 在线安装软件
        2. 语法: yum -y install 软件包名字 软件包名字
          • -y : 在安装过程会产生一些提示,确认是否继续安装,-y默认选择yes
          • 软件包的名字不是安装后使用的程序名
      2. scp命令: scp 文件位置 用户名@remotehost:/目标位置

        • 该命令执行的时候需要相应用户的密码

        • PS D:\humh\toolss> scp   jdk-8u231-linux-x64.tar.gz    root@172.18.169.193:/mnt
          The authenticity of host '172.18.169.193 (172.18.169.193)' can't be established.
          ECDSA key fingerprint is SHA256:t2XlGN8Lx2+QGEbPh86IsIfrW4phN48tNcIABcpf//Y.
          Are you sure you want to continue connecting (yes/no/[fingerprint])?
          Please type 'yes', 'no' or the fingerprint:
          Please type 'yes', 'no' or the fingerprint:
          Please type 'yes', 'no' or the fingerprint:
          Warning: Permanently added '172.18.169.193' (ECDSA) to the list of known hosts.
          root@172.18.169.193's password:
          jdk-8u231-linux-x64.tar.gz
          
      3. 直接通过终端把文件拖拽上传

    3. 将jdk-xxx.tar.gz解压到指定的目录下面

      1. 解压程序包相关知识

        1. 压缩文件的基本原理
          1. 磁盘存储的时候是使用0101方式。加入使用int类型,分配4个字节,实际使用可能只有1个字节,其他的三个字节使用的00来占位。把用来占位00去掉,把去掉的操作内容记录下来。目的是解压的时候根据这个步骤把扣掉00填回去。
        2. 压缩的标准
          1. 效率:xz>bzip>gzip
          2. 速度: gzip>bzip>xz
        3. 相关的命令
          1. gzip [-cdrvl] 文件
            1. -c:
            2. -d:
            3. -r:
            4. -v:
            5. -l:
            6. -数字:
          2. tar: 归档文件
            1. 归档: tar -zcvf xxx.tar.gz 源 …
            2. 解压: tar -zxvf xxxx.tar.gz [-C 目标路径]
              1. -z:
              2. -c:
              3. -x:
              4. -v:
              5. -f:
              6. -C 目标路径:
        4. 重定向
          1. 作用:把上一个命令的返回结果输出到指定的文件中,如果文件不存在,自动创建。
          2. 两种模式:
            1. > : 覆盖模式,理解为先清空文件,再写入结果。
            2. >> : 追加模式,理解为在原来文件的最后面追加
          3. 语法: 命令 > | >> 文件名
      2. 解压jdk-xxx.tar.gz 到 /opt目录下面

        1. tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt
          
        2. **【可选步骤】**重命名jdk的目录名,目的为了操作过程中好记

          1. mv  jdk-1.8.0_231  jdk1.8
            
          2. mv(move): 把文件移动到指定位置,同时也可以实现改名,在同一个目录下面移动,或者移动到其他目录的时候没有同名的目录。

            mkdir  demo demo1 # 创建目录,这里同时创建2个
            mv  demo  demo2 # 同级目录移动等于改名
            mv demo2  demo1/demo # 移动其他目录并改名
            
    4. 配置系统的环境变量

      1. jdk的目录结构解释:

        image-20220422110058952

        image-20220422110238039

      2. 环境变量相关概念

        1. 环境变量:操作系统为支撑程序的运行提供变量
          1. 用户变量:只有当前用户能够使用
            1. 位置: 主目录下面的 .bash_profile
          2. 系统变量:所有用户都可以使用,全局变量
            1. 位置: /etc/profile
        2. 如何定义变量
          1. 命令: export 变量名=值
            • 该命令可以用在命令行,也可以在配置文件中使用
        3. 为什么要定义环境变量?
          1. 使用命令启动程序的时候,使用命令的位置不一定在安装程序的目录下面,操作系统首先回去环境变量中查找定位
          2. PATH:路径,所有可执行程序存放的路径,这个路径需要手工或者程序在安装的时候去添加
          3. echo $PATH :该命令用于输出变量的值;用于检查某个环境变量是否正确配置。
      3. 配置JAVA环境变量

        1. 需要让操作系统知道jdk的bin目录的位置

        2. 配置java程序启动和运行依赖的库文件dt.jar,tools.jar

        3. export JAVA_HOME=/opt/jdk1.8
          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          export PATH=$PATH:$JAVA_HOME/bin
          
        4. 使用: source /etc/profile 激活环境变量

    5. 检查安装效果

      1. 检查配置结果

      2. [root@localhost ~]# java -version
        java version "1.8.0_231"
        Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
        Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
        

五、部署MySQL数据库服务

1、下载mysql5.7-xxx.tar.gz

  • https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

2、上传到Linux的指定目录

  • scp  mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz  root@ip:/mnt
    

3、解压到Linux指定目录

  • tar  -zxvf   mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz  -C  /opt
    
  • 重命名目录

  • 
    

4、修改mysql的目录权限

  • Linux系统的权限相关概念

    • Linux有三种角色,三种权限

      • 三种角色
        • 所有者,owner: 默认是文件或目录的创建者
        • 所有者同组用户,group: 所有者同组的用户
        • 其他人,other:和所有者不同组的用户
      • 三种权限
        • r(read): 读
        • w(write): 写入
        • x(excute): 执行
    • 查看文件或目录的权限

      • ls -l [文件名/目录名]

        • drwxr-xr-x. 2 10 143     4096 105 2019 bin
          -r--r--r--. 1 10 143     3244 105 2019 COPYRIGHT
          
        • 列表最前面的10个字符就是代表了文件或目录的权限,比如:drwxr-xr-x

      • 权限列表的解读: 10个字符分为四组

        • 第一组:第一个字符,d代表目录,- 代表文件,l 代表软连接
        • 第二组:第一个rwx字符,代表的是owner的权限
        • 第三组:第二个rwx字符,代表的是group的权限
        • 第四组:最后三个字符,代表的是other的权限
        • 在第二组,第三组,第四组中使用-表示去掉该权限。
    • 修改权限

      • 命令: chmod [-R] 权限列表 文件名或目录

        • -R :递归修改 ,主要应用与目录的权限修改

        • 权限列表

          • 字母+权限

            • # 文件demo.txt 的权限是用户可以读写,同组可以读写,其他人可读
              chmod   u+rw,g+rw,o+r   demo.txt
              
            • # 文件demo.txt用户可以读写执行,同组和其他用户只能读
              chmod  u+x,g-w  demo.txt
              
          • 数字表示权限

            • rwx 对于数字和位置 421,每个角色的权限把421加起来,如果-等于0. 最后把三个角色的权限数字挨着放

            • # 文件demo.txt用户具有读写执行权,同组可读写,其他人可读,用数字表达权限是多少?
              #764
              chmod  764  demo.txt
              
              
    • 修改文件或目录的所属用户和组

      • 组: Linux为了方便管理用户使用组的方式,group

      • 查看用户组: cat /etc/group ;查看用户: cat /etc/passwd

        • cat /etc/group
          root:x:0:
          bin:x:1:
          #组的信息使用冒号间隔,一共分成四个部分
          #第一个部分是组名,第二部分是密码,第三部分是组的编号,第四部分是附属成员
          cat /etc/passwd
          root:x:0:0:root:/root:/bin/bash
          bin:x:1:1:bin:/bin:/sbin/nologin
          # 用户信息使用冒号分成7个部分
          # 第一部分是用户名,第二部分密码,第三部分用户编号,第四部分组的编号,第五部分组名,第六部分主目录,第七部分是用户使用解析脚本解析器名字
          
          
      • 修改文件和目录的所有者的命令

        • chown [-R] username[:groupname] 文件名或目录名

        • # 修改mysql57的所有者和组为root
          chown -R root:root  mysql57
          

5、修改MySQL的配置文件,/etc/my.cnf

# mysql的服务器节点
[mysqld]
# mysql主目录
basedir=/opt/mysql57
# mysql数据库文件存放的目录
datadir=/opt/mysql57/data
# mysql服务器提供的连接
socket=/tmp/mysql.sock
# mysql的服务器监听端口
port=3306
symbolic-links=0

# mysql服务安全启动模式
[mysqld_safe]
# mysql错误日志位置
log-error=/opt/mysql57/logs/mariadb.log
# mysql服务器进程信息文件位置
pid-file=/opt/mysql57/mariadb.pid

!includedir /etc/my.cnf.d

  • 创建配置文件中涉及目录

    • 目录相关操作的命令

      • 创建目录:

        • mkdir 目录名 目录名 :在同一个目录下面连续创建多个目录。

        • mkidr -p 目录名/目录名/… :创建多层目录,-p 的作用是自动创建路径中不存在的目录

        •  mkdir -p dir/dir1/dir2/dir3
           mkdir  dir1  dir2  dir3
          
      • 删除目录

        • 删除空目录: rmdir 目录名,作用是删除空目录。
        • 删除非空目录: rm -rf 目录名|文件名
          • -r :递归删除
          • -f :强制删除,缺省的时候,删除操作会提示用户,得到授权之后才能执行删除。
          • rm -rf / : 删库走人
    • mkdir  /opt/mysql57/data  # 创建数据库文件的目录
      mkdir  /opt/mysql57/logs # 创建日志文件的目录
      

6、初始化MySQL数据

  • 修改环境变量,把mysql的主目录和bin加到环境变量中

  • export MYSQL_HOME=/opt/mysql57
    export PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin
    
    

    source /etc/profile

    [root@localhost logs]# mysql -V
    mysql  Ver 14.14 Distrib 5.7.31, for linux-glibc2.12 (x86_64) using  EditLine wrapper
    
    
  • 初始化数据库

  • mysqld  --defaults-file=/etc/my.cnf   --initialize-insecure  --user=root
    
    • –defaults-file : 设置mysql服务启动所需的配置文件

    • –initialize: 初始化数据,同时生成一个临时密码 ,–initialize-insecure :初始化之后不设密码

    • –user : 指定初始化操作的Linux用户

    • [root@localhost logs]# mysqld  --defaults-file=/etc/my.cnf   --initialize-insecure  --user=root
      2022-04-22T09:32:31.966689Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
      2022-04-22T09:32:32.206050Z 0 [Warning] InnoDB: New log files created, LSN=45790
      2022-04-22T09:32:32.286954Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
      2022-04-22T09:32:32.308225Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 22ab7e8a-c21f-11ec-9cc0-00155d0c5700.
      2022-04-22T09:32:32.317292Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
      2022-04-22T09:32:33.547579Z 0 [Warning] CA certificate ca.pem is self signed.
      2022-04-22T09:32:34.292050Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
      
      

7、启动MySQL服务

  • [root@localhost logs]# mysqld  --defaults-file=/etc/my.cnf  --user=root &
    
  • 启动成功的显示

  • 2022-04-22T09:34:58.522344Z 0 [Note] Event Scheduler: Loaded 0 events
    2022-04-22T09:34:58.522754Z 0 [Note] mysqld: ready for connections.
    Version: '5.7.31'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
    
  • 检查启动端口监听状态

    • 命令: netstat -anlp|grep 3306

    • [root@localhost logs]# netstat -anlp|grep 3306
      tcp6       0      0 :::3306                 :::*                    LISTEN      17928/mysqld
      
      • -a : 表示所有的端口
      • -n :以数字的方式显示端口信息
      • -l :显示正在监听状态的端口
      • -p :显示监听端口的程序以及PID(进程编号)
    • | : 管道符

      • 什么是管道? 把上一个命令的输出作为下一个命令的输入。
    • grep :作用是从文件中查询是否存在某个字符串,比如这里的3306,该处表示从上一个命令的返回中查找是否存在3306.

8、开启MySQL远处访问权限

  • mysql> grant all on *.* to 'root'@'%' identified by '123321' with grant option;
    mysql>flush privileges;
    

9、通过客户端去连接和使用MySQL

六、部署tomcat

1、下载tomcat8.5的tar

2、上传Linux指定目录

3、解压到指定的目录

  • 目录结构

    • image-20220424095400497
  • 常用的文件

    • 启停类: bin目录下面

      • 前端启动: ./catalina.sh run ,启动之后可以直接看到运行日志,阻塞式。关闭终端会导致tomcat服务停止。
        • 用途:检查部署是否成功使用。
      • 后端启动:./startup.sh ,启动之后进入后台运行,看不到运行日志。关闭终端对tomcat服务没有影响。
        • 建议在调试稳定之后,使用后台启动。
      • 停止tomcat: ./shutdown.sh ,如果8005端口被占用,该脚本就无效。
    • 配置类: conf下面: server.xml

      •  <Connector port="8080" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
        # port 是设置tomcat的启动端口,如果出现端口冲突, 就在这里修改
         <Host name="localhost"  appBase="webapps"
                    unpackWARs="true" autoDeploy="true">
                    
        # name代表是从浏览器访问tomcat的时候,需要的主机地址,appBase指向存放web应用的目录,这个可以修改。
        # unpackWARs为true表示tomcat自动解压war包。 autoDeploy为true表示tomcat会自动发布web应用
        
        
    • 日志类: logs下面

      • tomcat的运行日志的名字:
        • catalina.yyyy-mm-dd.log
        • catalina.out # tomcat的运行应用的日志,定位缺陷的时候用的较多

4、检查tomcat是否可以正常启动

  • 出现错误如下:

    • 地址已在使用 (Bind failed)
      
      • 表示tomcat的端口被占用了

      • 解决办法: 强制结束进程

        • 命令:kill
          • kill PID :正常结束进程,通过PID
          • kill -9 PID : 强制结束进程,通过PID
      • 查看进程是否正在运行

        • 命令 : ps(processor status)

        • 语法: ps -ef [aux ] |grep 程序名(部分程序名)

          • [root@localhost bin]# ps aux|grep mysql
            root     17928  0.1 12.8 1589132 233880 ?      Sl   4月23   2:00 mysqld --defaults-file=/etc/my.cnf --user=root
            root     19966  0.0  0.0 112824   980 pts/0    S+   14:39   0:00 grep --color=auto mysql
            [root@localhost bin]# ps -ef |grep mysql
            root     17928     1  0 4月23 ?       00:02:00 mysqld --defaults-file=/etc/my.cnf --user=root
            root     19968 19574  0 14:41 pts/0    00:00:00 grep --color=auto mysql
            
            
  • 在浏览器中输入: ip:8080

  • image-20220424104944574

七、部署web应用

1、上传web应用的war包文件到Linux的指定目录,推荐直达tomcat的webapps目录

  • scp  woniusales.war  root@172.18.169.193:/opt/tomcat8.5/webapps
    
  • image-20220424142539629

  • 拷贝文件或目录

    • 命令:cp(copy):

      • 语法: cp [-r] 源 目标

      • -r :递归拷贝,拷贝单个文件不需要

      • 拷贝可以修改文件名字,目标目录下如果没有文件名或目录名,等于是复制加改名

      • cp 	/mnt/woniusales.war 	/opt/tomcat8.5/webapps/
        

2、启动tomcat,使其自动解压war文件

3、配置web的数据库,以备web应用访问

4、去webapps里面找到web应用的数据库连接配置文件,修改配置项,使其能够正确定位数据库的位置

  • 不同的web应用它的数据库连接文件名可能不一样 【重点】

    • 企业中,开发工程师发布的安装包里面会带上一个配置说明文档。照着这个文档去做,如果出现问题,在排除自己操作失误的情况下,可以确定为配置错误。这个也称为安装测试。
  • woniusales的数据库连接文件的位置

    • woniusales/WEB-INF/class/db.properties

    • db_url=jdbc:mysql://localhost:3306/woniusales?useUnicode=true&characterEncoding=utf8 
      db_username=root
      db_password=
      db_driver=com.mysql.jdbc.Driver
      

      db_url: 数据库的连接地址,localhost这个是tomcat去访问的数据库的主机地址,3306是数据库监听的端口,woniusales是我们创建的数据库的名字。

5、重启tomcat,检测配置是否完成

  • 在浏览器中输入:ip:8080/woniusales
  • image-20220424113654431

八、命令拾遗

1、文件创建

  • touch 文件名: 创建一个空文件
  • 使用重定向创建: man ls > ls.txt
  • vi 文件名

2、文件查看

  • vi 文件名;
  • cat 文件名:查看文件的全部内容,如果文件行数多的话,不方便查看
  • more 文件名:分屏查看,每次显示一屏
  • less 文件名: 分屏查看
  • tail [-f,-n 数字] 文件名
    • -f : 阻塞式动态查看文件内容
    • -n 数字: 查看文件结尾指定行数,比如: tail -n 100 文件名 ,查看文件的最后的100行,缺省最后10行
  • head -n 数字 文件名:缺省-n,显示前面10行

3、链接文件

  • 硬链接:一个文件被设置为硬链接,就会形成互相之间联动的两个单独文件

    • 语法: ln -d 源文件 连接文件名

    • [root@localhost dir]# ln -d demo.txt ../dir0/demo
      [root@localhost dir]# ls -l ../dir0/demo
      -rw-r--r--. 2 root root 0 424 17:31 ../dir0/demo
      [root@localhost dir]# vi demo.txt
      [root@localhost dir]# ls -l ../dir0/demo
      -rw-r--r--. 2 root root 5 424 17:33 ../dir0/demo
      [root@localhost dir]# cat ../dir0/demo
      1234
      [root@localhost dir]# vi ../dir0/demo
      [root@localhost dir]# cat demo.txt
      1234
      456
      
      
  • 软链接:创建一个标识性文件,用来指向原文件,可以理解快捷方式

    • 语法: ln -s 源文件 连接文件

    • [root@localhost dir]# ln -s demo.txt  ../dir0/demos
      [root@localhost dir]# ll ../dir0/
      总用量 4
      -rw-r--r--. 2 root root 9 424 17:33 demo
      lrwxrwxrwx. 1 root root 8 424 17:36 demos -> demo.txt
      [root@localhost dir]# ll
      总用量 4
      -rw-r--r--. 2 root root 9 424 17:33 demo.txt
      [root@localhost dir]# rm -f demo.txt
      [root@localhost dir]# ll ../dir0/
      总用量 4
      -rw-r--r--. 1 root root 9 424 17:33 demo
      lrwxrwxrwx. 1 root root 8 424 17:36 demos -> demo.txt
      [root@localhost dir]# cat ../dir0/demo
      1234
      456
      [root@localhost dir]# cat ../dir0/demos
      cat: ../dir0/demos: 没有那个文件或目录
      
      
    • 特性:

      • 硬链接文件是独立同时和源文件保持联动,删除任意一方,不影响另外的文件。修改数据是联动的。
      • 软件链接文件类似win快捷方式,只要删除源文件,软链接就失效。修改源文件的内容,不影响软链接。

九、用户管理

    • 查看组
      • cat /etc/group
    • 添加组
      • groupadd 组名
    • 修改组
      • groupmod -n new old
    • 删除组
      • groupdel 组名
  • 用户
    • 新增用户
      • useradd username:买一送二
      • useradd -g 主组 -G 附加组
    • 查询用户
      • cat /etc/passwd
    • 修改用户
      • usermod -g 组名
      • usermod -aG 附加组
    • 删除用户
      • userdel 用户名
      • userdel -f 强制删除用户
      • userdel -rf 删除用户和主组,如果主组里面还有其他用户,该命令会失败

十、挂载

  • 什么是挂载?

    • 是通过文件去映射外部设备,从而可以通过这个文件去访问外部设备的数据
  • 命令

    • mount  [option]      需要挂载的资源 映射文件
      
  • 挂载共享目录

    • mount -t cifs  -o usernmae=Everyone  //ip/share  /mnt/wintools
      

十一、非常有用的命令

  • 命令的别名设置:

    • alias 别名=‘命令’

      • 临时生效
    • 永久生效,修改配置文件,在 主目录的.bash_profile里面去增加

    • alias cls='clear'
      alias hh='history'
      alias ps='ps -ef |grep '
      alias ns='netstat -anlp|grep '
      
  • 查看历史命令

    • history

      •   300  vi .bash_profile
          301  source .bash_profile
          302  cls
          303  hh
          304  ps mysqld
          305  ns 3306
          306  cat .bash_profile
          307  hh
          308  psg mysqld
          309  cat .bash_profile
          310  hh
          
        
      • 第一列为命令编号,第二列是命令的详情

    • !命令编号 : 重复执行指定编号的命令

    • !命令部分字符 : 重复执行最近匹配的命令行

    • 储存命令历史的文件在~/bash_history中。history配置文件为/etc/profile,默认记录1000行,如果修改行数则修改参数HISTSIZE=1000 即可。【重点】

  • 进程查看命令

    • top
    • ps : 当需要确定我们的进程是否启动时。
  • 结束进程的命令: kill -数字 PID

    • 1 (HUP):重新加载进程。
    • 9 (KILL):杀死一个进程。
    • 15 (TERM):正常停止一个进程。
  • 查看端口占用的命令:netstat -anlp|grep port

    • 什么时候用呢?
      • 当我们需要启动某个服务,出现地址被使用的时候
      • 我们去连接某个服务,出现连接不上或连接被拒绝时候

十二、yum的镜像源修改

  1. 安装wget: yum -y install wget

  2. cd /etc/yum.repos.d;备份CentOS-Base.repo

  3. 执行下载aliyun的镜像源命令: 注意版本

    1. wget -O /etc/yum.repos.d/CentOS-Base.repo   https://mirrors.aliyun.com/repo/Centos-7.repo
      
  4. 重新创建yum的缓存

    1. yum  clean  all
      yum  makecache  fast
      

十二、docker技术

  • 概念

    • 什么是docker技术?

      • 虚拟化技术,实现的是应用级的隔离,而不是物理级的隔离
    • 概念图

      image-20220425114402939

    • docker技术和虚拟机技术的相比的优势

      1. 更高效的利用系统资源。
      2. 更快速的启动。
      3. 提供一致的运行环境。
      4. 完成持续交付和部署。
      5. 进行更轻松的迁移。
    • docker技术的核心概念

      • 镜像:把目标系统的特征进行汇总和重构形成的一个文件,依赖docker引擎。
        • 开发人员使用docker引擎提供的命令创建的
      • 仓库:保存镜像文件的地方
        • 全局仓库:docker公司自己维护
        • 私有仓库:企业自己创建的
      • 容器:依据镜像文件使用docker引擎恢复成可运行的系统或应用程序。
        • 用户根据实际需要,使用相关镜像文件启动运行的
  • docker的安装步骤

    • 先安装依赖环境

      • yum install -y yum-utils device-mapper-persistent-data lvm2
        
    • 再添加docker-ce的镜像源

      •  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
         yum makecache fast
        
    • 安装docker

      • yum -y install  docker-ce
        
    • 检查安装是否成功

      • systemctl start  docker 
        docker info
        
      • 运行结果如下

      •  Name: localhost.localdomain
         ID: TWR2:NLDM:3QFN:IHRF:UWGN:IW4R:L3DC:B3J3:JYJG:GXDF:2YGP:Q7LM
         Docker Root Dir: /var/lib/docker
         Debug Mode: false
         Registry: https://index.docker.io/v1/
         Labels:
         Experimental: false
         Insecure Registries:
          127.0.0.0/8
         Live Restore Enabled: false
        
    • 优化docker的镜像

      • vi /etc/docker/daemon.json

      •  {
                "registry-mirrors": [
                "https://kfwkfulq.mirror.aliyuncs.com",
                "https://2lqq34jg.mirror.aliyuncs.com",
                "https://pee6w651.mirror.aliyuncs.com",
                "https://registry.docker-cn.com",
                "http://hub-mirror.c.163.com"
                ],
                "dns": ["8.8.8.8","8.8.4.4"]
                }
          
        
    • 重载daemon文件

      • systemctl   daemon-reload
        
    • 重启docker服务

      • systemctl restart  docker
        systemctl  enable docker
        
    • 查看新的镜像源是否生效

      • docker info
        
      • 运行结果如下:

      • Registry Mirrors:
          https://kfwkfulq.mirror.aliyuncs.com/
          https://2lqq34jg.mirror.aliyuncs.com/
          https://pee6w651.mirror.aliyuncs.com/
          https://registry.docker-cn.com/
          http://hub-mirror.c.163.com/
         Live Restore Enabled: false
        
  • 使用docker安装部署应用

    • 部署mysql

      • 下载MySQL镜像

        • docker search  mysql:5.7
          docker  pull  idyci/mysql
          
      • 启动MySQL容器

        • docker  run  -d  --name mysql57  -p 3308:3306  --restart=always  --privileged=true -e MYSQL_ROOT_PASSWORD='123321'   idyci/mysql
          
          • -d: 后台启动 , -it :前端启动,送一个命令行界面
          • –name : 容器名,自定义
          • -p 宿主端口:容器端口
          • –restart=always : 伴随docker一起启动
          • –privileged=true : 进入容器使用root权限
          • -e 设置项 :设置环境变量
          • 镜像文件名 : 一般放到命令的最后,要和本地镜像仓库的名字,这里可以镜像id
        • 检查容器运行状态

          • docker  ps  -a  # -a 显示所有状态的容器, 缺省的话只能看到运行中的容器 
            
          • 显示结果如下;

          • [root@localhost yum.repos.d]# docker ps
            CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
            93f9e059ff41   6c3949ffb5c2   "docker-entrypoint.s…"   About a minute ago   Up About a minute   33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql57
            [root@localhost yum.repos.d]# ns 3308
            tcp        0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      21503/docker-proxy
            tcp6       0      0 :::3308                 :::*                    LISTEN      21508/docker-proxy
            
  • 部署tomcat

    • 拉取tomcat的镜像文件

      • docker   search   tomcat:8.5
        docker  pull 	镜像名
        
    • 运行tomcat的容器

      • docker  run  -d  --name  tomcat8  -p 8090:8080  -v 宿主目录:容器目录 [-v 宿主目录:容器目录 ]   镜像名 
        
        • -v 宿主目录:容器目录:挂载目录,这里的作用就是把tomcat的webapps挂载到宿主目录,方便我们在宿主目录操作它。
      • 查看容器的运行日志

        • docker  logs   容器名
          
      • 删除容器的命令

        • docker   rm  [-f]  容器名 		# -f 强制删除容器,即便容器是运行状态
          
      • 删除镜像文件

        • docker  rmi  镜像名 
          
        • image-20220425162443835

    • devops:解决分布式发布的一种思想

      • 流水线自动化解决研发到发布的问题
      • 底层依赖就是docker容器技术
    • docker的常用命令

      • 镜像相关
        • 搜索镜像文件: docker search 镜像文件名:版本
        • 拉取: docker pull 镜像文件名|ID
        • 删除镜像: docker rmi 镜像文件名
        • 提交镜像文件 : docker commit -p -a “作者名” -m “镜像的简洁” 容器名|ID 镜像名:tag
        • 导出本地镜像文件: docker save -o 路径/xxxx.tar 镜像文件
          • 作用:将本地的镜像文件导出Linux目录下,用于备份或者复制
        • 导入tar文件到本地的镜像库: docker load --input xxxx.tar
      • 容器相关
        • 把容器导出成tar包 : docker export -o xxxx.tar 容器名
        • 把上一步tar包导入成镜像: docker import xxxx.tar username/程序名:tag
        • 把镜像文件上传到仓库: docker push 镜像文件名
          • 前提是docker hub的账户
        • 进入容器的内部: docker exec -it 容器名 /bin/bash
        • 在宿主和容器之间拷贝文件:
          • docker cp 宿主目录 容器id|容器名:容器目录

附加

1、解决Linux系统中所有命令无法使用的问题:
  • export PATH=/usr/sbin:/usr/bin:/usr/local/bin:/bin
  • vi /etc/profile
  • 仔细检查文件中哪里被修改错了
2、1>/dev/null 2>&1
  - ```
    docker   rm  [-f]  容器名 		# -f 强制删除容器,即便容器是运行状态
    ```

- 删除镜像文件

  - ```
    docker  rmi  镜像名 
    ```

  - [外链图片转存中...(img-hfAR66KV-1669104745891)]
  • devops:解决分布式发布的一种思想

    • 流水线自动化解决研发到发布的问题
    • 底层依赖就是docker容器技术
  • docker的常用命令

    • 镜像相关
      • 搜索镜像文件: docker search 镜像文件名:版本
      • 拉取: docker pull 镜像文件名|ID
      • 删除镜像: docker rmi 镜像文件名
      • 提交镜像文件 : docker commit -p -a “作者名” -m “镜像的简洁” 容器名|ID 镜像名:tag
      • 导出本地镜像文件: docker save -o 路径/xxxx.tar 镜像文件
        • 作用:将本地的镜像文件导出Linux目录下,用于备份或者复制
      • 导入tar文件到本地的镜像库: docker load --input xxxx.tar
    • 容器相关
      • 把容器导出成tar包 : docker export -o xxxx.tar 容器名
      • 把上一步tar包导入成镜像: docker import xxxx.tar username/程序名:tag
      • 把镜像文件上传到仓库: docker push 镜像文件名
        • 前提是docker hub的账户
      • 进入容器的内部: docker exec -it 容器名 /bin/bash
      • 在宿主和容器之间拷贝文件:
        • docker cp 宿主目录 容器id|容器名:容器目录

附加

1、解决Linux系统中所有命令无法使用的问题:
  • export PATH=/usr/sbin:/usr/bin:/usr/local/bin:/bin
  • vi /etc/profile
  • 仔细检查文件中哪里被修改错了
2、1>/dev/null 2>&1

1>/dev/null 2>&1的解释就是将stdout标准输出重定向到空设备文件/dev/null ,同时将stderr标准错误输出的重定向跟stdout标准输出重定向一致,也输出到空设备文件/dev/null。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值