最近有线上朋友私信问我怎么搭建个人博客,也有咨询我个人项目的代码是如何保管的,还有一个朋友问我买了服务器玩了一段时间,等新鲜感过了就不知道做什么了。

关于这些问题并没有一个标准答案,每个人都有自己的使用习惯,找到适合你的才是最好的。关于博客搭建及使用的工具或服务在我博客的关于页里已经写的比较详细了,如果有人想看具体步骤我可以专门写一篇详细的教程,本篇先来讲讲我的个人项目代码是如何保管的。


Git私服的选择

最开始托管代码我使用的是GitHub和Gitee,后面折腾久了我就开始自己搭建Git服务了(包括很多其他服务我也有自建),现在我绝大部分个人项目代码都放在我的Git私服里面(还有一小部分放在自建SVN中没有迁移过来)。

搭建Git私服的工具其实有很多,比较出名的有gitlab,它的优点是功能特别全,你用的你不用的它都有,但对机器要求也很高,2C4G起步,适合企业使用,我们公司也是用它来搭建内网Git服务的,但我并不推荐个人使用gitlab私服

其次有Gogs和Gitea(本文教程),它们都属于轻量级的Git服务,对配置要求较低很适合个人使用,1C1G就能跑。

Gitea其实是Gogs的孪生兄弟,它是从Gogs源码的基础上开发的,且前期它们的功能也极为相似,官方介绍是Gitea是一个开源社区驱动的Gogs克隆。那为何会出两个功能如此类似的产品呢?我在网上找到的资料是这样的:

基本上就是有一部分开发者认为Gogs的开发者效率比较慢,而且不接受他人加入开发,所有修改和PR都需要经过他一个人的审核,这对Gogs的发展很不利。因而部分开发者决定基于Gogs重开一个项目,这就是Gitea,关于这件事我不予置评,但是开源社区不就是因为这样才充满活力与生机吗,百花齐放。

所以才有了现在的Gitea,从2016年11月Fork至今,它的功能相较于Gogs已经发生了很大的变化,我个人也比较喜欢Gitea这个更有活力的产品,所以我选择了它来管理我的代码。

安装Gitea有多种方式,以Linux为例,常见的有3种:

  1. Docker安装(强烈推荐)
  2. 二进制安装
  3. 源码编译安装

第三种源码安装的方式最繁琐,需要先安装Go语言环境,这里介绍前面两种安装方式。

首发地址:https://www.guitu18.com/post/2020/02/04/67.html

二进制安装

考虑到有些同学不熟悉Docker,这里先说第二种最简单的二进制安装。二进制安装需要Git支持。

安装Git:

yum install git -y

下载二进制文件并赋予执行权限:

# 创建工作目录
mkdir -p /usr/local/gitea && cd /usr/local/gitea
wget -O gitea https://dl.gitea.io/gitea/1.11.4/gitea-1.11.4-linux-amd64 && chmod +x gitea

运行Gitea:

./gitea web

运行成功界面如下,所有的运行数据都会生成在你的gitea二进制文件同级目录下:

默认运行的端口是3000,这样通过你的你的IP+端口就能访问你的Gitea服务了(记得放行3000端口或者关闭防火墙),要停止服务直接按 Ctrl + C 即可。若要后台运行,用下面的命令执行:

nohup ./gitea web > gitea.log 2>&1 &

在首页点击登录,会跳转到配置页面,请根据实际情况进行配置。

Docker方式安装(强烈推荐)

安装Docker:

yum install docker -y

略作等待后即可安装成功,启动docker服务:

systemctl start docker

执行 docker -v 查看docker版本,要看更详细的信息请执行docker info

[root@localhost gitea]# docker -v
Docker version 1.13.1, build cccb291/1.13.1

为了更加愉快的使用Docker你可能还需要配置镜像加速,执行vim /etc/docker/daemon.json,修改为如下配置:

{
"registry-mirrors":[
"https://reg-mirror.qiniu.com/",
"https://hub-mirror.c.163.com/"
]
}

