第五天 - 用户与环境变量-yum-tomcat-shell编程基础

第五天 - 用户与环境变量-yum-tomcat-shell编程基础

一、用户切换与环境变量

  • 环境变量:/etc/profile 所有用户均可读取
  • 用户变量:/home/$USER/.bash_profile
  • su:切换用户,当不带用户名时,切换至root用户
用户环境变量演示

背景:bigdata用户安装了jdk并且配置了用户变量,而root未配置jdk环境变量

  • 切换用户时带横杠‘-’代表完全切换(读取相关配置,即用户变量配置文件),能够使用目标用户下配置的命令
    1. root用户:su - bigdata切换至bigdata用户,此时以bigdata权限执行jdk中的命令,并且以bigdata用户的环境变量为准
    2. bigdata用户:su - root 切换至root用户,此时无法使用root用户执行jdk中的命令,以root用户的环境变量为准,而root用户未配置jdk环境变量
  • 切换用户时无横杠代表使用目标用户的权限来执行命令,以原用户环境变量为准
    1. bigdata用户: su root切换至root用户,可以使用root用户执行jdk中的命令,此时以bigdata用户环境变量为准
    2. root用户su bigdata切换至bigdata用户,无法使用jdk中的命令,此时以root用户的环境变量为准

二、rpm安装mysql

注意:使用rpm安装软件时需要使用root用户操作

  1. 查询系统中已安装的版本

    rpm -qa|grep MySQL

    rpm -qa|grep mysql

    在Linux系统中对大小写敏感,rpm安装包的命名是十分规范的,但是不排除某些包命名不规范的情况,所以查询时可以多尝试大小写不同的情况。

1535682909828

  1. 查询出一个与要安装版本不符的rpm包,此时需要卸载它

    rpm -e -nodeps mysql-libs-5.1.73-5.el6_6.x86_64

    扫描二维码关注公众号,回复: 3196838 查看本文章

    1535682970557

    卸载后再执行查询命令,此时就查不到了

    1535682980771

  2. 安装服务端

    • 使用Xftp上传安装包

    • 使用cd命令切换至上传的文件目录

    • 执行安装命令

      rpm -ivh MySQL-server-5.6.40-1.el6.x86_63.rpm

      -ivh 安装并且显示安装进度

      1535683041789

      安装过程中提示生成一个随机密码,路径在/root/.mysql_secret

      1535683183373

      提示首次连接mysql后使用SET PASSWORD命令修改密码

      1535683195848

      安装完服务端后再次使用rpm查询已安装的包,发现安装成功,多出了mysql的rpm包

1535683253699

  1. 安装客户端

    rpm -ivh MySQL-client-5.6.40-1.el6.x86_64.rpm

