自建Git服务器(Gogs)

  1. 1. 背景
  2. 2. 步骤
    1. 2.1. gogs文件
    2. 2.2. gogs.service文件

背景

自从有了服务器,又懂了点MySql并且买了一个鹅厂的三年数据库服务,我就什么都想自己来做了,加上之前自己的代码也存在公司,毕竟是别人的不是,还是自己搭个吧

环境: Ubuntu16.04

步骤

  1. 直接下载安装包
    其中386指的是86系统,amd64指的是64位系统,其他的就不用说了吧
  2. 解压,然后 cd 进入gogs目录,执行./gogs web。程序就会运行在 0.0.0.0:3000
  3. nginx 配置 先不说了,单独使用独立的MySql话比较方便,直接填写相关地址账号信息就可以了,之后可以在 gogs/custom/conf/app.ini 修改 install 时的一些配置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    APP_NAME = Gogs
    RUN_USER = root
    RUN_MODE = prod
    [database]
    DB_TYPE = mysql
    HOST = address:port
    NAME = CTGogs
    USER = name
    PASSWD = pass
    SSL_MODE = disable
    PATH = data/gogs.db
    [repository]
    ROOT = /data/gogs-repositories
    [server]
    DOMAIN = git.easyulife.com
    HTTP_PORT = 3000
    ROOT_URL = https://git.easyulife.com/
    DISABLE_SSH = false
    SSH_PORT = 22 // 注意端口22可能被占用,需要更改为别的端口
    START_SSH_SERVER = true
    OFFLINE_MODE = false
    [mailer]
    ENABLED = false
  4. 配置与自动后台运行。

    gogs文件

修改Gogs service配置文件

vi 路径/gogs/scripts/init/debian/gogs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Unit]
Description=Gogs
After=syslog.target
After=network.target
// 下面这个划重点了,我忙活了半天,死活跑不起来就是这个原因,这下面一行的意思是保证这么些数据库服务都起来了,才运行后面的。这里本来就是要注释掉部分的,由于我用的是独立的MySql所有我全都注了
#After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=root // 用户民
Group=root // 用户组
WorkingDirectory=/data/gogs // 工作目录,填到gogs运行文件的那一级
ExecStart=/data/gogs/gogs web // 执行文件的uri
Restart=always
Environment=USER=root HOME=/data //gogs文件夹的一级目录
[Install]
WantedBy=multi-user.target

sudo cp 路径/gogs/scripts/init/debian/gogs /etc/init.d/

增加执行权限

sudo chmod +x /etc/init.d/gogs

gogs.service文件

1
2
3
4
5
6
7
8
9
10
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Gogs"
NAME=gogs
SERVICEVERBOSE=yes
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WORKINGDIR=/data/gogs/gogs //修改成你的gogs运行文件uri
DAEMON=$WORKINGDIR/$NAME
DAEMON_ARGS="web"
USER=root //执行用户

复制service

cp 路径/gogs/scripts/systemd/gogs.service /etc/systemd/system/

  1. 大功告成运行 sudo service gogs start,如果无法访问 service gogs status查看错误原因