程序员如何用git服务器应对鼠标外壳包浆?

文章讲述了如何通过在服务器上安装Git,创建特定用户,设置SSH密钥授权,以及编写post-receive钩子脚本来实现代码的自动打包和解压到指定目录,从而实现无痛远程部署。这种方法避免了传统FTP工具的使用,提高了安全性与效率。
摘要由CSDN通过智能技术生成

为什么鼓捣这个呢?这还得从几年前说起。

几年前刚入行的时候花了几个星期的泡面钱买了个flashFXP,后来一直用这个上传,用了几年用习惯了倒也么什么。后来虽然没有摆脱贫困,倒也从每月给父母的养老钱里克扣了几个月终于卡了几百块买了个鼠标。

毕竟鼠标是从父母养老钱里卡出来的,用了一段时间后逐渐心疼鼠标外壳的包浆和逐渐松动的鼠标滚轮。

后来在同行那里get了下面的办法

老传统了:开始前假设已经嫖或者白嫖了一个服务器。。服务器已经能连ssh。。

我这里搞来的服务器是debian

第一步安装git。

apt-get install git

第二步创建一个git用户。

这里的git用户作用主要是限制git运行权限,所以账户名随意。所以名字阿猫阿狗随意,所以我起名阿狗,如下↓↓↓

adduser agou

看到shell窗口有下面的输出后直接敲两次密码

Adding user `agou' ...
Adding new group `agou' (1000) ...
Adding new user `agou' (1000) with group `agou' ...
Creating home directory `/home/agou' ...
Copying files from `/etc/skel' ...
New password: 

这个账号不需要其他任何操作所以先晾着走第三步

给这个阿狗账号创建一个只有它能和root能访问的路(gou)径(wo)。

然后初始化一个空仓库。注意仓库的用户权限必须有这个阿狗。

不出意外的话执行下面这几条就可以了,路径随意,简短一点就很好。

mkdir /git

git init --bare testgit.git

chown -R agou:agou /git

不出意外的话git地址就出来了

agou@ip:/git/testgit.git

先记住这个地址。后面还要给这个仓库做点骚操作。

然后给这个账号弄一个ssh秘钥访问。

下面这个文件名你就要认真了,不然你就只能每次上传按密码。

mkdir /home/agou/.ssh

touch /home/agou/.ssh/authorized_keys

然后把你本地的ssh公钥贴在个文件里面,一条占一行

如果你没有在本地创建过ssh秘钥的话(晕),看下面。 引号里的内容可以随意替换。可以是邮箱也可以是其他。作用只是为了方便区分。第一行之后密码随意。或者疯狂敲回车跳过密码

ssh-keygen -t ed25519 -C "agouOnlyKey"

查看公钥

cat ~/.ssh/id_ed25519.pub

执行cat后的结果就是你以后所以骚操作需要用到的公钥了。整个复制贴进authorized_keys

这里服务器的基本配置就已经完成。

在本地项目根目录同样初始化git

git init

git remote set-url origin agou@你的ip:/git/testgit.git

或者直接clone服务器上刚才弄的仓库

git clone agou@你的ip:/git/testgit.git

测试上传

git add .

git commit -m '骚操作'

git push origin

正常情况下,能clone这步就没什么问题。

如果出现Enter passphrase for key '/home/xxx/.ssh/id_ed25519': 这样的字样输入创建sshkey的时候输入的密码就可以了。

git在上传后默认情况下是没有代码在路径下的。所以我们要在服务器上的仓库中继续骚操作

在/git/testgit.git/hooks/创建一个名为post-receive的可执行文件,

touch /git/testgit.git/hooks/post-receive

chomd +x /git/testgit.git/hooks/post-receive

文件内容如下

#!/bin/bash

git archive --format zip -o /git/testgit.git/$(git log --pretty=format:"%h" -1).zip HEAD
unzip -o $(git log --pretty=format:"%h" -1).zip -d /var/www/或者其他路径
rm $(git log --pretty=format:"%h" -1).zip

上面是bash文件是在git每次提交修改以后自动把仓库里的代码提取打包然后解压到指定目录并覆盖,完成后删除压缩包。

如果git push出现一堆error 请给解压目标目录添加阿狗账户权限

git hook可以存放git各个流程的命令

hooks里面有各个流程的sample文件。

以上内容纯粹本人现在摸着日渐接近本人发型的键盘帽有感而发。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值