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


    参考文档:http://wenku.baidu.com/link?url=R-Puaq3FWB_2KnTqSYhzoq9-cYCcBtg_Dqm1Gr_os35PYQz-f64ncvHLraTGQ6h8-vN7TiNj0Kp5nOU6aOPGEuFwsxmR2k3sgXnc9rvTUia

    搭建服务:https://mynook.info/blog/post/host-your-own-git-server-using-gogs

    gogs: https://github.com/gogits/gogs

    安装过程分为这些步骤:

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

    注意,这里默认你已经安装好了 MySQL 服务器和 nginx,如果没有,请自行查找如何安装和配置这些依赖。当然你也可以使用 SQLite 数据库。

    新建用户

    Gogs 默认以 git 用户运行(你应该也不会想一个能修改 ssh 配置的程序以 root 用户运行吧?)。
    运行 sudo adduser git 新建好 git 用户。
    su git 以 git 用户登录,到 git 用户的主目录中新建好 .ssh 文件夹。

    下载解包

    我使用的是预编译的二进制包。需要从源码编译的话,请参考一般 Go 语言项目的编译。下载后解包到你喜欢的地方,例如 /usr/share/gogs/ 或者 /home/git/gogs/。文件夹的内容如下。

    $ ls /home/git/gogs/
    custom  data  gogs  LICENSE  log  public  README.md  README_ZH.md  scripts  templates
    

    运行安装

    首先建立好数据库。在 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 web 把 Gogs 运行起来,然后访问 http://服务器IP:3000/ 来进行安装,填写好表单之后提交就可以了。
    需要注意的是,0.6.9.0903 Beta 版本有个 bug,允许在关闭注册的情况下不添加管理员,这样安装完成之后将没有任何用户可以登录。所以请务必在安装界面指定一个管理员帐号。

    配置调整

    配置文件位于 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 就好了,Ubuntu 下是 sudo service nginx restart

    服务脚本

    此处的服务脚本是针对 Debian 系的 init 脚本。

    本节内容于 2015年12月13日 修改:修正随时间发生变化的事实。

    在我写这篇文章的时候,最新版本的服务脚本似乎还有点问题,可以使用这个版本来代替。最新版本的服务脚本已经可以正常使用,请在二进制下载的 scripts 文件夹中找到对应你使用发行版的版本。将脚本放在 /etc/init.d 中,文件名为 gogs,给予执行权限并修改相关参数,以后就可以使用 sudo service gogs start 来启动服务,或者其他子命令来方便地管理。

  • 相关阅读:
    centos6 LVS-DR模式---分析
    centos6.6 安装 LXC
    Amoeba-mysql读写分离实战
    keepalived +mysql 实战
    nginx添加sticky模块-cookie保持会话
    haproxy转发真实IP给web
    Mysql-如何正确的使用索引以及索引的原理
    Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
    Mysql-常用数据的基本操作和基本形式
    Mysql-多表连接的操作和用法
  • 原文地址:https://www.cnblogs.com/zhuiluoyu/p/5842552.html
Copyright © 2020-2023  润新知