Git基础使用
前日补充 + cdn简单了解
java端口服务说明
- 8080
- 提供http服务
- 8005
- 关闭服务
- 8009
- 接受其他服务器请求内容
- 8443
- 如果8080接受到的是https请求,就会转发给8443
cdn(内容分发网络)
解决什么问题
客户端离服务器远导致卡
服务程序(软件包)
- varnish简述
- varnish是一款高性能的开源HTTP加速器,可以有效降低web服务器的负载,提升访问速度
- varnish是一个cache型存储服务
- varnish特点
- 基于内存缓存,重启后数据消失
- 利用虚拟内存方式,I/O性能好
- 支持设置0~60秒内的精确缓存时间(小数点后吗?)
- VCL配置管理比较灵活
- 32位机器上缓存文件大小为最大2G
- 具有强大的管理功能,例如top,stat,admin,list
- 状态机设计巧妙,结构清晰 (状态机…之前还是图形学时候听过这个)
- 利用二叉堆管理缓存文件,达到积极删除目的
- varnish过程
- 客户端的请求将被首先被varnish接受。varnish将分析接收的请求,并将其转发到后端的web服务器上,后端的web服务器对请求进行常规的处理,并将依次处理结果返回给varnish
- varnish核心功能
- 将后端web服务器返回的结果缓存起来,如果发现后续有相同的请求,varnish将不会将这个请求转发到web服务器上,而是返回缓存中的结果。这样来降低web服务器的负载,提升响应速度,并且每秒可以响应更多的请求。 (6081端口)缓存监听端口
- 处理缓存顺序
- 接收到请求 – 分析请求(URL 数据首部) – hash计算 – 查找缓存 – 新鲜度检测 – 访问源— 缓存 – 建立响应报文 – 响应并记录日志
简单模拟过程
- 一台2.100提供http服务 一台2.5加速
#2.100
yum -y install httpd
systemctl restart httpd
systemctl stop firewalld #关闭防火墙测试
ss -nutlp | grep httpd #查看是否正常启动
#2.5
curl http://192.168.2.100 #简单测试下
httpd_web1 192.168.2.100 #没啥问题
yum -y install gcc readline-devel pcre-devel python-docutils #varnish源码编译前置
#搞到varnish源码包 cd到目录下
./configure --prefix=/usr/local/varnish
make
make install
ls /usr/local/varnish
bin include lib sbin share var #六个目录
useradd -s /sbin/nologin varnish #创建相对应服务的没有登录权限的用户支持服务运行
cp etc/example.vcl /usr/local/etc/default.vcl #复制配置文件模板到/usr/local/etc下
#不要问这是啥 网上找的模板配置文件
vim /usr/local/etc/default.vcl
===============================
vcl 4.0;
backend default {
.host = "192.168.2.100"; #修改提供服务的是192.168.2.100
.port = "80"; #修改提供服务的机子端口为80
}
sub vcl_recv {}
sub vcl_backend_response{}
sub vcl_deliver{}
=================================
cd /usr/local/varnish #到安装目录下
sbin/varnishd -f /usr/local/etc/default.vcl #启动sbin下的varnishd -f指定配置文件
curl 192.168.2.5
httpd_web1 192.168.2.100 #访问2.5获得了2.100的服务
ss -nutlp | grep 80
tcp LISTEN 0 128 *:80 *:* users:(("cache- main",pid=12801,fd=5),("varnishd",pid=12791,fd=5))
tcp LISTEN 0 128 :::80 :::* users:(("cache- main",pid=12801,fd=6),("varnishd",pid=12791,fd=6))
#查看下80端口 发现被varnish端口给占了
#为什么访问呢2.5的80端口返回的是2.100的http服务呢 请看上方varnish过程~~~
Git
git官方文档地址https://git-scm.com/book/zh/v2/
Git特点
- 基于快照,而非差异比较
- 基本在本地就可完成全部操作
- Git保证完整性,Git中所有的数据在存储前都计算校验和,然后以校验和来引用,所以能够发现传送过程中丢失信息或损坏文件的情况
- Git一般只添加 (分支结构记录,好像某种程度上不需要删除了)
Git三种状态
- 已修改(modified) 对应工作目录
- 已暂存(staged) 对应暂存区
- 已提交(committed) 对应本地仓库
Git基本操作(Linux)
#2.100 作为远程服务器
mkdir /var/lib/git #创建仓库目录
yum -y install git #安装git软件包
git init /var/lib/git/project --bare
#2.200
git clone root@192.168.2.100:/var/lib/git/project #下载代码仓库到本地
git config --global user.email "you@example.com"
git config --global user.name "Your Name" #配置用户信息能够提交到本地仓库
git config --global push.default simple #配置基本信息能够提交到远程服务器
cd project
echo "web2_01" > web2_01.txt
git status #查看各区域当前状态
git add web2_01.txt #将工作目录中新添加的文件提交到暂存区
git add . #将所有新添加的文件提交到暂存区
git commit -m "web2_01.txt" #将工作目录新增文件提交到本地仓库 -m注释
git push #提交到远程服务器
git log #查看日志内容
git log --pretty=oneline #精简模式查看
ef30b7a052a5137f22ce02bc601d4b9fb934db47 web2_01.txt #加密数据 + 文件名
git log --online #查看最精简模式查看
ef30b7a web2_01.txt
git reflog #查看本机操作记录
echo “web2_02” > web2_02.txt
git add .
git commit
git push
echo "hh" > 1.txt
git add .
git commit
git push
git reflog
fd69158 HEAD@{1}: commit: 1.txt
1ec38ff HEAD@{2}: commit: web2_02.txt
ef30b7a HEAD@{3}: commit (initial): web2_01.txt
#head指针
#想返回到上一个的状态
git reset 1ec38 --hard # 1ec38不用打全 --hard 强制回去
ls
web2_02.txt web2_01.txt #1.txt没了
git reflog
1ec38ff HEAD@{0}: reset: moving to 1ec38
fd69158 HEAD@{1}: commit: 1.txt
1ec38ff HEAD@{2}: commit: web2_02.txt
ef30b7a HEAD@{3}: commit (initial): web2_01.txt
###删除
git rm web2_02.txt #删除
ls
web2_01.txt #真删了
git add .
git commit -m "d2"
git log --oneline #最精简模式查看下
5f09d1d d2
1ec38ff web2_02.txt #还在啊
ef30b7a web2_01.txt
git reflog
5f09d1d HEAD@{0}: commit: d2
1ec38ff HEAD@{1}: reset: moving to 1ec38
fd69158 HEAD@{2}: commit: 1.txt
1ec38ff HEAD@{3}: commit: web2_02.txt
ef30b7a HEAD@{4}: commit (initial): web2_01.txt
git reset fd69158 --hard #回到过去
ls
1.txt web2_01.txt web2_02.txt #都回来了
Git分支案例
192.168.2.100远程仓库 2.200本地
#2.100
git init /usr/local/git/project --bare
#2.200
git clone 192.168.2.100:/var/lib/git/project
cd project #到工作目录
cat << EOF > README #写入东西到README中
> 2020_12_16
> 项目名称:XXXXX
> 项目工程师:XXXXXXX
> EOF
git add . #将工作目录新增的提交(专业点叫跟踪)到暂存区
git commit -m "第一次提交" #将暂存区提交到本地仓库
git push #推送本地仓库到远端服务器(2.100)
git branch #查看分支
* master #当前处于主分支
git branch my_branch #创建一个叫my_branch的分支
git branch #再看看
* master
my_branch #分支变多了 现在处于主分支
git checkout my_branch #切换到my_branch分支
git branch #在看看
master
* my_branch #现在处于my_branch 注意*
echo "i am my_branch" > 1.txt #在my_branch中创建1.txt
git add .
git commit -m "my_branch first change" #提交到本地仓库
git push --set-upstream my_branch #远程没有这个分支,需要告诉他创建my_branch分支才能推送
touch 2.txt #创建个2.txt
ls #先看下当前目录的东西
1.txt 2.txt README
git checkout master #切换回主分支
ls #再看下当前目录 发现在my_branch分支创建的1.txt不见了 2.txt却在
2.txt README
git add 2.txt
git commit -m "master my_second change" #在主分支中推送到本地仓库
git checkout my_branch #回去之前的分支
ls #2.txt不见了
1.txt README
#总结
#在不推送到本地仓库的文件不管是在暂存区还是在工作目录 都是被共享的 但是被某个分支提交到本地仓库 那么其他分支就看不见这个文件了 想看见就只能合并分支了
git checkout master #回到主分支
git merge my_branch #当前处于主分支 合并my_branch分支
ls #查看下 三个文件都出现在主分支中了
1.txt 2.txt README
git branch #查看分支情况
* master
my_branch #合并的分支还在 内容‘复制’一份到主分支去了 里面还是1.txt README
#git checkout 除了切换分支外还能够将工作目录中修改的文件返回到暂存区的状态(前提是之前保存到暂存区过)
Git基本命令
命令 | 说明 |
---|---|
git help | 查看帮助手册 |
git help config | 查看git config命令手册 |
git clone | 克隆一个远程仓库 自动添加远程仓库并以"origin"为简写 |
git status | 查看当前目录状态 |
git add | 添加到暂存区 |
git commit -m -a --amend | 添加到本地仓库 m注释 a 跳过暂存区 amend覆盖上一次操作(服务端只会看见一次提交) |
git push | 推送本地仓库到远程服务器 |
git log | 查看日志 |
git log --pretty=oneline | 精简模式查看 |
git log --oneline | 最精简模式查看 |
git reflog | 查看本机操作记录 |
git config --list | 查看git当前能找到的配置 |
git reset --hard | 回到之前的某一个时间节点 hard 强制 |
git pull | 从远程服务器更新本地仓库 |
git rm --cached | 从暂存区移除连带工作目录 cached 工作目录不删除 |
git mv old new | 重命名文件 mv old new + git rm old + git add new 三合一操作 |
git branch | 不加参数 显示分支情况 加参数创建名字为参数的分支 |
git checkout | 还原某个修改的文件到暂存区状态 git status下可以看到提示 或者 切换分支 |
git merge | 合并分支 |
git remote -v | 显示当前机子克隆的仓库 v简写模式 |
git fetch | 从远程仓库抓取你没有的数据 但是不会自动合并和修改你当前的工作 |
git remote rename | 修改一个远程仓库的简写名 如 git remote rename pb paul 分支的全面也会修改 如 pb/master会变成paul/master |