自建私有git进行项目发布

这篇具有很好参考价值的文章主要介绍了自建私有git进行项目发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

更好观感:https://wyqz.top/p/3211658549.html

自建私有git进行博客项目发布

之前尝试过通过建立私有git仓库,来发布自己的hexo静态博客,但是失败了,今天尝试了一下午,算是有了结果。下面记录我的过程。

我的需求:

我有一个服务器,希望在服务器端建一个git仓库,本地部署时会同时往GitHub,服务器多个地方部署,但是主要的访问是通过服务器端的 nginx

即本地 hexo d 命令能够往服务器 git 的进行部署,同时在 github 留有备份。服务器中 nginx 会设置网站根目录为指定的某个目录。

整体思路

本地项目通过git 上传至服务器端建立的 裸仓库gitpush 操作会触发 git 的钩子函数, 钩子函数进入在我们的项目目标目录,执行 pull 操作,将所有的改变拉取到项目目录并合并。

nginx 会将网站根目录设置为项目目录,就可以正常访问了。

服务器端

建议使用有 sudo 权限的用户新建 git 用户,而不是 root 用户。

1 新建一个Git用户

首先需要安装 git ,具体方法根据自己系统搜索进行安装。

sudo useradd git

2 配置访问权限

我们需要无需密码验证登录 git 账户,需要将本机的公钥文件内容 C:\Users\用户名\.ssh\id_rsa.pub 复制到 /home/git/.ssh/authorized_keys 中。

这样就能无密码登录 git 用户,可以使用 ssh -T git@101.35.203.216 命令进行验证。

3 建立裸仓库

选定目录建立裸仓库,我的是 /home/git/blog.git ,在 /home/git 目录下执行命令:

sudo git init --bare blog.git
# 同时还要将仓库所属用户修改为git
sudo chown -R git:git blog.git

裸仓库没有工作区,也就是你根本没法看到上传上来的文件。之后我所有的静态博客文件即 public 目录下的文件都会上传到裸仓库。那如何拿到文件呢?

我采用 git 钩子函数的特性,当有本地有 push 代码到裸仓库的操作时,便自动执行一个脚本,把仓库中的文件拉取到我的项目目录 /home/git/public 中,这样我就可以正常的用 nginx 访问我的博客项目了。

4 添加钩子函数

在裸仓库 /home/git/blog.git/hooks 目录中,新建 post-receive 文件

vim post-receive # 新建文件

输入内容

#!/bin/bash
unset GIT_DIR # 似乎挺重要的,可能与环境变量有关
DIR=/home/git/public # 项目目录
echo "Starting Upadte!" # 调试用的
git config --global --add safe.directory /home/git/public # 中途代码提示建议我添加的,我就加上了
cd $DIR # 进入项目目录
git pull /home/git/blog.git main # 拉取裸仓库并与本地分支合并
echo "Update Sucess!" # 调试用的

其实这里大部分操作和 git 命令和 bash 环境相关,看来还是需要去学习下了。

注意还要将 post-receive 文件所属用户改为 git ,且添加执行权限,不然无权访问。

sudo chown -R git:git post-receive
sudo chmod +x post-receive

5 禁止Git用户登录Shell

编辑 /etc/passwd 文件,找到下面类似内容:

git:x:1009:1009:git daemon user:/:/bin/bash

修改为:

git:x:1009:1009::/home/git:/usr/bin/git-shell

这样 git 用户就无法登录shell了。

6 添加项目目录

在自己想要的地方添加项目目录,我的是 /home/git/public , 在目录中需要进行仓库初始化,因为这个目录之后要执行 pull 操作

git init # 初始化仓库

还要注意,这个项目文件要让 git 用户有权限访问

sudo chown -R git:git /home/git/public # 让git所有

本地客户端

1 本地调试

本地可以新建一个文件夹进行调试。

git init
git remote add origin git@101.35.203.216:/home/git/blog.git
git add .
git commit -m "test"
git push -u origin main

注意调试之后还要让服务器端的项目commit记录为空,因为正式使用时会有 git 记录不一致的情况。

当然如果 git 操作一流,能够处理此种情况,算我没说。

2 博客配置

本地Hexo博客项目配置文件 _config.yml 中我进行了修改:

deploy:
- type: git
  repository:
    github: git@github.com:anda522/anda522.github.io.git
    gitee: git@gitee.com:wyqz/wyqz.git
  branch: master
- type: git
  repository: git@101.35.203.216:/home/git/blog.git
  branch: main

执行 hexo d 命令后,就会将生成的前端文件上传至自建的裸仓库。

注意点

  • 各种权限问题,登录账户为 git ,需要时刻注意某些文件能不能用 git 用户访问
  • git 的各种命令的理解, pull push 等,需要了解
  • bash 的环境变量问题,没有了解过很容易出问题

