git服务器配置 安装git服务器

浅聊git服务器账号配置

在本地环境中利用git进行代码管理,无论是下载、上传还是分支操作,都离不开git服务器账号的配置。本文旨在梳理这一过程,特别是针对公开的github服务器,通过SSH连接方式设置个人账号。

首先,git提供了git config工具进行账号配置,包括本地仓库(--local)、全局用户(--global)和系统级(--system)的设置。本地仓库级别的设置只影响当前项目,全局用户配置影响所有本地仓库,而系统级则适用于所有用户。这些设置均会修改相应的配置文件,如local对应.git/config,global为~/.gitconfig(或Windows下的c:\users\xxx\.gitconfig),system则在Linux下为/etc/gitconfig,Windows下在git安装路径\mingw64\etc\gitconfig。

设置完成后,可以使用git config命令查看不同级别的配置。要查看所有配置,可以使用git config-l,分别查看系统级别、用户级别和仓库级别。此外,还可以通过git config-e进行编辑,--add添加配置,--get获取现有配置,--unset取消配置。

为了更便捷地管理代码,尤其是当需要与他人协作时,SSH方式就显得尤为重要。因为通过SSH,可以直接利用git命令行进行操作,无需每次都输入用户名和密码。以下是SSH密钥的配置步骤:

在本地生成SSH密钥对,私钥(如.id_rsa)用于本地,公钥(.ssh/id_rsa.pub)需要提供给github服务器。生成时,只需按提示操作即可。

登录github账号,将生成的公钥添加到ssh keys设置中,标题自定义,key填写本地生成的公钥。

通过这些步骤,你就可以在本地环境中顺利地使用git服务器账号进行代码管理了。

怎么用git部署

1.下面我们以ubuntu server为例,介绍一下如何使用Git来管理项目代码,并且部署代码的web站点目录。

2. 1.准备工作:

1台拥有SSH权限的服务器(LNMP,git,ssh安装配置)

一台装有git客户端的PC(本文实际在windows下的msysgit操作)

3. LNMP,git,ssh安装配置

#安装LNMP$ wget-c tar zxvf lnmp1.0-full.tar.gz&& cd lnmp1.0-full&&./ubuntu.sh#安装Git ssh$ sudo apt-get install git git-core ssh

windows下安装 msysgit

4. 2.在你的web服务器上建立git裸仓库、编写hooks、导入用户公钥、设置目录权限

在服务器上建立一个用户,这里命名为git,修改git的密码,并禁用shell登录

$ sudo useradd git#修改git的密码$ passwd git#禁用shell登录$ sudo vi/etc/passwd修改git:x:1001:1001:,,,:/home/git:/bin/bash为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

初始化Git仓库,建立git裸仓库,设置hook脚本(web目录需要git用户有权限,否则git的hook脚本将没有办法执行操作)

$ cd/opt$ mkdir git$ cd git$ sudo git init--bare demosite.git#文件夹权限$ sudo chown-R git:git demosite.git$ cd/demosite.git/hooks$ sudo vi post-receive写入以下内容#!/bin/shGIT_WORK_TREE=/home/wwwroot/www.demosite.com git checkout-f#写入权限$ chmod+x post-receive#建立web目录,如果目录不存在,git不会创建目录的$ mkdir/home/wwwroot/www.demosite.com-p# web目录的文件夹权限$ sudo chown-R git:git/home/wwwroot/www.demosite.com

创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

客户端用户证书生成请参考下文。

5. 3.在git客户端生成公钥、导入服务器、coding、add、commit、push

生成公钥,导入服务器

$ ssh-keygen-t rsa-C"your_email@youremail.com"一路回车或者设置密码windows下回提示在哪里生成了密钥windows8下提示在C:\Users\username\.ssh下,linux的话会在~/.ssh下进入目录,打开id_rsa.pub,复制里面的key,添加到上文提到的web服务器的/home/git/.ssh/authorized_keys里。

clone coding add commit push

$ git clone git@serverip:/opt/git/demosite.gitCloning into'demosite'...warning: You appear to have cloned an empty repository.$ cat'hello world!'> index.html$ git add index.html$ git commit-m'first commit'$ git remote add origin ssh://git@serverip:/opt/git/demosite.git$ git push origin master

这里使用公钥来做权限验证,运行git里的hook的脚本权限为git用户的权限,当然你也可以使用自己在server上的用户来进行git操作,前面对于git用户的操作和客户端公钥的生成则可以省略,在git上脚本的执行权限则是你登录用户的权限,相应的origin的设置应该为:

$ git remote add origin ssh://yourusername@serverip:/opt/git/demosite.git

这时候每次push将需要输入密码验证。

忽略某些文件

你可以在你的顶层工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略掉哪些文件,下面是文件内容的示例:

使"git add."和"git commit-a"变得实际可用。

#以'#'开始的行,被视为注释.#忽略掉所有文件名是 foo.txt的文件.foo.txt#忽略所有生成的 html文件,*.html# foo.html是手工维护的,所以例外.!foo.html#忽略所有.o和.a文件.*.[oa]#Eclipse.settings/*.buildpath.project

自建Git 服务器:Gitea 与 Gitlab 部署踩坑经历与对比总结

自建 Git服务器时,Gitea和 GitLab都是常见的选择。在实际部署和试用过程中,我遇到不少坑并对比了两者的特点。首先,隐私问题是我转向 GitLab的关键因素,Gitea的早期版本存在泄露 GitHub TOKEN的安全隐患。

在资源占用方面,Gitea以轻量著称,启动快且内存消耗低,而 GitLab的 Docker容器则较大,内存和日志占用明显更多,对服务器资源的需求较高。

在配置管理上,Gitea配置主要通过修改 app.ini,重启后生效,而 GitLab的配置可通过 Web UI实时调整。Gitea的定制性较强,适合特定需求,而 GitLab提供的是一站式解决方案,适合寻求全面功能的用户。

对于自定义页面和多域名访问,GitLab的灵活性较差,而 Gitea则允许用户更自由地修改模板。在CI/CD方面,GitLab的集成更为无缝,且支持用户自托管 GitLab Runner,而 Gitea需要与其他工具配合使用。

总结来说,对于个人或小型团队,Gitea的轻量和易定制性是优点;而对于需要稳定服务和全面功能的中大型团队或企业,GitLab由于其资源消耗大和更好的隐私保护,更适合成为首选。我将持续更新踩坑经历,供更多用户参考。

阅读剩余
THE END