欢迎光临
技术人生-雨巷前端

使用 Gogs 搭建自己的 Git 服务器

最近再找以前的一些代码,遗憾的是就是找不到了。。找不到。。了。。。。,近几年一直使用git,开始在github上,后来在开源中国的码云上寄存,总感觉放到放到别人那里不安全,后台公司大神搭建了公司自己的gogs,就在这里一直使用。但是总不能把所有的东东都放公司服务器上吧,也不方便,就像自己搭建一个属于自己的gogs,对于自己一个前端开发来说还是有一定难度,还好网上资料比较多,几经折腾一天半时间终于成功搭建gogs私有git服务器。
现将具体的一些步骤和遇到的问题写一篇博客,以备后用,发扬分享精神。
安装过程分为这些步骤:
  1. 新建用户;
  2. 下载gogs二进制包;
  3. 运行安装;
  4. 配置 nginx 反向代理;
注意,这里默认你有linux服务器,并且已经安装好了 MySQL 服务器和 nginx,如果没有,请自行查找如何安装和配置这些依赖。当然你也可以使用 SQLite 数据库。(自己也折腾了好多)

1、新建用户

Gogs 默认以 git 用户运行(你应该也不会想一个能修改 ssh 配置的程序以 root 用户运行吧?)。
运行
# sudo adduser git
新建好 git 用户(这里可能需要用# passwd git 设置git用户密码)。
# su git
以 git 用户登录

2、下载gogs二进制包

我这里选择使用的预编译的二进制包进行安装,这种方式算是最简单的了吧(自己认为)。下载地址
参考:https://gogs.io/docs/installation/install_from_binary.html
下载后放到服务器任意目录下,我直接放到git用户目录下:
/home/git/gogs_v0.9.113_linux_amd64.zip
进入git目录,然后解压缩:
# unzip gogs_v0.9.113_linux_amd64.zip
# cd gogs
# ls
custom data gogs LICENSE log public README.md README_ZH.md scripts templates

3、运行安装

首先建立好数据库。在 Gogs 目录的 scripts/mysql.sql 文件是数据库初始化文件。执行
# mysql -u root -p < scripts/mysql.sql 
(需要输入密码)即可初始化好数据库。
然后登录 MySQL 创建一个新用户 gogs,并将数据库 gogs 的所有权限都赋予该用户。
# mysql -u root -p
> # (输入密码)
> create user 'gogs'@'localhost' identified by '密码';
> grant all privileges on gogs.* to 'gogs'@'localhost';
> flush privileges;
> exit
在gogs目录下运行
# ./gogs web
把Gogs运行起来,然后访问 http://服务器IP:3000 来进行安装配置(端口也可以设置成其他的,请自行百度搜索),数据库,域名,管理员账号等等,按你的需求配置,我这里直接配置的我自己指向的域名git.yuxang.com,(这一步比较仓促没有截图,请自己实践)。
这样运行一旦关闭当前shell窗口,服务就会自动停止,查找资料明白gogs运行需要进程保护,不然关掉服务器链接后服务就自动停止了
这里有两种方式解决:(推荐使用第二种方式)

a、gogs后台运行与重启

gogs默认需要git用户启动服务,切换到刚才新建的git用户
# su git
切换后启动服务(在gogs目录下操作)
# nohup ./gogs web &
然后就ok了,关闭putty不影响服务
关于重启,需要先结束gogs进程,gogs默认端口位3000,查询端口进程
# lsof -i:3000
或 # ps -aux
然后杀死进程
20161203
# kill -9 pid
例如查询到的pid为20833,则执行
# kill -9 20833
然后就可以像上面的一样启动了。

b、配置Linux服务使gogs服务自动运行

进入gogs/scripts/文件夹下有关于多个系统的服务脚本:
# cd /home/git/gogs/scripts/
# ls
autoboot.sh build_freebsd.sh build_linux64.sh build.sh init launchd mysql.sql README supervisor systemd windows
其中init,systemd以及windows目录分别为linux、Windows下服务脚本。
在此仅以CentOS为例:
1). init/centos/gogs到/etc/init.d/目录下:
# sudo cp init/centos/gogs /etc/init.d/
2). 切换到/etc/init.d/目录为脚本赋予可执行权限
# cd /etc/init.d 
# sudo chmod +x gogs
3). 更改gogs脚本内关于GOGS_HOME目录位置的设置(这儿使用vim编辑)
GOGS_HOME=/home/git/gogs
4). 使用服务管理命令管理服务
# sudo service gogs start
# sudo service gogs stop
# sudo service gogs restart
# sudo service gogs status
5). 配置Gogs开机自启动
# sudo chkconfig --add gogs
4、配置nginx 反代代理
/etc/nginx/conf.d 中新建一个文件(如:git-yuxang-com.conf),把以下内容写入文件中。
server { 
    server_name 域名或IP; 
    listen 80;    # 或者 443,如果你使用 HTTPS 的话 
    # ssl on; 是否启用加密连接 # 如果你使用 HTTPS,还需要填写 ssl_certificate 和 ssl_certificate_key 
    location / {     # 如果你希望通过子路径访问,此处修改为子路径,注意以 / 开头并以 / 结束 
        proxy_pass http://127.0.0.1:3000/; 
    }
 }
然后进入 /etc/nginx/conf.d 中,执行 ln -s /etc/nginx/conf.d/配置文件名 启用这个配置文件。
最后重启 nginx
$ service nginx restart
Ubuntu 下命令:
$sudo service nginx restart
到此基本大功告成。
访问域名:http://git.yuxang.com/
奇迹出现!!!!!!!!
gogs1 gogs2
参考资料:

未经允许不得转载:技术人生 » 使用 Gogs 搭建自己的 Git 服务器

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    牛批

    二叔2年前 (2016-12-28)回复

我是前端,我不迷茫