搭建私有化Git仓-Gogs

码云上云, 团队更好协作, 私密性更强~ 与大家分享搭建私有化Git仓-Gogs

环境搭建

Gogs 需要安装Nginx、MySQL 和 git

安装nginx

apt-get install nginx

安装git

apt-get install git

安装mysql

 apt-get install mysql-server

添加系统用户 git

adduser git

切换到git用户

 su git

下载安装

官方下载地址:
https://gogs.io/docs/installation/install_from_binary

这里我们选择最新版
操作截图

或者也可以直接使用 wget 下载

wget -c https://cdn.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz

将安装包下载到 /home/git/ 下,并解压

sudo tar -xzvf gogs_0.11.86_linux_amd64.tar.gz

(没有权限就切换到root解压,但是记得切换回git用户)

操作截图

初始化数据库gogs(库)

cd gogs/scripts
mysql -u root -p < mysql.sql

建立新数据库用户gogs(用户)

 mysql -u root -p
> # (输入密码)
> create user 'gogs'@'localhost' identified by '密码';
> grant all privileges on gogs.* to 'gogs'@'localhost';
> flush privileges;
> exit;

配置与运行Gogs

修改Gogs service配置文件

vim /home/git/gogs/scripts/init/debian/gogs

配置参考如下(其实基本上可以不用改)

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC=“Go Git Service”
NAME=gogs
SERVICEVERBOSE=yes
PIDFILE=/var/run/NAME.pidSCRIPTNAME=/etc/init.d/NAME.pidSCRIPTNAME=/etc/init.d/NAME.pidSCRIPTNAME=/etc/init.d/NAME
WORKINGDIR=/home/git/gogs #这个根据自己的目录修改
DAEMON=WORKINGDIR/ WORKINGDIR/WORKINGDIR/NAME
DAEMON_ARGS=“web”
USER=git #如果运行gogs不是用的这个用户,修改对应用户

操作截图

如果是创建的git用户 则目录修改为/home/git/gogs.对应的USER修改为git
如果是在root用户下安装在/usr/local/gogs/下 则对应的目录为:/usr/local/gogs/gogs.对应的USER修改为root
切回root用户然后复制到/etc/init.d/

cp /home/git/gogs/scripts/init/debian/gogs /etc/init.d/

增加执行权限

chmod +x /etc/init.d/gogs

复制service

cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/

启动Gogs

service gogs start

浏览器上访问http://你的ip:3000/install 来完成配置

操作截图

Nginx 反代理

这里是ubuntu的方法,centos的是另外一个方式,但是nginx配置文件是一样的

vim /etc/nginx/sites-enabled/gogs

server {
        listen 80;
        server_name  Ip_or_domain; 
        location / {
                proxy_pass http://Yout_Ip:3000/;
        }
}

ln /etc/nginx/sites-enabled/gogs /etc/nginx/sites-enabled/gogs

service nginx restart
对于gogs的用户配置都在custom/conf/app.ini这里修改 成功的页面是这样的

操作截图

最后,禁用shell登录:
出于安全考虑,创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。将 git 修改如下:

操作截图

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