重新加载配置及重启Docker服务:

systemctl daemon-reload
systemctl restart docker

拉取Gitea镜像

至此Docker安装完成,那么可以开始部署Gitea了,第一步,拉去Gitea镜像:

docker pull gitea/gitea:latest

拉取成功后,通过docker images看到已经有Gitea的镜像信息了:

运行Gitea容器

现在可以通过Gitea镜像运行Gitea容器了,命令如下:

# 创建挂载目录
mkdir -p /usr/local/gitea
# 运行容器
docker run -d --name=gitea -p 9020:22 -p 9000:3000 -v /usr/local/gitea:/data gitea/gitea:latest

命令参数说明(更加详细的说明请查看Docker篇):

-d:后台运行

--name:为启动的容器命名

-p:端口映射,前面的为宿主机端口,后面的为容器端口

-v:目录挂载,前面的为宿主机目录,后面的为容器内目录

这个命令是后台运行的,执行完成会输出一个容器ID,你可以执行docker ps -a来查看容器的运行状态:

[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82c6b17c5710 gitea/gitea:latest "/usr/bin/entrypoi..." 4 minutes ago Up 1 second 0.0.0.0:9020->22/tcp, 0.0.0.0:9000->3000/tcp gitea

正常来讲都会运行成功,你可通过IP+端口访问你的Gitea服务了,但是如果你的gitea容器的STATUS不是Up状态,那么可能是启动遇到错误了。

报错处理

如果容器没有正常运行起来,比如下面这样:

[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4985556f611f gitea/gitea:latest "/usr/bin/entrypoi..." 22 seconds ago Exited (0) 20 seconds ago gitea

那么你就需要检查原因了,你需要查看启动日志信息,咱们先删除这个启动失败的容器,执行命令:

# 4985556f611f 是你在`docker ps -a`命令看到的gitea的容器ID(CONTAINER ID)
docker rm 4985556f611f

再用下面的命令重新启动容器:

docker run -it --name=gitea -p 9020:22 -p 9000:3000 -v /usr/local/gitea:/data gitea/gitea:latest

把之前启动命令中的 -d 改为 -it ,这样你就能通过前台启动,从而看到报错信息了。

接着看,最常见的是你们很可能遇到这个错:mkdir: can't create directory '/data/gitea/': Permission denied ...

如果出现上述问题,那么你需要关闭SELINUX,方法如下:

  1. 临时关闭:setenforce 0

  2. 永久关闭:vim /etc/selinux/config,修改 SELINUX 的值为 disabled 然后重启机器即可,看图:

启动完毕之后,访问服务器的9000端口就能看到页面了,点击登录开始配置。

配置Gitea

安装完成首次访问需要对Gitea进行配置,默认的参数都已经配好了的,如果使用SQLite3数据库,甚至什么都不用做,直接点击立即安装即可。这里简单做一下说明:

数据库配置

第一项是数据库配置,一般默认使用SQLite3数据库即可(因为无需额外安装),使用其他数据库你需要有相关环境支持。以MySQL数据库为例,需提前在MySQL创建好对应的数据库,关于MySQL的安装教程已经准备好了:Linux 系统 MySQL 源码安装学习记录

站点信息配置

一般配置里,页面基本上都告诉你这些参数是干什么的,各种目录都会有默认值,不喜欢可以按照你的喜好修改。端口你也可以设置为你自己想要的,比如我修改成9000端口。

需要注意的一点是,如果你修改了默认的3000端口号,那么安装完后不会立即生效,新的端口在重启服务后生效,不重启你依然需要通过3000端口访问。重启服务器按Ctrl + C杀掉进程,重新执行./gitea web即可。

可选配置

可选配置里可以不用配置,这些都是可以后期在配置文件里进行修改的。

自用的话一般也不用配置电子邮箱,服务器和第三方服务设置使用默认的就好。

管理员这里如果不设置那么第一个注册的用户将成为管理员,这里我不配置直接点立即安装。

安装完成会跳转到登录页面,如果你修改了端口这时候是访问不到的,要么你继续用3000端口访问,要么重启服务以启用新的端口。点击注册,你将成为Gitea权限最高的管理员:

注册并登录上去开启你的Git私服之旅吧。关于Docker的更多使用教程请跳转:Docker 虚拟化管理:30 分钟教你学会用 Docker

自建Git服务器 - 创建属于你自己的代码仓库的更多相关文章

  1. git服务器创建,冲突解决,远程仓库获取指定文件

    1.git服务器创建 在公司多人协作开发的情况下,不能简单地使用github,因为github是互联网公开的,这种情况公司的代码的保密性就会丧失了.这种情况下,需要创建git服务器. 登录服务器,使用 ...

  2. 自建git服务器搭建使用记录

    git在push的时候出现insufficient permission for adding an object错误 //解决方法,在git库的目录下 //明明一开始创建user的时候有执行这个命令 ...

  3. 使用自建Git服务器管理私有项目 Centos 7.3 + Git 2.11.0 + gitosis (实测 笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso GIT服务器IP:192.168.1 ...

  4. git使用命令行拉取远程代码仓库中的分支至本地

    1.本地创建文件夹用于存放拉取的代码 2.执行git init初始化文件夹 3.与远程代码仓库建立连接 git remote add origin git@github.com.wuylin/noth ...

  5. Ubuntu下 git 服务器的搭建【转】

    转自:http://www.open-open.com/lib/view/open1391477731082.html 搭建git服务器的4个步骤 1   配置服务器前的准备工作 首先ubuntu系统 ...

  6. debian下使用gitosis+gitweb搭建SSH认证的git服务器

    搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client ...

  7. 在Linux下搭建Git服务器的方法是什么样?

    第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...

  8. 教你搭建你自己的Git服务器

    http://lib.csdn.net/article/git/50086 导读 现在我们将要学习如何搭建 git 服务器,如何编写自定义的 Git 钩子来在特定的事件触发相应的动作(例如通知),或者 ...

  9. CentOS上安装Git服务器

    1.安装Git 打开控制台,执行以下命令进行安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel ...

随机推荐

  1. Reface.NPI 方法名称解析规则详解

    在上次的文章中简单介绍了 Reface.NPI 中的功能. 本期,将对这方法名称解析规则进行详细的解释和说明, 以便开发者可以完整的使用 Reface.NPI 中的各种功能. 基本规则 方法名称以 I ...

  2. css3之 景深

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. js 调用铃声

    <audio autoplay="autoplay" id="auto" src=""> </audio> play ...

  4. Linux命令 dos2unix 的实际应用场景

    问题描述:书接上文springboot之停止与启动服务的脚本,编写杀死服务脚本的时候,总是不行,Linux会提示你类似下面这样的信息: killed pid: : arguments must be ...

  5. PowerShell入门简介

    文章更新于:2020-03-03 一.PowerShell简介 说实话,我总感觉 PowerShell 是 cmd 的加强版,但是看官方介绍,功能甚是强大,用处有待我们发掘. 二.PowerShell ...

  6. python 面向对象反射以及内置方法

    一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...

  7. 多数据源系统接入mybatis-plus, 实现动态数据源、动态事务。

    目录: 实现思想 导入依赖.配置说明 代码实现 问题总结 一.实现思想 接手一个旧系统,SpringBoot 使用的是纯粹的 mybatis ,既没有使用规范的代码生成器,也没有使用 JPA 或者 m ...

  8. 29.2 Iterator 迭代器

    /* * 集合的遍历方式: * 1.toArray(),可以把集合转换成数组,然后遍历数组即可 * 2.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合 * * Iter ...

  9. 多线程高并发编程(3) -- ReentrantLock源码分析AQS

    背景: AbstractQueuedSynchronizer(AQS) public abstract class AbstractQueuedSynchronizer extends Abstrac ...

  10. https的秘钥公钥以及之间的会话流程

      一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙. 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时 ...