博学谷IT技术支持
一. java学习之路
javase
mysql
前端
javaweb
ssm框架
springboot
vue
springclude
MP(mybatisPlus)
Git
Linux (centos7) 操作系统
Linux基础
Redis:是一个nosql数据库
Nginx:反向代理,负载均衡服务器
Docker:容器化技术
消息队列(kafka,rabbitMQ,rockeetMQ),缓存(redis),搜索引擎(es),集群分布式(购买多台服务器或者用多台虚拟机)
二.Linux简述
<1>两套服务器的环境
LAMP : linux+apache+mysql+php
LNMP : linux+ngix+mysql+php
<2> Kali linux:安全渗透测试使用(网络安全)
平台如:补天等
三.Linux开机与关机
<1>用户的登录方式
命令行登录
ssh登录:xshell方式(ctrl+鼠标调整字体大小)
图形界面登录:本地用vware虚拟机
<2>关机
sync #关机或重启前把内存中的数据存到硬盘
shutdown #关机
reboot #重启
四.Linux目录结构
/:根目录
/etc:配置文件
网络配置目录:cd/etc/sysconfig/network-scripts
默认的网络配置文件:network-scripts/ifcfg-eth0
查看网络配置的命令:进到ifcfg-eth0文件中使用ifconfig命令
/home:用户的主目录,一般该目录名是以用户的账号命名的
/opt:给服务器安装额外的软件,这就是安装软件所摆放的目录。比如redis,mysql等
/root:超级权限者的用户主目录。
/usr:存放普通用户的很多应用程序和文件,类似于 windows 下的 program files 目录。
/tmp:存放临时文件的。(用完即丢的文件,比如安装包,解压完直接删了就行)
/var:存放日志文件的目录
/www:存放服务器网站相关的资源,如环境,网站的项目
/bin:存放着linux常用的命令。
/boot:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :Device(设备) 的缩写, 存放的是 Linux 的外部设备(u盘等)
/mnt:实际中会把本地文件挂载这个目录下
/media:挂在外部设备,如光驱,u盘
/lib:基本依赖,类似于 Windows的动态连接库
/lost+found:存放突然关机的一些文件
/proc:系统映射,不用管
/sbin:存放系统管理员使用的系统管理程序。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。(把这个删了系统就没了)
/srv:存放服务启动之后需要提取的数据。
/run:临时文件系统,不用管
/sys:存放文件系统
五.Linux命令
1.文件(读写执行crud)
<1>目录管理
ll 查看文件所以的信息包括权限
ls -参数:查看目录
-a 查看所有文件,包括隐藏文件
-l 查看文件信息,包含文件的属性和权限,看不了隐藏目录
-al查看所有文件的信息,包含属性和权限,以及隐藏目录
cd:切换目录(绝对路径以/开头,相对路径是..)
cd / 返回到根目录
cd .. 返回上一级目录
cd ../目录名(相对路径)
cd ~(回到当前用户目录)
pwd:显示当前用户所在的目录
touch:
创建文本文档
mkdir:
mkdir test
mkdir -p test1/test2/test3(创建多级目录)
rmdir:删除空的目录,如果目录里有文件,要先删除文件
rmdir test(删除单个目录)
rmdir -p test1/test2/test3(强制删除一个多级目录)
cp:复制文件或目录
cp 旧文件 新目录 (拷贝文件到目录,如果文件重复选择y覆盖或n放弃)
eg:cp install.sh alex
rm(移除文件或目录)
-f:忽略不存在的文件,不会有警告,强制删除
-r:递归删除目录
-i:询问是否删除
-rf:直接删除
/:系统所有文件全部删除,千万不要用,删库跑路
eg:rm -rf install.sh
删除多个文件
eg:rm -rf alex alex02 test
mv:移动文件或目录(相当于剪切),还可以重命名文件夹
-f:强制移动
-u:只替换已经跟更新的文件
eg :mv install.sh alex/ (移动文件到目录下)
mv alex alex2 (重命名文件夹)
echo:输入字符串到文件中
<2>基本属性
#更改用户对文件的操作权限
chmod 777 xxx.txt#修改单个文件的权限
chmod -R 777 xxx #修改整个文件夹包括里面的所有文件的权限
#修改文件/文件夹所属组
chown eupp:users xxx.txt
chown -R eupp:users xxx.txt
<3>文件内容查看
cat : 从第一行开始查看文件内容
cat alex.txt
tac : 从最后一行开始显示文件内容
nl : 显示内容的同时显示行号
more : 一页一页的显示文件内容(空格翻页,enter往下翻一行)
less : 升级版more,可以翻页(空格翻页,上下键翻页面,q退出,/字符可以查找字符,n表示继续向下寻找,N向上寻找)
head: 只看头几行
tail: 只看最后几行
<4>硬链接与软链接(用来备份文件)
硬链接:A-B,允许一个文件有多个路径,用户可以通过这种机制建立硬链接到重要文件上,防止误删,如果删了其中一个A,还可以通过B访问到文件
软连接:类似windows的快捷方式,如果删除了源文件,快捷方式也访问不了文件
创建链接:ln
[root@userAlex home]# touch alex #创建alex源文件,没有后缀,是一个默认的文件
[root@userAlex home]# ls
alex www
[root@userAlex home]# ln alex alex02 #创建一个硬链接
[root@userAlex home]# ls
alex alex02 www
[root@userAlex home]# ln -s alex alex03 #创建一个软链接
[root@userAlex home]# ls
alex alex02 alex03 www
[root@userAlex home]# ll
total 4
-rw-r--r-- 2 root root 0 Jan 9 00:05 alex
-rw-r--r-- 2 root root 0 Jan 9 00:05 alex02
lrwxrwxrwx 1 root root 4 Jan 9 00:07 alex03 -> alex
drwxr-xr-x 2 root root 4096 Jan 7 13:07 www
[root@userAlex home]# echo "I love alex" >> alex #给alex文件写入字符串
[root@userAlex home]# cat alex
I love alex
[root@userAlex home]# cat alex02
I love alex
[root@userAlex home]# cat alex03
I love alex
[root@userAlex home]# rm -rf alex
[root@userAlex home]# ls
alex02 alex03 www
[root@userAlex home]# cat alex02
I love alex
[root@userAlex home]# cat alex03 #alex03(软链接)快捷方式失效
cat: alex03: No such file or directory
<5>vim编辑器
三种命令模式:命令模式, 输入模式,底线命令模式
用法:
使用vim编辑文件就是进入了命令模式:vim alex.tex(如果alex存在就是直接编辑,如果不存在就会新建alex.txt文件)
输入i切换到输入模式(编辑模式)
键盘esc退出编辑模式进到命令模式
输入:光标移动到最底下,进入底线命令模式
输入wq保存并退出
常用命令:
:set nu(底线命令设置行号,用于看代码,比如配置文件)
/字符(输入模式用于字符的搜索)
n/N(配合/字符使用,向下或向上搜索字符)
2.权限(用户,用户组)
<1>用户账号管理(/etc/passwd是用户管理最重要的文件)
useradd -参数: 使用root权限添加用户
-m:自动创建这个用户的主目录/home/
-G:创建用户的同时给用户分配用户组
#linux一切皆文件,这里的添加用户其实就是往某一个文件中写入用户的信息(/etc/passwd)
userdel -参数: 删除/etc/passwd系统文件中的用户记录
-r:删除用户的时候将他的目录一起删掉(如果不加-r不会删文件)
usermod -参数: 修改用户的有关属性,如用户号,主目录,用户组,登录shell等
-d:更改目录
eg:
[root@userAlex home]# ls
www
[root@userAlex home]# useradd -m alex
[root@userAlex home]# ls
alex www
[root@userAlex home]# cat /etc/passwd
alex:x:1000:1000::/home/alex:/bin/bash
[root@userAlex home]# userdel -r alex
[root@userAlex home]# ls
www
[root@userAlex home]# cat /etc/passwd
#可以看到配置文件中已经没有alex的用户信息了
[root@userAlex home]# useradd -m alex
[root@userAlex home]# usermod -d /home/111 alex
[root@userAlex home]# ls
alex www
[root@userAlex home]# cat /etc/passwd
alex:x:1000:1000::/home/111:/bin/bash
#虽然没创建111目录,配置文件中已经把alex用户的主目录位置改掉了,这样的话新建的用户文件会跑到111目录,文件不存在就会报错,所以最好切换文件前先创建出来目录
<2>linux下切换用户
$ : 普通用户权限
# :超级用户root权限
su - username(username是用户名):切换普通用户
sudo su:普通用户切换回root用户
exit:退回到原来用户
<3>用户的密码修改
超级用户权限:
passwd username
普通用户修改:
当前用户下直接passwd
<4>锁定用户
使用root权限冻结账号
passwd -l alex #锁定之后用户alex就不能登录了
passwd -d alex #没有密码也不能登录
<5>用户组管理
groupadd 用户组名 : 创建用户组
-g :指定id
eg:group -g id名 用户组名 #创建用户组的同时指定id
groupdel 用户组名 : 删除用户组
groupmod 用户组名: 修改用户组信息
-g :修改id
-n 新名字 旧名字:修改名字
eg:
[root@userAlex home]# groupadd jack
[root@userAlex home]# cat /etc/group
jack:x:1001:
[root@userAlex home]# groupdel jack
[root@userAlex home]# cat /etc/group
3.系统(磁盘,进程)
<1>磁盘管理
df:列出文件系统整体的磁盘使用量
-h : 可视化,按照M查看
du:检查磁盘空间的使用量
-a: 查看所有文件,包括隐藏文件
-sm /* : 检查根目录下每个文件占用的容量(/usr是系统初期最大的占用内存目录,很多文件和程序都在这儿)
eg:
[root@userAlex /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 3.5G 34G 10% /
devtmpfs 868M 0 868M 0% /dev
tmpfs 879M 8.0K 879M 1% /dev/shm
tmpfs 879M 464K 878M 1% /run
tmpfs 879M 0 879M 0% /sys/fs/cgroup
tmpfs 176M 0 176M 0% /run/user/0
[root@userAlex /]# cd home
[root@userAlex /]# du -sm /*
0 /bin
132 /boot
1 /dev
34 /etc
1 /home
0 /lib
0 /lib64
1 /lost+found
1 /media
1 /mnt
1 /opt
du: cannot access ‘/proc/29794/task/29794/fd/4’: No such file or directory
du: cannot access ‘/proc/29794/task/29794/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/29794/fd/4’: No such file or directory
du: cannot access ‘/proc/29794/fdinfo/4’: No such file or directory
0 /proc
1 /root
1 /run
0 /sbin
1 /srv
0 /sys
1 /tmp
1528 /usr
483 /var
1320 /www
[root@userAlex home]# du -a
4 ./www
4 ./alex/.bash_history
4 ./alex/.bash_profile
4 ./alex/.bash_logout
4 ./alex/.bashrc
20 ./alex
28 .
补充:mac本或想使用liunx挂载本地磁盘或文件(mount:挂载(相当于Windows插入u盘),umount -f:卸载<相当于windows中拔出u盘>)
<2>进程管理
ps :查看当前系统中正在执行的各种进程信息
-a:显示当前终端运行进程的所有信息
-u:以用户的信息显示进程
-x:显示后台运行进程的参数
-aux | grep mysql:查看所有进程,并过滤出符合条件mysql的
-ef|grep mysql:查看mysql父进程的信息
pstree -pu : 通过目录树查看进程
kill :杀掉进程
-9 xx(进程id):强制结束进程(写的java程序死循环了,就可以强制结束进程)
3.网络和服务管理命令
4.linux重定向
<1>ll > a.txt#把ll的输出结果写到a.txt里面
<2>ll >>a.txt#追加内容到a.txt
六.环境安装
安装软件一般有三种方式:rpm,解压缩,yum在线安装
1.rpm(下载安装jdk, 并在线发布一个springboot项目的全流程测试)
<1>.下载jdk rpm
<2>.安装java环境(注意linux的arm架构用的是arm的jdk版本)
java --verison : 检测当前系统是否存在java环境
rpm -qa|grep jdk :检测jdk版本
jdk1.8.0_121-1.8.0_121-fcs.x86_64
rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64 卸载jdk
rpm -ivh jdk-8u65-linux-x64.rpm : rpm方式下载jdk
<3>.配置环境变量(source /etc/profile让配置文件生效)
vim /etc/profile
-i :编辑模式,在最后加入下面配置
JAVA_HOME=/usr/java/jdk1.8.0_65
CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
export PATH=/bin:/usr/bin:$PATH
<4>阿里云配置安全组打开端口
<5>.防火墙
#查看防火墙的服务状态
systemctl status firewalld
#查看所有开启的防火墙
firewall-cmd --list-ports(只看端口)
firewall-cmd --list-all(查看全部)
#开启防火墙端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent(9000是项目需要开启的端口)
#重启防火墙
systemctl restart firewalld.service
<6>发布一个springboot项目并访问
生成的jar包通过xftps拉取到服务器->
java -jar xx.jar ->
阿里云公网访问
2.解压缩(tomcat -> 部署启动并通过外网访问)
ssm项目就需要打包成war包放在tomcat环境下运行
<1>.下载tomcat,官网下载
apache-tomcat-9.0.22.tar.gz
<2>.解压tomcat文件
tar -zxvf apache-tomcat-9.0.22.tar.gz
<3>.启动tomcat并测试
#执行
./startup.sh
#停止
./shotdown.sh
<4>阿里云配置安全组打开端口
<5>打开防火墙
#查看所有开启的防火墙
firewall-cmd --list-ports(只看端口)
#开启防火墙端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent(9000是项目需要开启的端口)
#重启防火墙
systemctl restart firewalld.service
<6>访问tomcat
通过阿里云公网访问8080端口
<7>域名解析,真正所有人访问
3.yum在线安装(docker -> 直接安装运行跑起来)
<1>检测centos7
[root@userAlex bin]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
<2>安装准备环境
yum-y install 包名
<3>清除以前的版本
yum remove docker
七.shell脚本
1.是什么
shell是一个命令行解释器,接收应用程序/用户命令,然后调用操作系统内核
2.为什么用
执行命令可以在linux后台输一行执行一行,也可以把一串儿命令写到一个文件里面,把文件交给linux执行,这个文件就是脚本文件们,这样就可以实现各种复杂的流程控制
3.怎么用
<1>linux提供的shell解析器
<2>shell脚本编写基本格式
开头第一行
#!bin/bash (指定解析器)
<3>脚本常用执行方式
I.使用子shell进程
在当前环境下打开一个shell子进程,用来执行shell脚本文件
i.方式一
ii.方式二
II.不使用子shell进程
不会用到父子shell的嵌套环境,就是在当前环境下,把shell脚本里的命令每一行拿出来挨个儿执行
source
.
<4>shell编程——变量
4.shell脚本入门helloworld
使用shell脚本,输出一句heloworld
<1>.编写shell脚本
<2>.执行shell脚本
I.方式一
直接通过bash或者sh对脚本文件进行解析,sh本质上就是bash的一个软链接,所以用bash和用sh是一样的
II.方式二
i.不在当前目录下执行脚本文件
不通过解析器,直接输入脚本文件,让它执行
ii.在当前目录下执行脚本文件
III.其他方式
5.shell完整内容
https://juejin.cn/editor/drafts/7135445211978661919