• Gogs 安装



    参考资料:

    安装 Gogs

    有 3 中方式可以安装:

    • Gogs 直接安装在 Linux 服务器上,同时其所依赖的 MySQL 数据库也安装在服务器上
    • Gogs 安装在容器中,其所依赖的 MySQL 数据库安装在服务器上
    • Gogs 和其所依赖的 MySQL 数据库都安装在容器中

    本地安装

    代码是比较重要的资料,推荐使用本地安装,尽可能减少异常。可以参考本地安装的 官方安装教程

    前提条件:

    数据库

    MySQL 可以使用完全兼容的 MariaDB 替代,且 CentOS 默认安装了 MariaDB。MariaDB 的安装可以 参考这里。MySQL 的安装可以 参考这里

    数据库安装完成后,需要创建名为 gogs 的数据库。可以

    • 使用 etc/mysql.sql 来自动创建
    • 如果选择手动创建,则必须将编码设置为 utf8mb4

    我用的是 MySQL8.0,默认 InnoDB 引擎,UTF8MB4编码,命令如下:

    create database gogs;
    

    创建 gogs 数据库用户:

    create user 'gogs'@'localhost' identified by 'your-password';
    grant all privileges on gogs.* to 'gogs'@'localhost';
    flush privileges;
    

    git

    服务端和客户端均需版本 >= 1.7.1

    # git version
    git version 1.8.3.1
    

    创建 git 用户

    为了安全起见,单独创建 git 用户,所有项目放在家目录下:

    sudo adduser git
    su git
    

    SSH 服务器

    如果只使用 HTTP/HTTPS 的话,则不需要。Linux 系统默认都安装了 SSH 服务。

    安装

    这里只讲简单的二进制安装,源码安装可以参考官网。

    • 这里 下载合适的版本,我使用的是 linux_amd64.tar.gz
    • 解压压缩包。
    • 使用命令 cd 进入解压后创建的目录。
    • 执行命令 ./gogs web,完成。

    升级

    • 下载最新版的压缩包。
    • 删除当前的 templates 目录。
    • 解压压缩包并将所有内容复制粘贴到相应(当前)的位置。

    配置及运行

    配置

    默认配置都保存在 conf/app.ini,永远不需要编辑它。该文件从 v0.6.0 版本开始被嵌入到二进制中。

    如果需要自定义配置,只要创建 custom/conf/app.ini,在这个文件中修改相应选项的值即可。

    例如,改变仓库根目录的路径:

    [repository]
    ROOT = /data/git/gogs-repositories
    

    当然,也可以修改数据库配置:

    [database]
    PASSWD = root
    

    运行 Gogs 服务

    • 开发者模式:
      需要在 custom/conf/app.ini 文件中将选项 security -> INSTALL_LOCK 的值设置为 true。可以使用超能的 make 命令:
    $ make
    $ ./gogs web
    
    • 部署模式:
      脚本均放置在 scripts 目录,但请在仓库根目录执行它们

      • Gogs 支持多种方式的启动:
        • 普通:只需执行 ./gogs web
        • 守护进程:详见 scripts 文件夹

    在线安装 Gogs

    可以通过配置文件安装,也可以在线安装。

    Gogs 服务启动后,访问 ip:3000/install 来完成首次运行的配置工作。这里需要明确一点:是否使用Nginx反向代理。我使用了Nginx做反向代理,需要配置Nginx,同时将用于 git clone 的两个URL(分别用于 git 和 http 方式)都配置为 https://gogs.kikakika.com,Gogs的端口不变,仍是3000:

    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  gogs.kikakika.com;
    
        location / {
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_pass http://$server_addr:3000$request_uri;
        }
    
        ssl on;
        ssl_certificate /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key /etc/nginx/ssl/kikakika.key;
        ssl_session_timeout 5m;
    }
    server {
        listen       80;
        listen       [::]:80;
        server_name  gogs.kikakika.com;
    
        return 301 https://$host$request_uri;
    }
    

    后台运行 gogs

    启动命令并在后台运行

    nohup ./gogs web &
    

    如果你已经启动 gogs 了,可以通过 ctrl + z 将命令转入后台并停止运行,然后通过 bg 命令将后台停止运行的命令在后台启动运行。如果后台有多个停止的命令,可以先用 jobs 命令查看任务编号,然后用 bg 编号 来启动指定的任务。

    如果想查看 gogs 的输出,可以用下面的命令:

    tail -f nohup.out
    

    通过 docker-compose 安装

    通过 docker-compose 配合 YAML 配置文件,可以方便的安装 Gogs。具体的配置跟本地安装一样,也是通过 Web 进行设置。

    可以参考 Gogs 跟 Docker 相关的资料

    数据库和 Gogs 都安装在容器中

    docker-compose.yml 文件:

    version: '2'
    
    services:
      mysql:
        image: mysql:5.7
      	environment:
       	  - MYSQL_ROOT_PASSWORD=myrootuser
       	  - MYSQL_DATABASE=gogs
        volumes:
          - /data/docker/gogs/mysql:/var/lib/mysql
          - ./conf/:/etc/mysql/conf.d
      gogs:
        image: gogs/gogs:latest
        ports:
          - 11022:22
          - 11080:3000
        volumes:
          - /data/docker/gogs/gogs:/data
        links:
          - mysql
        depends_on:
          - mysql
    

    这里还需要通过 my.conf 文件配置 MySQL,否则访问 MySQL 时会报错:Error 1130: Host '172.21.0.2' is not allowed to connect to this MariaDB server。这是因为 MySQL 默认只支持 127.0.0.1localhost 的本地访问,对于其他 IP,需要登录数据库增加对这个 IP 的信任。

    docker-compose.yml 配置文件所在目录中,创建 conf 目录,将 my.conf 配置文件放入刚创建的 conf 目录。配置文件内容如下:

    [mysqld]
    bind-address=0.0.0.0
    

    跨容器通信比较简单,直接使用 links 部分指定的名称替代 IP 即可。这里通过 Web 页面首次运行安装程序时,在 数据库设置 -> 数据库主机 这个字段中填入 mysql:3306,其他前面的 IP 部分由 YAML 配置文件中 gogs 服务的 links 部分指定。

    数据库本地安装,Gogs 安装在容器中

    需要设置本地安装的数据库,以允许来自容器的 IP 的访问请求。

    docker-compose.yml 文件:

    version: '2'
    
    services:
      gogs:
        image: gogs/gogs:latest
        ports:
          - 11022:22
          - 11080:3000
        volumes:
          - /data/docker/gogs/gogs:/data
    

    Nginx 配置文件

    这里使用 Nginx 作为反向代理,通过域名访问 Gogs:

    upstream gogs {
       server 127.0.0.1:11080 fail_timeout=0;
    }
    server {
        listen	443 ssl http2;
        server_name  gogs.kikakika.com;
    
        ssl on;
        ssl_certificate      /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key  /etc/nginx/ssl/kikakika.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_prefer_server_ciphers  on;
    
        location / {
            proxy_pass http://gogs;
        }
    }
    server {
        listen  80;
        server_name gogs.kikakika.com;
        
        return	301 https://$server_name$request_uri;
    }
    

    通过浏览器访问

    Gogs 启动后首次访问时,会进入在线安装页面,在这个页面配置数据库等信息。

    设置数据库

    我这里将 MySQL 安装在了容器中,所以需要使用 links 指定的数据库名字访问,而不是 IP 地址:
    这里写图片描述
    这里写图片描述

    应用基本设置

    这里写图片描述

    设置邮箱

    这里写图片描述

    注册用户

    Gogs 中第一个注册的用户会自动成为 root 用户。这样省去了繁琐的配置,挺不错的。

    后面所有注册的用户都是普通用户。

    常见问题

    Error 1130: Host '172.21.0.2' is not allowed to connect to this MariaDB server

    原因:数据库默认只支持 127.0.0.1localhost 的本地访问,对于其他 IP,需要登录数据库增加对这个 IP 的信任。有多种解决方案:

    • 可以编辑数据库配置文件 /etc/my.cnf,在 [mysqld] 下面添加 bind-address=0.0.0.0
    [mysqld]
    bind-address=0.0.0.0
    
    • 可以在登入数据库后,更改 “mysql” 数据库中, “user” 表中 root 用户的 “host” 项,从"localhost"改称"%",使其可以从任何 IP 登录:
    mysql> USE mysql;
    mysql> UPDATE user SET host = '%' WHERE user = 'root';
    mysql> FLUSH RIVILEGES;
    
    • 或登录数据库后,创建一个可以从任何 IP 登录的用户,例如:
    mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION;
    mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    
    • 直接操作 root 用户:
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    

    上面使用 FLUSH PRIVILEGES 指令后,可以不用重启 MySQL。'monty'@'%' 表示允许 monty 用户从所有 IP 登录,当然也可以只允许其从指定的 IP 登录:

    GRANT ALL PRIVILEGES ON gogs.* TO 'monty'@'192.168.1.3' WITH GRANT OPTION;
    

    dial tcp 127.0.0.1:3306: getsockopt: connection refused

    原因:指定的 MySQL 服务器不存在。

    通过 Docker 安装的数据库,默认使用 bridge 桥接网络。如果其他容器需要访问数据库容器,需要通过 links 设置的数据库名称直接访问数据库,这里是 mysql:3306

    Error 1049: Unknown database 'gogs'

    原因:没有创建指定的数据库。

    需要在数据库配置中使用环境变量创建这个数据库 - MYSQL_DATABASE=gogs。注意,如果已经报这个错误了,需要手动清除之前产生的数据库信息(对于上面的 docker-compose 配置文件,执行 rm -fr /data/docker/gogs/mysql/),然后再执行 docker-compose up 命令。:

    mysql:
        image: mysql:5.7
      	environment:
       	  - MYSQL_ROOT_PASSWORD=myrootuser
       	  - MYSQL_DATABASE=gogs
        volumes:
          - /data/docker/gogs/mysql:/var/lib/mysql
          - ./conf/:/etc/mysql/conf.d
    
  • 相关阅读:
    android 表格控件
    android 使用fileprovide 安装apk文件
    android 公告 滚动 (跑马灯效果)
    android timer倒计时
    解决 scrollview 嵌套 recycleview 问题
    android build 编译在 :app:DebugResources 失败
    Android Studio 多渠道打包,打不同包名,不同图标的apk
    工厂方法模式
    11.11
    11.8输入一个整数,求它是几位数
  • 原文地址:https://www.cnblogs.com/kika/p/10851600.html
Copyright © 2020-2023  润新知