1535683889432

  1. 启动服务

    • 查看mysql服务状态

      service mysql status

      1535683961070

    • 启动服务

      service mysql start

      1535683980156

    • 再次查看mysql服务状态,启动成功

      1535684001685

  2. 启动mysql客户端

    • 查看mysql命令是否可用

      which mysql

      rpm安装方式安装软件包成功后,会自行将需要的命令、服务在系统中进行注册,无需用户编辑环境变量

      1535684059495

    • 根据安装时的提示,查看生成的随机密码

      cat /root/.mysql_secret

      1535683221670

    • 启动mysql客户端,输入上面查看的随机密码

      mysql -u root -p

      1535684088551

    • 启动成功后,根据安装时的提示修改密码

      SET PASSWORD = password(‘root’)

      本条命令将密码改成了root

      1535684157958

  3. Windows下使用navicat远程连接CentOS中的mysql

    连接mysql命令:

    mysql -u xxx -h xxx.xxx.xxx.xxx -p

    上面的命令中-h代表host,即主机名,后面跟上主机名或ip地址,如果是连接本机数据库,则省略这个参数

    mysql安装后默认开启了从本地连接数据库的权限

    1. 开启mysql库的远程连接

      服务区端口需要开启

      私有云 - 路由器/服务器,公有云 - 网络安全组

      使用navicat输入主机名、账号密码尝试连接,发现无法连接

      1535687179644

    2. mysql中使用命令打开远程访问权限

      grant all PRIVILEGES on *.* to ‘root’@’%’ IDENTIFIED by ‘root’ with GRANT OPTION;

      1535687464387

      flush PRIVILEGES;

      1535687486603

      1535687515431

      quit退出mysql客户端

    3. navicat中重新尝试连接,发现依旧无法连接,此时原因是CentOS的防火墙未关闭

      关闭防火墙有两种方式

      • 直接使用命令关闭

      service iptables stop

      • 使用CentOS中的setup工具进行关闭,步骤如下:

        1. 输入命令setup启动工具

      1535687595126

      1. 使用上下键选择到第二项:Firewall configuration,左右键选择Run Tool,回车键进入

      1535687621873

      1. 使用空格将Enabled前的*号去除

        1535687651120

      2. 左右键选择OK回车键确认

      1535687658982

      1. 警告信息,选择Yes,确认并退出

        ![1535687670101](https://day05-1253629415.cos.ap-guangzhou.myqcloud.com/1535687670101.png)
        
      2. 防火墙关闭完成,查看防火墙状态命令

        service iptables status

        1535687693347

      3. 此时navicat就能正常连接

      1535687739544

三、tomcat

安装tomcat
  1. 上传软件包至bigdata的家目录

  2. 解压

    tar -zxvf apache-tomcat-8.5.31.tar.gz

    1535695461247

  3. 进入tomcat解压目录下的bin目录

    1535695506964

  4. 启动

    ./startup.sh

    1535695526372

  5. 测试

    两种测试方法:

    • 在Windows下打开浏览器,访问sz01端口8080

    sz01:8080

    出现如下界面即可运行成功

    1535695570506

    • 使用命令查看当前运行进程,如果搜索到tomcat进程,即代表运行成功

      ps -ef|grep mysql

      ps -ef命令显示当前所有进程

      ps命令显示当前用户进程

      1535695827883

  6. 停止

    两种停止方法

    • 通过tomcat自带的可执行文件停止,在tomcat目录下bin目录中

      ./shutdown.sh

      1535695624968

    • 通过杀死tomcat进程停止

      在第5步中ps -ef|grep mysql查询到tomcat的进程由bigdata用户启动,进程号为7641

      通过命令杀死tomcat进程

      kill -9 7641

      1535695955951

      此时再通过命令查看,已经没有tomcat进程,并且也不能访问sz01:8080

      1535695983042

tomcat配置
  1. 修改端口为80

    修改端口前先将tomcat关闭

    修改tomcat目录conf目录下的server.xml

    在第69行,将port=”8080”改为port=“80”

1535697153496

  1. 修改成80端口后,启动成功,但是无法访问页面sz01,原因是80端口是默认端口,普通用户没有使用此端口的权限,此时需要借助root用户启动tomcat服务

    • 如果完全切换到root用户

      su - root

      执行./startup.sh时无法执行,提示缺少环境变量,原因是jdk的环境变量设置在了bigdata用户变量中,而不是系统变量,所以root没有jdk环境变量

      1535697282874

    • 非完全切换到root用户

      su root

      此时拥有root用户的权限,而环境变量使用bigdata用户,即能满足需求

  2. 启动tomcat服务

1535697387605

​ 启动后可以通过sz01访问,此时由于使用默认80端口,所以无需添加端口号访问

1535697418566

  1. 修改Windows下的hosts文件,对虚拟机中的CentOS增加一项主机名www.cry.com

1535697542462

  1. 此时浏览器直接访问www.cry.com即可直接访问CentOS中的tomcat

1535697519983

通过tomcat发布项目(作为了解)
  1. eclipse中导出项目

    右键项目,export导出 WAR file

    war文件如下:

    1535699488859

  2. 将war文件使用Xftp上传到到tomcat的webapps下

  3. 通过root用户启动tomcat服务

    ./startup.sh

  4. 此时通过浏览器访问项目,成功

1535699557903

四、yum安装软件

yum简介

yum:管理rpm软件包的依赖,在仓库(http://)中搜索需要安装的软件的依赖,自动下载更新

系统安装完成后会默认配置公共仓库,在公网能够访问的情况下,可以使用yum安装软件

查看yum配置

cd /etc/yum.repos.d

ls

1535699926145

查看CentOS-Base.repo配置

cat CentOS-Base.repo

镜像列表

1535700098424

访问其中的一个镜像列表查看

1535700115331

1535700129752

如果无外网,yum无法使用,报无法到达镜像主机

1535700290121

在无外网的环境下,无法直接使用yum安装公网镜像中的软件,此时需要在局域网中搭建仓库(ftp://)/本地文件(file://)

创建本地yum源
  1. 挂载光盘

    • 右侧虚拟机设置,检测是CD/DVD是否已连接,ISO镜像文件是否正确

    1535700398184

    • 查看光盘是否存在

      cd /dev

      ls,查看是否有cdrom,或者直接cd /dev/cdr按两下Tab键,查看是否有cdrom

      1535700478870

    • 在/mnt目录下创建挂载点

      mkdir /mnt/cdrom

      1535700519183

    • 将光盘挂载至/mnt/cdrom中

      mount /dev/cdrom /mnt/cdrom

      1535700556655

    • 检测光盘是否挂载成功,进入挂载点查看,如果存在文件则说明挂在成功

      cd /mnt/cdrom

      ls

      1535700574748

  2. 修改配置文件,指定baseurl至挂载目录

    vi CentOS-Media.repo

    1535701673724

    文件修改前后如图所示

    baseurl=file:///media/mnt/cdrom

    gpgcheck=0(关闭校验,1为开启校验)

    enabled=1(打开从本地读取)

    1535701540951

    1535701788208

  3. 将失效的Base标记为不生效状态

    将CentOS-Base.repo重命名其他名字即可

1535701709737

  1. 测试,yum -y install gcc,成功(之前已经安装过,所以提示没有新版本,未做任何操作)

1535702069685

五、shell编程基础

shell概述

shell 既是一种脚本编程语言,也是一个连接内核和用户的软件,shell脚本一般以.sh结尾

  • 常用的两种解释器:sh(Unix上的标准shell),bash(sh的增强版本)

  • 脚本文件格式

    #!/bin/bash

  • 脚本执行方式:对于有执行权限的文件(x)可以直接执行,或者使用bash以及sh命令

shell基础语法
  • 变量定义:不需要声明类型,使用时使用$作为前缀引用,变量赋值时等号两侧无空格
  • 变量赋值时不允许使用空格,可以加双引号解决,并可以再其中引入变量
  • 使用单引号时赋值时会被识别为纯文本
  • export 变量名称:将变量提升为全局环境变量,可以供其他shell程序使用
  • source 文件:执行文件中的export语句
  • 系统变量:任何用户都可以直接使用
  • $HOME:当前用户家目录
  • $PWD:当前所在目录
  • $SHELL:当前使用的解释器
  • $USER:当前用户名
shell特殊符号
  • $?:表示上一个命令退出的状态,一般0为成功,其他为异常

    1535704590974

  • $$:表示当前的进程编号

    1535709529707

  • $0:表示当前脚本名称

  • $n:表示第n个位置传入的参数,从1开始.

    1535711438871

    1535711510434

shell小实战1 - 创建、执行脚本文件
  1. 切换至/tmp目录下

    cd /tmp

  2. 创建脚本文件testsh,添加内容

    vi testsh

    mkdir t1

    mkdir t2

    mkdir t3

    1535704399292

  3. 执行文件

    • 执行方式1:sh命令

      sh testsh

      执行成功,创建了三个文件夹

      1535704422951

    • 执行方式2:给文件加上执行权限,通过./方式执行

      chmod u+x testsh

      更改好权限后,文件名颜色变为绿色,代表可执行脚本文件

      删除执行方式1中创建出的三个文件

      1535704481578

      ./testsh

      执行成功,再次创建了三个文件夹

      1535704550294

shell小实战2 - 变量、单双引号
  • shell变量定义

    格式:key=value (中间不带任何空格)

    shell中变量不需要定义类型

    脚本文件开头需标注#!/bin/bash,声明执行方式

    vi shtest

    1535704729380

    ./shtest

    1535704741080

  • 变量值中带有空格,需要使用双引号括住变量值

    1535704796592

    1535704809190

  • 双引号不仅可以处理空格问题,还可以在双引号中引入变量

    引入变量格式为$name

    1535704847818

    1535704841369

  • 单引号内的内容会被识别为纯文本,赋值语句$同样会被识别为纯文本

    1535704854176

    1535709159033

shell小实战3 - 调用系统命令、if语句、传参
  • 调用系统命令

    1. 新建testjava

      vi testjava

      1535711931492

    2. 执行此脚本,提示未找到java

      1535711988126

      原因是当前root用户未配置java环境变量,我们需要使用bigdata用户(配置了java环境变量)执行此文件,切换用户前需要给此文件加上其他用户能执行的权限

      chmod u+x testjava

    3. 切换到bigdata用户

      su - bigdata

      cd /tmp

      执行脚本文件

      ./testjava

      用户bigdata执行成功

      1535712467389

    由此可以得出,shell脚本的执行能调用的系统命令与执行该脚本的当前用户相关

  • export命令

    命令作用:在当前脚本中定义的变量升级为环境变量

    1. 新建testexport

      vi testexport

      1535705012693

    2. 保存退出,增加执行权限

      chmod u+x testexport

    3. 使用source命令刷新一下该脚本文件,作用是执行脚本文件中的所有export语句

      source testexport

    4. 使用echo命令测试能否引用定义的变量

      echo $var1

      echo $var2

      成功,输出结果如下:

      1535713476124

  • if语句

    $?得到的结果进行判断,执行语句

    1. 新建testif

      vi testif

      1535713806518

    2. 保存退出,增加执行权限

      chmod u+x,o+x testif

    3. 使用root用户执行

      ./testif

      1535714018685

    4. 使用bigdata用户执行

      su - bigdata

      cd /tmp

      ./testif

      1535714082849

  • 传参

    shell脚本将用户输入的参数传递给java程序

    两步传参:1.用户输入参数,shell脚本接收到;2.shell脚本将接收到的参数传递给java程序

    切换至bigdata用户

    在bigdata用户中执行下面步骤

    1. 配置CLASSPATH环境变量

      vi ~/.bash_profile

      1535705994351

      source ~/.bash_profile

    2. vi Test.java,通过nodepad++插件工具编辑该文件

    1535706127299

    1. 新建testargs

      vi testargs

      1535715003589

    2. 保存退出,增加执行权限

      chmod u+x testargs

    3. 编译Test.java

      javac Test.java

      1535715166582

    4. 执行testargs脚本,并传递三个参数给脚本

      ./testargs abc 123 a12

      执行成功,结果如下:

      1535715259341

猜你喜欢

转载自blog.csdn.net/cry970795248/article/details/82261437
今日推荐