搭建个人代码托管git服务

目前主流开源的git服务有gitlab、gogs、gitea三个,gitlab功能最丰富,适合中大型团队使用,但对硬件要求高。gogs和gitea都是一个轻量级、易安装、快速、使用体验良好的自建Git服务,适合小团队或个人使用,对硬件要求很低,其实gitea是gogs的一个分支,因为gitea比较活跃,更新版本比较快,所以选择gitea来搭建git服务,gitea官网gitea文档

1 安装和运行gitea和mysql

注:先要安装好docker和docker-compose这两个工具。

创建一个目录(例如/usr/local/gitea),在新建的目录下创建文件docker-compose.yml。

    mkdir /usr/local/gitea
    cd /usr/local/gitea
    vim /docker-compose.yml


docker-compose.yml,配置内容如下:

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
    ports:
       - "3000:3000"
       - "222:22"
    depends_on:
      - db

  db:
    image: mysql:5.7
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql


执行命令安装和启动gitea和mysql。

docker-compose up


简单测试下gitea启动是否正常。

curl http://localhost:3000



2 nginx反向代理

先添加一个新的域名解析(例如 git.zhuyasen.com),然后在阿里云上申请一个免费的ssl证书,ssl证书绑定新域名,最后下载ssl证书给nginx配置使用。

创建目录存放gitea的nginx配置文件和ssl证书文件。

mkdir -p /usr/local/gitea/nginx/ssl


把ssl证书压缩文件上传到目录/usr/local/gitea/nginx/ssl,然后解压、改名。

    cd /usr/local/gitea/nginx/ss
    unzip xxx.zip
    mv xxx.key cert.key
    mv xxx.pem cert.pem


在/usr/local/gitea/nginx目录下创建gitea的nginx配置文件gitea_nginx.conf。

    cd /usr/local/gitea/nginx
    vim gitea_nginx.conf


gitea_nginx.conf的配置内容如下:

server {
    server_name git.zhuyasen.com;

    access_log                   /usr/local/gitea/nginx/access.log;
    error_log                    /usr/local/gitea/nginx/error.log;

    # 阿里云ssl证书
    listen 443;
    ssl on;
    ssl_certificate   /usr/local/gitea/nginx/ssl/cert.pem;
    ssl_certificate_key  /usr/local/gitea/nginx/ssl/cert.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;


    location / {
        proxy_pass http://127.0.0.1:3000/;

        proxy_redirect     off;
        proxy_set_header   Host             git.zhuyasen.com;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}

server{
    listen 80;
    server_name git.zhuyasen.com;
    rewrite ^(.*)$  https://git.zhuyasen.com permanent;
}    


在nginx配置中添加内容:

include /usr/local/gitea/nginx/gitea_nginx.conf;

重新加载nginx配置,使配置生效。

nginx -s reload



3 gitea设置

配置好nginx反向代理后,在浏览器打开 https://git.zhuyasen.com ,第一次注册需要对gitea进行初始化设置。

(1) 配置数据库

可以选择多种数据库类型,这里选择mysql数据库,填写的mysql配置信息就是docker-compose.yml配置mysql的信息。

配置数据库


(2) 一般设置

因为这里没有使用ssh服务,在一般设置里主要修改下Gitea的基本URL,其他默认即可。

一般设置


(3) 第三方服务设置

默认第三方设置是允许所有人注册的,这里禁止用户自助注册,只能通过管理员注册。

第三方服务设置


(4) 填写管理员信息

第三方服务设置


最后确认提交设置信息,完成了git服务初始化。这些配置提交到容器gitea的配置文件里(gitea/gitea/conf/app.ini),也可以手动修改配置文件,然后重启容器gitea服务使配置生效。


==使用gitea尽量不使用中文提交信息,容易报500错误。==



专题「工具」的其它文章 »