Linux的基本使用
下载虚拟机VMware Workstation或者[Windows Terminal]
官方下载:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
安装CentOS
-
在windows解压
-
在VMware 中打开解压后的.vmx文件
-
虚拟网络设置(将默认的桥接模式改为NAT模式)
-
默认的网络配置是桥接模式,直接接入当前的网络环境,如果网络不稳定IP会变
-
NAT,相当于在windowns系统中独立开辟一块新的网络空间,IP地址固定不变,无论是否接入外网,都可以访问CentOS
-
更爱虚拟机设置
-
在centos终端输入:
ifconfig
查看虚拟机IP地址在CentOS中ping 百度(如果能ping通说明配置成功)
-
Linux中的目录结构
在Linux中一切皆文件所有的命令都是对文件的读、写、修改、权限修改
在Linux中根代表:/
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录(呵呵,特权阶级)
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放X window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
Linux的基本命令
红帽命令大全:https://www.linuxcool.com/
-
查看当前目录下的所有文件
ls -la # -a参数查看所有文件,包括隐藏文件;-l参数包括文件的属性和权限,没隐藏文件
-
操作文件及目录
-
系统常用命令
-
压缩解压缩
-
文件权限操作
linux文件权限的描述格式
r 可读权限,w可写权限,x可执行权限(也可以用二进制表示 111 110 100 --> 764)
第1位:文件类型(d 目录,- 普通文件,l 链接文件)
第2-4位:所属用户权限,用u(user)表示
第5-7位:所属组权限,用g(group)表示
第8-10位:其他用户权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示
-
常用快捷键及符号命令
Vim编辑器
vim是Linux系统上内置的一个常用文本编辑器,vim是vi的升级版,比vi跟家强大
基本的vi/vim有三种模式
-
命令模式(Command mode):当启动vim时,便会自动进入命令模式,当在键盘上敲击 iao 时会进入输入模式
在命令模式中查找
/tiger # 在整篇文档中搜索tiger字符串,向下查找 ?tiger # 在整篇文档中搜索tiger字符串,向上查找 * # 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 # # 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 gd # 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上 % # 找到括号的另一半!!
拷贝删除
3yy # 拷贝光标所在的3行 5dd # 删除光标所在5行
-
输入模式(Insert mode):当输入iao后便进入输入模式,在输入模式中可以对文件进行添加修改等操作
-
底线模式(Last line mode):按下键盘ESC后在命令行输入(英文的:),进入底线模式在底线模式可以输入命令
:q # 退出 :wq # 保存退出 :set un # 显示该文本行号 :6 # 跳到数字行
vim按键
-
移动光标
# 移动光标的方法 h 或 向左箭头键(←) # 光标向左移动一个字符 j 或 向下箭头键(↓) # 光标向下移动一个字符 k 或 向上箭头键(↑) # 光标向上移动一个字符 l 或 向右箭头键(→) # 光标向右移动一个字符 5j # 向下移动5行 10l # 向右移动10字符 n(space) # 按下数字n,例如10,然后按下空格,光标会向右移动10个字符
-
底线命令
:! command # 暂时离开vim指令模式,执行command的结果 例如 :!ip a # 临时看一下ip信息,然后可以回到vim :set nu # 显示vim行号 :set nonu # 取消行号
用户管理
? 用户分为超级用户和普通用户(root);Linux系统是多用户、多任务的分时操作系统,系统上的每一个进程都有一个特定的文件,每一个文件都被一个特定的用户所拥有。如果需要使用系统资源,首先必须向系统超级用户申请成为普通用户,然后以普通用户的身份进入系统。超级用户可以对普通用户进行跟踪,并设置他们的访问权限,这样可以保证系统安全
-
查看id
id # 每一个用户都有唯一的id
-
查看用户所有
cat /etc/passwd
-
添加用户
useradd -m username # 创建一个username用户
-
删除用户
userdel -r username # 删除用户名的时候将他的目录页一并删除掉
-
修改用户
usermod
-
切换用户
us # 切换用户 us username # 切换用户 sudo su # 从普通用户切换到root命令
-
设置用户密码
password username # 设置用户密码 --> new password:123456 --> re password:123456
-
锁定账户!
passwd -l [username]
-
查看主机名
hostname # 查看主机名: hostname [name] # 修改主机名(修改后重启生效)
管理用户组
? 每一个用户都属于一个用户组或者多个组每个组的权限都不一样,系统可以对一个用户组中的所有用户进行集中管理;
-
增加一个新的
groupadd 选项 用户组 可以使用的选项有 -g GID 指定新用户组的组标识号(GID)。 -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同 # 例如 groupadd sheep # 此命令向系统中增加了一个新组sheep,新组的组标识号是在当前已有的最大组标识号的基础上加1。 groupadd -g 1010 sheep2 # 此命令向系统中增加了一个新组sheep2,同时指定新组的组标识号是1010
-
删除一个已有用户组
groupdel 用户组 # 例如 groupdel sheep2
-
修改用户组属性
groupmod 选项 用户组 常用的选项有 -g GID 为用户组指定新的组标识号 -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。 -n新用户组 将用户组的名字改为新名字
-
切换组
newgrp root # 将用户切换为root
-
文件查看
cat /etc/passwd
--> cat /etc/passwd --> rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin --> rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin --> chrony:x:991:988::/var/lib/chrony:/sbin/nologin --> radvd:x:75:75:radvd user:/:/sbin/nologin --> qemu:x:107:107:qemu user:/:/sbin/nologin --> ntp:x:38:38::/etc/ntp:/sbin/nologin --> rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin --> nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin --> avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin `用户名:口令(登入密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell` `这个文件的每一行都代表这一个用户,我们可以从这里看出这个用户主目录载哪里,可以看到属于哪一个组` `登入口令:把真正的加密后的用户口令存放到/etc/shadow文件中`
cat /etc/shadow
`这个文件是/etc/shadow文件。有超级用户才拥有该文件读权限,这就保证了用户密码的安全性`
cat /etc/group
`用户组的所有信息都存放在/etc/group文件中`
磁盘管理
-
df :列出文件系统的整体磁盘使用量
df [-ahikHTm] [目录或文件名] 选项与参数 -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统 -k :以 KBytes 的容量显示各文件系统 -m :以 MBytes 的容量显示各文件系统 -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示 -H :以 M=1000K 取代 M=1024K 的进位方式 -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出 -i :不用硬盘容量,而以 inode 的数量来显示
-
du:检查磁盘空间使用量
du [-ahskm] 文件或目录名称 选项与参数 -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已 -h :以人们较易读的容量格式 (G/M) 显示 -s :列出总量而已,而不列出每个各别的目录占用容量 -S :不包括子目录下的总计,与 -s 有点差别 -k :以 KBytes 列出容量显示 -m :以 MBytes 列出容量显示
进程管理
在Linux中,每一个程序都有自己的一个进程,每一个进程都有一个id号
每一个进程都会有一个父进程
进程可以有两种存在方式:前台!后台运行!
一般的话服务都是后台运行的,基本的程序都是前台运行的
命令
-
ps查看当前系统中正在执行的各种进程的信息
-
-a 显示当前终端运行的所有进程信息
-
-u 以用户的信息显示进程
-
-x 显示后台运行进程的参数
# | 在Linux这个叫做管道符 A|B # grep 查找文件中符号条件的字符串 ps -aux|grep
-
-
ps -ef(查看父进程的信息)
# 进程树 pstree -pu -p 显示父id -u 显示用户组
-
结束进程
# 强制结束进程 kill -9 [进程的id]
-
ps -help(查看ps帮助文档)
项目部署
安装Xshell和Xftp
在Windows和Linux中真正控制计算机硬件(CPU、内存、显示器)的只有操作系统内核(Kernel),Windows中图像界面和cmd都是架设在用户和内核之间的桥梁,为了方便用户控制计算机而存在的,为了安全原因,用户不能直接接触内核,因此需要在用户和内核之间增加"命令解释器",这样即简化了用户操作,又能保障内核的安全,在Linux中,这个命令解释器就是"Xshell";
通俗的说Xshell就是能够远程访问并操作Linux系统
而Xftp就是Xshell能联通的基础上将本地文件转递到Linux系统中
Xshell官网:https://xshell.en.softonic.com/
安装JDK
下载JDK官网:https://www.oracle.com/cn/java/technologies/javase-downloads.html
软件包一般分为两种:
包类型 | 是否编译 | 示例 |
---|---|---|
源码包 | 需要编译 | nginx-1.12.1.tar.gz |
二进制包 | 已编译 | mysql-community-common-5.7.12-1.e17.x86_64.rpm |
软件安装一般有三种方式:rpm、解压缩、yum在线安装
安装:
-
Xshell连接CentOS
-
在Linux中创建相应的文件夹
-
在Xshell中打开Xftp将JDK传入CentOS中
由于Centos自带了jdk所有要先卸载CentOS中的JDK
- jvav -version --查看JDK版本
- rpm -qa | grep jdk --检索该系统中带有所有jdk的文件(查看所有jdk文件)
- rpm -e --nodeps [要删除的文件] --删除所有JDK
-
安装JDK
rpm -ivh jdk1.8.0_221-amd64.rpm
-
配置JDK的环境变量
# 打开CentOS环境变量 vim /etc/profile # 打开输入模式 i # 环境变量 JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME # 退出 ESC --> :wq
安装Tomcat
官网下载:http://tomcat.apache.org/
-
Xftp传输Tomcat
-
解压缩
# 解压缩 tar -xvf apache-tomcat-9.0.34.tar.gz
-
在CentOS中启动Tomcat
在Tomcat包bin文件夹中有tomcat启动和关闭的文件子要运行该文件即可
./startup.sh # 运行startup.sh 文件
-
CentOS开放8080端口
# 1、简称防火墙的状态 # 如果为running表示开启,not running表示防火墙关闭,需要开启 firewall-cmd --state # 2、开启防火墙 systemctl start firewalld.service # 3、开发8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 4、重启防火墙 systemctl restart firewalld.service # 5、重新载入配置 firewall-cmd --reload
部署Web应用
使用SSM开发或者是使用原生的Javaweb开需要在Linux中下载安装Tomcat
-
将在Windows中编写好的应用通过Xftp传输到CentOS(文件放在linux系统tomcat文件夹的webapps中)
使用Tomcat部署应用是以war包的方式,通过将war包拖到CentOS中的tomcat的webapps文件夹中
安装MySQL
官网下载:https://dev.mysql.com/downloads/mysql/
-
Xftp传输MySQL
-
解压缩
# 解压缩 tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar
-
删除CentOS自带的mariadb数据库
# 查看是否有mariadb数据库 rpm -qa | grep mariadb # 强制删除该数据库 rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
-
解压后只需要安装4个即可(解压后有多个安装包)
rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm --nodeps --force
-
初始化MySQL
mysqld --initialize
-
授权防火墙
# 启动防火墙 chown mysql:mysql /var/lib/mysql -R; # 在防火墙中启动MySQL服务 systemctl start mysqld.service; # 启动后让数据库可用 systemctl enable mysqld;
-
查看数据库初始化密码(初始化时MySQL会自动随机设置密码)
# 检索/var/log/mysqld.log问价中的关键字password cat /var/log/mysqld.log | grep password
-
登入数据库
mysql -uroot -p password
-
修改密码
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘password‘;
-
开启远程访问(便于Xshell远程连接)
create user ‘root‘@‘%‘ identified with mysql_native_password by ‘root‘; grant all privileges on *.* to ‘root‘@‘%‘ with grant option; flush privileges;
-
开发3306端口(退出MySQL操作)
# 将3306端口加到防火墙中 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新启动防火墙 systemctl restart firewalld.service # 重新加载防火墙 firewall-cmd --reload
-
更改时区(MySQL 安装默认使用美国的时区,北京时间比美国晚 8 小时)
set global time_zone=‘+8:00‘;
-
在windos中连接CentOS数据库测试
部署SpringBoot应用
-
Windows本地部署
-
打包springboot应用
-
如果打包错误原因
在springboot应用中,是以jar包的方式部署的,在jar包的内部集成了Tomcat
在springboot打成jar包时报错可在maven中添加:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.XML</include> <include>**/*.yml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.XML</include> <include>**/*.yml</include> </includes> </resource> </resources> </build>
我在使用cmd部署springboot应用是碰到配置jdk一直报错的情况,可在cmd中输入以下命令
C:\Users\EyE>SET JAVA_HOME=D:\Program Files\jdk-11.0.9.1+1 C:\Users\EyE>SET CLASSPATH=%JAVA_HOME%\lib C:\Users\EyE>SET Path=%JAVA_HOME%\bin C:\Users\EyE>javac
-
-
Linux中部署
-
CentOS系统中安装jdk
-
CentOS系统中安装MySQL
-
将springboot项目在windos环境下打成jar包
-
将jar包通过Xftp传到CentOS中,在CentOS中运行
java -jar xxx.jar
-