linux上使用gogs搭建私有仓库

gogs是一个优秀的开源git仓库,这个框架可以通过h5来访问配置,用来搭建私人仓库再合适不过了。(这里采用ubuntu)

安装步骤:

  • 新建用户;
  • 下载二进制包;
  • 运行安装;
  • 配置调整;
  • 配置 nginx 反向代理;
  • 保持服务运行;

注意,这里默认你已经安装好了 MySQL 服务器(或 MariaDB)和 nginx,如果没有,请自行查找如何安装和配置这些依赖

新建git用户

Gogs 默认以 git 用户运行。

sudo adduser git
sudo apt-get install git 
su git
cd /home/git

下载二进制包

下载后解包到你喜欢的地方,例如 /opt/gogs/ 或者 /home/git/gogs/,这里我用/home/git。文件夹的内容如下。

wegt https://dl.gogs.io/0.11.53/gogs_0.11.53_linux_amd64.tar.gz
tar -zxvf gogs_0.11.53_linux_amd64.tar.gz
cd gogs
ls
custom  data  gogs  LICENSE  log  public  README.md  README_ZH.md  scripts  templates

运行安装

首先建立好数据库。在 Gogs 目录的 scripts/mysql.sql 文件是数据库初始化文件。执行导入文件即可初始化好数据库。
创建一个新用户 gogs,并将数据库 gogs 的所有权限都赋予该用户。

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

运行 ./gogs web 把 Gogs 运行起来,然后访问 http://服务器IP:3000/ 来进行安装,填写好表单之后提交就可以了。

配置调整

配置文件位于 Gogs 目录的 custom/conf/app.ini,是 INI 格式的文本文件。详细的配置解释和默认值请参考官方文档,其中关键的配置大概是下面这些。

  • RUN_USER 默认是 git,指定 Gogs 以哪个用户运行
  • ROOT 所有仓库的存储根路径
  • PROTOCOL 如果你使用 nginx 反代的话请使用 http,如果直接裸跑对外服务的话随意
  • DOMAIN 域名。会影响 SSH clone 地址
  • ROOT_URL 完整的根路径,会影响访问时页面上链接的指向,以及 HTTP clone 的地址
  • HTTP_ADDR 监听地址,使用 nginx 的话建议 127.0.0.1,否则 0.0.0.0 也可以
  • HTTP_PORT 监听端口,默认 3000
  • INSTALL_LOCK 锁定安装页面
  • Mailer 相关的选项

其中,Mailer 可以使用 Mailgun 的免费邮件发送服务,将 Mailgun 的 SMTP 配置填入到配置中就好

配置nginx反向代理

在 /etc/nginx/sites-available 中新建一个文件,把以下内容写入文件中。

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/sites-enabled 中,执行 ln -s ../sites-available/配置文件名 启用这个配置文件。 最后重启 nginx 就好了,systemctl start nginx

保持服务运行

在/lib/systemd/system下vim gogs.service新建gogs.service

[Unit]  
Description=gogs 
After=syslog.target network.target remote-fs.target nss-lookup.target mysql.service
  
[Service]  
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web  
Environment=USER=git Home=/home/git 
  
[Install]  
WantedBy=multi-user.target

保存启动

systemctl start gogs.service
#设置开机启动
systemctl enable gogs

如果需要关闭请使用pkill -s [pid]来结束进程

你可能感兴趣的:(linux上使用gogs搭建私有仓库)