一、Git
1.1 Git简介与安装
- Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git仓库分为两种:
本地仓库:开发人员自己电脑上的Git仓库
远程仓库:远程服务器上的Git仓库
commit
:提交,将本地文件和版本信息保存到本地仓库
push
:推送,将本地仓库文件和版本信息上传到远程仓库
pull
:拉取,将远程仓库文件和版本信息下载到本地仓库 - 安装:Git官网下载地址,安装完在任意目录下右键显示Git GUI Here(Git图形界面)和Git Bash Here(Git命令行)即安装成功。
1.2 Git代码托管服务
- 常见Git代码托管服务
(1)GitHub(地址: https://github.com/ ),是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
(2)码云(地址: https://gitee.com/ ),是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快。
(3)GitLab(地址: https://about.gitlab.com/ ),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
(4)BitBucket(地址: https://bitbucket.org/ ),是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户。 - 使用码云创建新的仓库
1.3 Git常用命令
- Git全局设置:设置用户名称和Email地址,在Git命令行中执行以下命令
(1) 设置用户信息(name和email只是一个标识,非必须是账号) git config --global user.name "superm" git config --global user.email "[email protected]" (2) 查看配置信息 git config --list
- 获取Git仓库
(1)在本地初始化一个Git仓库:在任意空目录下右键打开Git Bash,执行命令git init,即可创建一个**.git隐藏文件夹**。
(2)从远程仓库克隆:git clone
https://gitee.com/superm_chao/superm-git-practice.git - 工作区、暂存区、版本库
(1)版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等。
(2)工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码。
(3)暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage,暂存区是一个临时保存修改文件的地方。
- Git工作区文件的状态
(1)untracked:未跟踪(未被纳入版本控制)
(2)tracked:已跟踪(被纳入版本控制),Unmodified(未修改状态);Modified(已修改状态);Staged(已暂存状态) - 本地仓库操作
(1)git status
:查看文件状态
(2)git add
:将文件的修改加入暂存区(git add test.java)
(3)git reset
:将暂存区的文件取消暂存(git reset test.java)或者是切换到指定版本(git reset --hard 版本号)
(4)git commit
:将暂存区的文件修改提交到版本库(git commit -m “提交了一个test.java文件” test.java)
(5)git log
:查看日志,可以看出版本号 - 远程仓库操作
(1)git remote
:查看远程仓库(git remote -v)
(2)git remote add
:添加远程仓库(git remote add 远程仓库别名 远程仓库URL地址),将本地仓库与远程仓库进行关联
(3)git clone
:从远程仓库克隆(git clone 远程仓库URL地址)
(4)git pull
:从远程仓库拉取(git pull 远程仓库别名 分支名),对于本地初始化的仓库拉取需要加–allow-unrelated-histories
(5)git push
:推送到远程仓库(git push 远程仓库别名 分支名),第一次需要进行身份认证(码云的账号和密码) - 分支操作
分支可以把工作从开发主线上分离开来,同一仓库可以有多个分支,各个分支相互独立,互不干扰。
(1)git branch
:查看分支,git branch(查看本地分支);git branch -r(查看远程分支);git branch -a(查看所有分支)
(2)git branch [name]
:创建名为name的分支,会继承分支的所有内容,可以git rm -rf . 删
(3)git checkout [name]
:切换为name的分支
(4)git push [short-name] [name]
:推送至别名为short-name(一般为origin)远程仓库的name分支
(5)git merge [name]
:合并分支,若两分支存在同名且内容不同的文件,则会出错,需手动处理合并问题 - 标签操作
Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态(静态的)。
(1)git tag
:列出已有的标签
(2)git tag [name]
:创建名为name的标签
(3)git push [short-name] [name]
:将名为name的标签推送至别名为short-name的远程仓库
(4)git checkout -b [branch] [name]
:检出name标签到新的分支branch上
1.3 IDEA中使用Git
- 在IDEA中配置Git
File->Settings->Version Control->Git->Path to Git executable:选择git安装后位于bin文件夹下的git.exe文件,点击右侧Test按钮进行测试是否成功。 - 获取Git仓库
(1)本地初始化仓库:VCS->Create Git Repository,选择Git工作区目录即可。
(2)从远程仓库克隆:VCS->Get from Version Control…,输入URL和选择要克隆到的文件路径,点击clone即可 - .gitignore文件
.gitignore文件可以指定忽略对哪些文件的Git托管 - 本地仓库操作
(1)将文件加入暂存区:选中文件->右键->Git->Add,文件由红色变为绿色。
(2)将暂存区的文件提交到版本库:选中文件->右键->Git->Commit File…,选择要提交的文件,并填写提交注释,点击Commit提交即可,提交后文件会由绿色变为黑色。或直接选择文件夹->右键->Git->Commit Directory…。或直接点击下面绿色对勾即可(不需要add放入暂存区也可以直接提交)。
(3)查看日志:点击下方的git栏即可查看,或选中文件->右键->Git->Show History - 远程仓库操作
(1)添加与查看远程仓库:选中任意文件->右键->Git->Manage Remotes…,即可添加与查看远程仓库,一个本地仓库可以对应多个远程仓库。
(2)推送至远程仓库:选中任意文件->右键->Git->Push,选择要推送的库与分支,点击Push即可。或直接点击下面绿色斜向上箭头即可(前提是在本地存在提交)。或在提交的时候点击Commit and Push按钮即可同时实现提交和推送。
(3)从远程仓库拉取:选中文件->右键->Git->Pull。或直接点击下面蓝色斜向下箭头即可拉取。
- 分支操作
在右下角进行一系列分支操作(创建、切换、合并、查看)。 - 标签操作
项目右键->Git->New Tag,写明Tag Name,再右键->Git->Push(勾选左下角Push Tags)即可。
1.4 Git代码冲突
当本地文件的版本与目标分支中文件的版本不一致时,当存在同一行的内容不同时在进行合并时会出现冲突。
- IDEA图形界面解决合并时的冲突,Merge->修改并Apply->Push。
- 手动解决,修改合并冲突后的内容,Add到暂存区,Commit文件,Push到远程仓库即可。
- 先拉取后Push。
二、Linux
2.1 Linux简介与安装
- Linux特点:免费、开源、多用户、多任务,安全、稳定,常用于服务器操作系统。
- Linux系统的安装方法
(1)物理机安装:直接将操作系统安装到服务器硬件上
(2)虚拟机安装:通过虚拟机软件安装,虚拟机( Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件VMware。 - 虚拟机安装CentOS发行版Linux系统
(1)安装VMware虚拟机
(2)下载CentOS7镜像http://mirrors.ustc.edu.cn/centos/7.9.2009/isos/x86_64/
(3)在VMware创建新的虚拟机并设置镜像路径
(4)网卡设置:由于启动服务器时未加载网卡,导致IP地址初始化失败,如果输入ip addr命令没有显示ip地址,则需要修改网络初始化配置,设定网卡在系统启动时初始化:(1) 编辑ifcfg-ens33文件 cd /etc/sysconfig/network-scripts vi ifcfg-ens33 (2) 按I进入编辑状态 (3) 移动光标修改ONBOOT=yes (4) 按Esc后输入:wq再按Enter保存并退出 (5) 重启虚拟机客户端
- 安装SSH连接工具
SSH(Secure Shell),建立在应用层基础上的安全协议,通过SSH连接工具就可以实现从本地连接到远程的Linux服务器,常用的SSH连接工具:FinalShell官网下载、Xshell(配合Xftp使用)。
2.2 Linux常用命令
2.2.1 Linux命令
- Linux命令使用技巧
(1)Tab键实现自动补全
(2)连续两次Tab键,给出操作提示
(3)使用上下箭头快速调出使用过的命令
(4)使用clear命令或Ctrl+L快捷键实现清屏 - Linux命令格式
2.2.2 文件目录操作命令
ls
:显示指定目录下的内容,语法:ls [-a|-l|-al] [dir]
(1)-a:显示所有文件及目录(.开头的隐藏文件也会列出)
(2)-l:除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出。ll
命令等同于ls -l
(3)-al:上边两种选项的结合cd
:切换当前工作目录,即进入指定目录,语法:cd [dirName]
(1)~
:表示当前用户的home目录
(2).
:表示目前所在的目录
(3)..
:表示目前目录位置的上级目录cat
:用于显示文件内容,语法:cat [-n] fileName
,-n用于显示行号more
:以分页的形式显示文件内容,语法:more fileName
(1)回车键:向下滚动一行
(2)空格键:向下滚动一屏
(3)B:返回上一屏
(4)q或Ctrl+C:退出moretail
:查看文件末尾的内容,语法:tail [-f] fileName
(1)-number:默认查看末尾10行,可以通过-20查看末尾20行
(2)-f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出mkdir
:创建目录,语法:mkdir [-p] dirName
,-p用于多层目录同时创建rmdir
:删除空目录,语法:rmdir [-p] dirName
,-p用于多层空目录的删除rm
:删除文件或者目录,语法:rm [-r|-f] name
(1)-r:将目录及目录中所有文件(目录)逐一删除,即递归删除
(2)-f:无需确认,直接删除
(3)-rf:上边两种选项的结合pwd
:查看当前所在目录touch
:如果文件不存在,新建文件,语法:touch fileName
2.2.3 拷贝移动命令
cp
:用于复制文件或目录,语法:cp [-r] source dest
,-r在复制目录时必须使用此选项mv
:为文件或目录改名、或将文件或目录移动到其它位置,语法:mv source dest
2.2.4 打包压缩命令
tar
:对文件进行打包、解包、压缩、解压,语法:tar [-z|-c|-x|-v|-f] fileName [files]
,包文件后缀为.tar
表示只是完成了打包,并没有压缩;包文件后缀为.tar.gz
表示打包的同时还进行了压缩。
(1)-z:z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
(2)-c:c代表的是create,即创建新的包文件,打包
(3)-x:x代表的是extract,实现从包文件中还原文件,解包
(4)-v:v代表的是verbose,显示命令的执行过程
(5)-f:f代表的是file,用于指定包文件的名称
(6)-cvf
:tar -cvf test.tar test ,将test打包成test.tar,且显示执行过程
(7)xvf
:tar -xvf test.tar ,将test解包,且显示执行过程
(8)-zcvf
:tar -zcvf test.tar.gz test ,将test打包并压缩成test.tar.gz,且显示执行过程
(9)-zxvf
:tar -zxvf test.tat.gz -C /,将test.tat.gz解压并解包到指定目录,且显示执行过程
2.2.5 文本编辑命令
vi/vim
:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,语法:vi/vim fileName
,vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。通过yum install vim
对vim进行安装。- 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件,如果指定的文件不存在则新建文件。
- vim在进行文本编辑时共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。
- 命令模式:命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G),通过vim命令打开文件后,默认进入命令模式,另外两种模式需要首先进入命令模式,才能进入彼此。
- 插入模式:插入模式下可以对文件内容进行编辑,在命令模式下按
[I,A,O]
任意一个,就可以进行插入模式,下方会出现insert字样,在插入模式下按Esc
键,回到命令模式。 - 底行模式:底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作,在命令模式下按
[:,/]
任意一个,可以进入底行模式,通过/
方式进入底行模式后,可以对文件内容进行查找;通过:
方式进入底行模式后,可以输入wq
(保存并退出)、q!
(不保存退出)、set nu
(显示行号)。
2.2.6 查找命令
find
:在指定目录下查找文件,语法:find dirName -name fileName
,fileName可以使用通配符*grep
:从指定文件中查找指定的文本内容,语法:grep word fileName
,word指的是要查找的文本内容(区分大小写),fileName可以使用通配符*
2.2.7 防火墙操作
- 查看防火墙状态:systemctl status firewalld、firewall-cmd --state
- 暂时关闭防火墙:systemctl stop firewalld
- 永久关闭防火墙:systemctl disable firewalld
- 开启防火墙:systemctl start firewalld
- 开放指定端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 关闭指定端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent
- 立即生效:firewall-cmd --reload
- 查看开放的端口:firewall-cmd --zone=public --list-ports
systemctl
是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
firewall-cmd
是Linux中专门用于控制防火墙的命令
2.3 软件安装
- 软件安装方式
(1)二进制发布包安装:软件已经针对具体平台编译打包发布,只要解压,修改配置即可。
(2)rpm安装:软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题。
(3)yum安装:一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题。
(4)源码编译安装:软件以源码工程的形式发布,需要自己编译打包。 - 安装JDK
(1)下载Linux版的JDK,Linux版JDK17,并使用FinalShell自带的上传工具将JDK的二进制发布包上传到Linux.
(2)解压安装包,命令:tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local
(3)配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入配置:JAVA_HOME=/usr/local/jdk-17.0.7
PATH=$JAVA_HOME/bin:$PATH
(4)重新加载profile文件,使更改的配置立即生效,命令:source /etc/profile
(5)检查安装是否成功,命令为java -version
- 安装Tomcat
(1)下载Tomcat二进制发布包Tomcat9,并上传到Linux
(2)解压安装包,命令:tar -zxvf apache-tomcat-9.0.75.tar.gz -C /usr/local
(3)进入Tomcat的bin目录启动服务,命令:sh startup.sh
或./startup.sh
,要关闭防火墙或开放指定端口才可以使用Tomcat服务器
(4)查看启动日志:more /usr/local/apache-tomcat-9.0.75/logs/catalina.out 或 tail -50 /usr/local/apache-tomcat-9.0.75/logs/catalina.out
(5)ps -ef
:查看当前运行的所有进程的详细信息,可以配合|
管道符(将前一个命令的结果输出给后一个命令作为输入)查看特定进程,如ps -ef | grep tomcat
,就可以查看有关tomcat的进程信息。
(6)进入Tomcat的bin目录停止服务,命令:sh shutdown.sh
或./shutdown.sh
(7)kill -9
:强制结束进程,后根进程id - 安装MySQL
(1)检测当前系统中是否安装MySQL数据库,RPM(Red-Hat Package Manager),是红帽Linux用于管理和安装软件的工具。
rpm -qa
:查询当前系统中安装的所有软件
rpm -qa | grep mysql
:查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb
:查询当前系统中安装的名称带mariadb的软件,CentOS7自带mariadb,与MySQL数据库冲突
(2)卸载已安装的冲突软件
rpm -e --nodeps 软件名称
(3)下载MySQL的rpm安装包MySQL官网下载,选择对应操作系统,后缀为.rpm-bundle.tar文件,上传到Linux
(4)在/usr/loacl中创建新的目录mkdir mysql,tar -xvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql
(5)进入/usr/local/mysql,强制安装:rpm -ivh *.rpm --nodeps --force,通过yum update升级现有软件以及系统内核,或yum install安装指定的工具。
(6)启动MySQL
systemctl status mysqld
:查看mysql服务状态
systemctl start mysqld
:启动mysql服务,同样要关闭防火墙或开启指定端口才能访问
systemctl enable mysqld
:开机启动mysql服务
netstat -tunlp
:查看已经启动的服务,可以netstat -tunlp | grep mysql,前提已经yum install net-tools安装net-tools工具
(7)查看MySQL临时密码:cat /var/log/mysqld.log | grep password
(8)登录MySQL,修改密码,开放访问权限mysql -uroot -p #登录mysql alter user 'root'@'localhost' identified by 'Superm_chao34'; # 先设置一个复杂的密码 set global validate_password.length=4; # 设置密码长度最低位数 set global validate_password.policy=LOW; # 设置密码安全等级低 alter user 'root'@'localhost' identified by '123456'; # 设置密码为123456 select user,host from mysql.user; # 查看用户和主机 rename user 'root'@'localhost' to 'root'@'%'; # 更改为远程也可以访问
- 安装lrzsz
Yum(全称为Yellow dog Updater,,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
(1)搜索lrzsz安装包,命令为yum list
lrzsz
(2)yum在线安装,命令为yum install
lrzsz
(3)使用命令rz
即可用于从Windows向Linux上传文件
2.4 项目部署
- 手动部署项目
(1)将SpringBoot项目打包成jar包,并上传到Linux中。
(2)java -jar boot工程.jar:启动项目(需要开启指定的端口,防火墙)
(3)后台运行java -jar命令,并将日志输出到某文件:nohup java -jar boot工程.jar &> boot.log &
(4)停止项目:kill杀死进程 - Shell脚本自动部署
(1)在Linux中安装Git:yum list git ,yum install git
(2)使用Git克隆代码(先转到指定目录):git clone 仓库的url
(3)在Linux中安装Maven,将Maven安装包上传并解压Maven3.9二进制压缩包:tar -zxvf apache-maven-3.9.2-bin.tar.gz -C /usr/local
(4)编写Shell脚本(拉取代码、编译、打包、启动)(1) vim /etc/profile # 修改配置文件,加入以下内容 export MAVEN_HOME=/usr/local/apache-maven-3.9.2 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH (2) source /etc/profile # 重新加载配置文件 (3) mvn -version # 查看Maven版本 (4) vim /usr/local/apache-maven-3.9.2/conf/settings.xml # 修改本地仓库,先创建repo目录 <localRepository>/usr/local/repo</localRepository>
#!/usr/local/sh/reggie.sh echo ================================= echo 自动化部署脚本启动 echo ====