参考:

  • https://52gvim.com/post/git-server

  • https://blog.csdn.net/Shen_Junxiao/article/details/85245390文章来源地址https://www.toymoban.com/news/detail-771287.html

到了这里,关于自建私有git进行项目发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率

    在发布会签到系统中使用django开发了发布会签到系统, 本文对该系统进行测试。 django.test 是Django框架中的一个模块,提供了用于编写和运行测试的工具和类。 django.test 模块包含了一些用于测试的类和函数,如: TestCase :这是一个基类,用于编写Django测试用例。继承自 unit

    2024年02月10日
    浏览(45)
  • J2EE项目部署与发布(Linux版本)

    目录 一.jdktomcat安装 1.jdk的安装  1.2解压对应的安装包 1.3配置环境变量  2.tomcat的安装  二.mysql的安装 三.后端接口部署  后端部署 导入war包 修改端口  开启访问 1.jdk的安装 登录VMware Workstation Pro 然后连接MobaXterm      将 jdk tomcat mysql 导入到MobaXterm   1.2解压对应的安装包  

    2024年02月06日
    浏览(34)
  • 【Linux】虚拟机部署与发布J2EE项目(Linux版本)

    前期准备工作 先创建一个文件夹用于存放我们的文件,把需要用到的环境都拷进去 1.jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 2.配置环境变量 进入path文件进行编辑 vim /etc/profile 输入配置jdk文件代码(JAVA_HOME后面填写自己所解压的JDK路径) export JAVA_HOME=/root/java/tools/jdk1.8.0_151 export JRE_

    2024年02月06日
    浏览(39)
  • 虚拟机部署与发布J2EE项目(Linux版本)

                                                      🎬 艳艳耶✌️:个人主页                                                   🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》                                                     ⛺️ 越努力 ,越幸

    2024年02月06日
    浏览(45)
  • 【Linux】虚拟机部署与发布J2EE项目(Windows版本)

    跨平台性:Java虚拟机(JVM)提供了一个中间层,使得Java应用程序可以在不同的操作系统上运行,无需进行代码修改。这意味着您可以使用一套Java代码,在不同的硬件和操作系统上部署和运行应用程序。 安全性:Java虚拟机提供了安全管理机制,可以对Java应用程序的执行过程

    2024年02月08日
    浏览(34)
  • 如何在linux上使用docker发布.net6.0的webApi项目

    打开vs2022,创建一个新的webapi项目。 默认选项,一直下一步就ok。注意框架要使用.net6.0,不要选择.netframework(不支持跨平台)。 创建完后,已经生成完整的示例代码了,这个项目是可以直接运行的。这里我们在Program.cs文件中,稍作修改,在最后一行Run方法指定api的端口号,

    2024年02月11日
    浏览(54)
  • J2EE项目部署与发布(Linux版本)->jdk&tomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署

    jdktomcat安装 MySQL安装 后端接口部署 linux单体项目前端部署 1.jdktomcat安装 上传jdk、tomcat安装包 解压两个工具包 #解压tomcat tar -zxvf apache-tomcat-8.5.20.tar.gz #解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置并且测试jdk安装 #配置环境变量 vim /etc/profile #java environment export JAVA_HOME=/javaxl/softwar

    2024年02月06日
    浏览(39)
  • SpringBoot+Vue前后端分离项目在Linux系统中基于Docker打包发布,并上传镜像到阿里镜像私仓

    将打好的jar包放到咱们opt目录下的自定义文件夹内 打包成功后 –rm 代表退出之后,容器移动删除 可以看到成功启动了服务 阿里云免费私仓 创建好自己的镜像仓库后会显示操作指南 身份登录 将镜像推送到Registry 可以在镜像仓库中进行查看 拉取镜像 default.conf 1.root:设置静态

    2024年04月17日
    浏览(81)
  • [Nginx 发布项目] 打包后的项目,使用nginx发布

    前提 :使用的 mars3d 沐瑶大佬 修改后的nginx ,  -   下载地址 使用的是 Mars3D三维可视化平台 | 火星科技 修改后的 nginx 发布的服务,确保nginx发布服务时正常 ; 如果不是,那这里应该没有你想要的答案; 1、直接替换 html 1.1 直接将打包的文件,例如 :dist下的文件,直接拷

    2024年02月06日
    浏览(46)
  • 项目发布部署:如何发布.NETCore项目到IIS服务器?

    前言:本文将详细介绍如何发布.NET Core项目到IIS服务器。首先,第一步需要安装IIS,介绍了在本地电脑和服务器中进行安装。然后需要安装SDK和运行时才能发布.NETCore项目。其次介绍了如何发布.NETCore项目和Vue项目,并配置IIS。最后介绍了如何将项目部署到Service服务中。 (

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包