
开发环境搭建和Shell编程开发环境搭建掌握 Xshell和Xftp工具下载和安装方式下载地址https://www.netsarang.com/zh/其他下载地址链接https://pan.baidu.com/s/16U158rvwNbsgH0vzpzfUPQ提取码nare至于选择那个安装就看你自己了安装方式直接一路点击下一步即可安装过程选择免费版使用方式网络模式设置设置网络连接模式为NAT模式如下图修改配置文件使用root用户打开/etc/sysconfig/network-scripts/ifcfg-eno16777736文件有些虚拟机软件或者镜像使得该文件可能是不同的但基本都是ifcfg-e开头的且基本只有一个自己看看就知道了添加或修改的内容如下如果不知道是哪个对应的信息则可以百度/* BOOTPROTOstatic 使得变成静态ip ONBOOTyes 重启生效 IPADDR192.168.164.128 注意这里用自己的对应ip范围查看虚拟机的网络网关一般在vm软件里面可以查看具体可以百度一般修改164这个地方后面的基本也是如此即如164.2里的164ip在网络上的位置 ipaddr GATEWAY192.168.164.2 网关网络到其他网络需要的口子可以叫做路由器 gateway NETMASK255.255.255.0 子网掩码将ip划分为主机地址和网络地址 netmask DNS1114.114.114.114 向指定位置解析申请的域名(可以设置为8.8.8.8公共0.0.0.0本机) dns1 DNSDomain Name System域名系统因特网上作为域名和IP地址相互映射的一个分布式数据库 注意上面只是虚拟机软件虚拟出来的并不是真正的有对应设备如网关但连接时确会有起作用 */配置文件生效//一般的我们可以重启虚拟机来使得该配置文件生效即reboot命令//当然也可以不重启使得生效如下//使用命令使得配置文件被读取生效service network restart 实际上就是重启网络服务//要注意服务和配置文件是有区别的服务需要开启才可而配置文件是别人读取这个信息//一般我们改变时需要重新执行这个配置文件实际上就是执行文件里面的操作而没有文件操作的执行是没有用的//所以需要其他的来重新读取即上面的重启对应服务//之所以有上面的决定是因为数据的变化配置文件无非就是存放对应数据//而执行或者重新读取都是获得改变后的数据而已//而像windows系统你会发现操作配置文件时并没有进行执行操作是因为你在操作对应程序时都会去读取一下的//如域名的设置都会去读取一下的//而上面的重启服务他已经在执行了所以为了去读取改变的配置文件需要重新启动之后就可以连接了之所以可以连接是因为Linux多用户下面介绍在Linux下载对应开发环境注意系统版本JDK的下载和安装下载和安装方式下载地址https://www.oracle.com/java/technologies/javase-downloads.html安装方式将下载好的jdk安装包通过Xftp工具传输到CentOS系统中使用tar命令解压即可在Xshell里点击如下有颜色的那个当你安装好Xftp时点击根据当前状态自动帮你创建连接若你自己使用Xftp那么就要注意协议和端口一般来说Linux是没有对应ftp协议的所以通常都有将协议的ftp改成sftp因为sftp是ssh协议的一部分一般虚拟机都是用ssh要注意协议最好是相同的因为不同的协议基本是不能互相连接的且端口也是不能被同样的协议占用的注意是同样的协议不同的协议可以这样基本就可以进行连接操作文件连接一般使用的是sftp虚拟机一般是这个占用端口22而连接虚拟机的一般是ssh占用端口22而ftp一般占用21端口虚拟机一般不使用这个操作文件虚拟机也可以叫做Linux虽然他是一个对应软件但也可以称之为对应机子而端口是必须要没有占用的一般的连接21端口基本占用所以我们通常需要没有占用的端口如22端口但实际是端口是可以监听不同的协议的如sshsftp这两个都可以去占用22端口即不同的内容但相同的就不可以实际上一个端口可以当成一个容量每有一个不同数据开辟一个空间但只会开辟一个所以相同的就连接不上了配置环境变量使用root用户打开配置文件/etc/profile向文件末尾追加内容如下//export JAVA_HOME/usr/javajdk//解释定义变量JAVA_HOME后面是值//export PATH$JAVA_HOME/bin:$PATH//解释定义变量PATH后面$是取变量:是路径分割符//再将原来的$PATH放在后面那么就相当于给PATH添加新的内容并重新赋值了//即export是一个用于设置或显示环境变量的命令保存退出后让文件生效并验证是否配置成功//source /etc/profile 重新执行这个配置文件即使得该配置文件生效//javac -version//由前面数据变化可知当你执行后就算你删掉这个对应配置并不会影响数据的设置完毕因为其他的并没有再次读取//除非你继续设置//如果配置好后还是访问不了可以看这个博客https://blog.51cto.com/u_15346267/5055558//如果还是不行可以看这个博客https://blog.51cto.com/u_147655/5379077//当然大多数是因为系统的原因导致的也有可能是对应的jdk的问题一般是系统可能操作不了对应的版本的jdk这里注意即可Tomcat的下载和安装下载和安装方式下载地址https://tomcat.apache.org/download-80.cgi安装方式将下载好的Tomcat安装包通过Xftp工具传输到CentOS系统中使用tar命令解压即可启动和关闭方式//在这里就不是bat了而是shwindows是bat这是对应系统的差别因为都是对应系统的处理方式//因为bat是windows识别的sh是linux识别的都是他们自带一种方法//当然了对应的他们没有所以tomcat就有bat和sh两个方式执行//其实也可以在对方安装对应方式只不过大多数默认的系统都没有对应方式//startup.sh//shutdown.sh//注意要执行对应的文件一般不能直接写入上面的文件全名即显示找不到命令与windows不同//之所以这样主要是因为linux的直接写只会当作全局命令而不会去当前目录里去找这是两个系统的不同//所以linux也有一个windows也不会当作的操作即./执行命令//即linux里要执行对应的操作一般需要如下操作//可以使用./startup.sh或者./shutdown.sh来执行与windows不同//即使用./后面的代表要执行的二进制文件//虽然有些命令也算二进制文件但他们是全局的所以不需要对应./windows是不会识别./的执行方式的//这也是他们两个的不同之处因为是不同系统即有很多不同的地方的开放防火墙端口之所以需要这个是因为远程访问会受到防火墙的阻塞内部基本不会所以我们需要对相应的端口进行开放使得我们的电脑可以对我们创建的虚拟机相当于其他电脑了可以访问这里我就说明一下为什么可以创建对应的虚拟机我的理解无论的ip还是什么其他的网络地址最终的结果就算网络信息上给出的分组信息这个信息就可以识别对应电脑那么电脑的接收网络信息的地方会根据对应地址进行相应的存放而创建的虚拟机就算作多出来的一个对应地址即实际上还是通过系统中的相应操作一般是文件形成了一个电脑里可以有虚拟机的操作所以可以说虚拟机这个软件是可以创建虚拟机的因为硬件到软件中那些系统也算是通过操作硬件而已所以上述接收到的对应地址是可以进行改变的就如qq也可以进行通信只是虚拟机网路被创建出来了隔开/sbin/iptables-IINPUT-p tcp--dport8080-jACCEPT//解释让这个ip的防火墙允许输入基于tcp协议的8080端口的接收//开启8080端口暂时开通重启需要重新开通因为他的对应配置文件的作用其实linux的命令也是可以加上 ; 冒号的而中文冒号会当作一起英文冒号则当作结束符号配置环境变量使用root用户打开配置文件/etc/profile向文件末尾追加内容//export CATALINA_HOME/usr/tomcat//export PATH$CATALINA_HOME/bin:$PATH保存退出后让文件生效并验证是否配置成功//source /etc/profile//startup.sh//这时就不用./了而是直接变成全局了但建议不要配置tomcat环境变量是因为若要开启多个服务器那么由于配置了环境变量即全局只能执行该变量对应的服务器所以一般不进行配置在这里可以感兴趣的配置一下发布Web项目将Web项目打成war包通过Xftp工具将war包放在tomcat/webapp目录并启动前面也说过idea的某些选项可以最终访问到这里其实相当于服务器自己访问自己里面的内容那么这个时候就可以直接访问对应项目的东西了如你也许会有一点疑惑为什么idea创建的可以在linux里面运行首先idea只是让你更好的写代码而对应的执行是jdk运行环境来执行的而服务器就是进行命令的全部执行即类似于批量的使用java.exe来执行对应class所以可以说只要有对应环境以及class文件那么就可以运行项目了因为idea的操作运行服务器最终基本就是这样的他们的配置就是决定资源的访问的Mysql的下载和安装下载Mysql的repo源注意如果报错先看一下ping www.baidu.com可不可以进行网路访问若不行看一下你配置文件的网关是否正确这是因为网关是一个口子必须要正确的否则会解析不了你所对应访问的位置位置有网关帮你分配//wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm//可以手动访问后面的网站就会有一个下载出现实际上上面就是一个快照下载//快照就是下载对应文件的一系列步骤的封装//wget下载命令的意思实际是一种下载工具//通常一个repo文件定义了一个或者多个软件仓库的细节内容//记录了包的下载路径相当于寻宝图告诉yum去哪里寻找将要下载的软件//wget命令用来从指定的URL下载文件//yum用于RPM包的添加删除更新自动解决包的依赖问题以及系统更新升级//也有下载的意思可以说他是一系列操作的集合安装rpm包//rpm -ivh mysql57-community-release-el7-8.noarch.rpm//进行解析快照安装基本只能操作这个rpm文件//可以理解为我们手机上的先解析安装包然后再通过我们手动的点击安装这样的整体操作的意思安装Mysql //yum install mysql-server//这样也可以安装但首先需要先安装上面的rpm包安装后会出现对应的新的包这里就是那个安装//上面基本是这样的先下载好解析安装后可能会出来一些对应包需要yum来操作rpm基本操作不了这时需要yum了//因为rpm基本只能操作rpm结尾的文件但实际上只是只能操作rpm相关内容的文件与是否是rpm结尾无关所以并不是必须是rpm结尾//然后根据出现的对应包进行下载当然其实也可以直接yum下载对应包需要存在先远程然后本地若出现了密匙错误一般是没有对应密匙或者不匹配因为下载都是需要对应的密匙的执行如下即可//rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022//直接导入对应快照//注意一般对文件造成大的操作的都需要root权限引入了最新密匙使得下载时会去安装好的这里面去加载对应密匙下面三种可以理解为wget类似于迅雷是一种下载工具yum是一种软件安装方式rpm软件管理一般下载的都由他管理或者解析然后安装启动服务//service mysqld start//grep password /var/log/mysqld.log//查看默认分配的密码//注意默认情况下安装好mysql后//是开机自启的无论你是否手动的启动过下次的启动linuxmysql都会自动的启动//即如果你安装好后直接的重启linux而不手动的启动mysql那么再次的查看服务状态时一般都是启动的mysql的//如果手动或者重启linux启动不了那么手动的启动自然也启动不了那么可以百度查看错误//实在不行可以删除所有相关的mysql重新操作即可百度可以查看如何操作//具体删除所有相关的mysql方式的地址如下https://blog.csdn.net/weixin_65034883/article/details/126039895查看服务状态 //systemctl status mysqld使用root用户登录//mysql -u root //一般是mysql -uroot或者//一般是mysql -uroot -p一般是这个修改临时密码 因为不修改密码基本执行不了mysql命令//alter user rootlocalhost identified by QiDian666;//注意密码又格式要求要有大写小写特殊符号数字等等且最低8个数图形化界面访问数据库使用SQLyog工具启动图形化界面工具SQLyog连接虚拟机中Mysql数据库如下图之所以出现这种情况一般是因为root的默认权限为只能是本机访问在mysql里面可以设置为%使得其他电脑访问解决方案 使用root权限登录数据库后选择mysql库//mysql -u root -p//use mysql查看mysql库中的user表的host值后修改为通配符%//select host from user where userroot;//update user set host% where userroot;//flush privileges; 刷新权限信息防止没有改变虽然可能改变了查看修改结果并重新测试//select user,host from user若出错了一般是防火墙阻塞/sbin/iptables-IINPUT-p tcp--dport3306-jACCEPT开放对应端口防火墙Shell编程熟悉基本概念Shell是一个命令行解释器可以接收应用程序或用户命令然后访问操作系统内核Shell是一个功能相当强大的编程语言易编写、易调试、灵活性强编写第一个程序 使用vi工具创建xxx.sh的文件以#!/bin/bash开头并编写代码后保存#表示使用bash工具来解释代码#!/bin/bashechoHelloWorld!#是注释#其中#!可以不写这是一起的不代表注释但也使得后面不运行但有些东西必须要说明表示是这个使用如函数等等在Shell里面sh后缀可以不写的与java不同java编译只识别java后缀之所以使用sh后缀是为了方便识别执行Shell程序的方式 方式一./文件名此方式需要执行权限方式二/bin/bash 文件名此方式不需要执行权限一般linux自动配置了bash的环境变量所以也可以直接bash 文件名执行也可以简写成sh 文件名ls -l也可以简写成ll之所以简写一般都是一样的操作的不同执行的文件变量的定义语法格式定义变量变量值#!/bin/bashnamezhangfeiecho$nameunsetname#撤销name变量那么这个变量就不存在了echo$name#不存在的变量相当于一个空值那么就是输出空值#注意namezhangfei中不能又空格否则不会识别即报错#而且要取得变量需要加上$符号才会算作取得变量否则就算一个数(可以理解为字符串数)即打印name#注意有些名称有特殊的会报错如单词的写ss#之所以这样是因为这是执行文件那么里面的相当于是在命令行里执行的这与其他语言是不同的#如java需要编译等等再jre环境下执行#所以可以实验一下在命令行里写出namezhangfei回车虽然每反应但其实是在一个空间里进行存放的#然后再echo $name那么就会打印张飞由此可见每个终端都有一个存放对应代码的地方#所以执行文件其实也算作执行里面的代码由终端帮他执行即会判别里面的代码操作#但注意的是文件之间的变量是不会互相识别的所以终端自带的文件和执行的文件的变量都只是自己各自的变量互不影响#所以你在命令行设置的变量存放到自带的文件地方执行文件里的echo $name是没有值的即不影响#所以所既然没有值那么echo输出的就算空的那么就会发现输出一个空值空值占一个命令中的行#由上所述那么就知道为什么之间不加空格了#因为加使得他们会被识别因为是一起的而单词的会认为是一个命令*因为隔开就不是一起的了#所以报错提示时会说该命令没找到撤销变量unset 变量定义规则变量名称可以由字母、数字和下划线组成但是不能以数字开头环境变量名建议大写不能使用bash里的关键字中间不能有空格可以有下划线在bash中变量默认类型都是字符串类型无法直接进行数值运算因为需要$来取值变量的值如果有空格需要使用双引号或单引号括起来双引号和单引号的区别是双引号里面可以读取识别变量而单引号不会#!/bin/bashnamezhangfei#定义一个名字为name的变量初始值为zhangfei两边不能有空格echo$name#打印变量name的数值#unset name #撤销name的定义echo$name#showMy Self!$name #若变量值中有空格则使用单引号或双引号但双引号中可以取出变量的数值showMy Self!$nameecho$show常用运算符算术运算符 #!/bin/bash#定义两个变量ia5ib2#一般2与2是一样的2会默认为字符串字母也是一样注意linux的和的区别即可#打印两个变量的数值echoia$iaechoib$ib#实现加法运算要求两边必须有空格否则就不会进行加法运算expr实际上不会显示但由于echo优先级高所以才显示#即加上那么他就会先执行使得不显示echoexpr$ia $ib#expr一般是操作运算的可以百度查看#使用其它方式实现加法运算ic$[$ia$ib]#实际上也可以使用expr来赋值但为了节省代码量使用$[]的形式对内容进行运算这时[]里面的变量有无空格都可以#相当与使用[]将他们变成一个式子最后使用$取值使用$取值时顺便进行运算无视有无空格#单纯的[]会显示echo$icid$(($ia$ib))#使用单纯的不会显示使用两个报错即$一起算作expr的作用echo$id关系运算符流程控制语句if[条件判断式]then程序fi#!/bin/bash#定义一个变量用于描述考试成绩score60echo$score#使用if判断给出及格或者不及格的提示信息if[$score-gt60]#注意使用if式[]左右都要空格隔开否则会当成一体thenecho恭喜您考试通过了!elif[$score-eq60];thenecho60分万岁多一分浪费else#最后一个不加then其他的必须要否则报错echo下学期来补考吧fi#注意这些代码可以对连接一起的使用;隔开这样的隔开后后面无视空格#之所以可以隔开是因为他们就是一条语句#这样的;隔开then后面不可以加否则的话基本报错#因为then后面要接代码所以需要接代码的基本都不可以加如case由于他们是一条语句所以我们不能操作语句内部#报错都是识别出来的其他语言基本如此#注意最好不要使用;进行隔开即换行是最好的操作因为;容易出错在前面说过;可以当作结束符号case语句case$变量名in值1 如果变量的值等于值1则执行程序1;;值2 如果变量的值等于值2则执行程序2;;…省略其他分支… * 如果变量的值都不是以上的值则执行此程序;;esac#!/bin/bash#提示用户输入1 ~ 4之间的整数并记录到变量中echo请输入1~4之间的整数readnum#表示读取一个整数放到变量num中#使用case语句进行批评和打印case$numin#开始1)echo你选择了1号业务#当然数字是数字否则一律都看成字符串11;;2)echo你选择了2号业务;;3)echo你选择了3号业务;;4)echo你选择了4号业务;;*)echo你没有选择1~4号之间的业务你想干啥;;esac#结束for循环 for((初始值;循环控制条件;变量变化))do程序done#!/bin/bash#定义一个变量负责记录累加和sum0#使用for循环计算1 ~ 100之间的累加和并记录到上述变量中for((i1;i100;i))#这一行可以无视空格当然不能无视就如for不可分离一样是语法规则do#开始sum$[$sum$i]done#结束#打印变量的数值echo$sumwhile循环 while[条件判断式]do程序done#!/bin/bash#使用while循环实现1 ~ 100之间的累加和#定义两个变量分别记录累加和与初始值sum0i1#使用while循环while[$i-le100]#空格都要加上dosum$[$sum$i]i$[$i1]done#打印结果echo$sum函数[function]funname[()]{Action;[return int;]}funname#注意这里有中括号的可以省略不写但要注意function和必须要留一个#shell的函数的return基本只能返回数字最大为255超过了按照0处理若为非数字字符串那么就是255#这个返回不是其他编程语言一样的返回而是一个函数执行号也可以叫做状态码且基本赋值不了#但可以使用echo $?来获得上次调用函数的返回只能是上一次调用#!/bin/bash#定义一个函数负责计算两个输入数据的和并打印functionsum(){s$[$1$2]echo$s}#提示用户从键盘输入两个数据read-pinput num1:num1#-p后面接上提示使得有提示的输出read-pinput num2:num2#调用函数sum$num1$num2最后不得不说明一点在linux中/“才是路径的处理而windows中”/“和” \ “通常都一样但是一些命令需要正确特别的是关于linux的命令就算在windows中最好也操作”/“而且有些命令可能对路径有强指定比如末尾不能加上”/“或者” \ 当然这里了解即可只是自身特性和命令的部分操作而已