使用 Gogs + MySQL 快速搭建仓库管理系统
之前都是使用 Gitlab 做仓库管理系统,奈何 Gitlab 在低配置的 NAS 上跑总是各种卡顿宕机,后来就改成了 Gogs。首先 Gogs 它小巧轻便,也可以使用 Jenkins 来做持续集成和持续交付,因此个人还是比较喜欢 Gogs。
安装
- 安装配置环境
# yum install mysql-community-server go git nginx -y
- 为 Gogs 创建单独的用户
# useradd git-gogs
- 下载并解压文件,并将文件夹名改为 Gogs
# su git-gogs $ cd ~ $ wget [Gogs_download_address] $ unzip [Gogs_files] $ mv [Gogs_files] ./gogs
- 为文件夹分配权限
# chown -R git-gogs:git-gogs ./gogs # mkdir gogs-repositories # chown -R git-gogs:git-gogs ./gogs-repositories
- 启动 Gogs
# su git-gogs $ sudo /gogs/gogs web &
如果防火墙没有问题的话,之后登录http://gogs-server-ip:3000
就能看到配置界面了。Gogs 支持MySQL,PostgreSQL,SQLite3和TiDB,默认使用 SQLite3。
有关Gogs的配置文件在/home/git-gogs/gogs/custom/conf/app.ini
里面,相关配置在Gogs文档中有。
配置 MySQL 数据库
- 开启数据库
# systemctl start mysqld ;systemctl enable mysqld
- 获取数据库 Root 账户的密码
# cat /var/log/mysqld.log | grep password
- 安全安装(用于生产力环境)
# mysql_secure_installation
- 登录 MySQL 并修改存储引擎,字体编码和分配用户权限
# mysqld -u root -p > SET GLOBAL storage_engine = 'InnoDB'; > CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin; > GRANT ALL PRIVILEGES ON gogs.* TO ‘root’@‘localhost’ IDENTIFIED BY 'YourPassword'; > FLUSH PRIVILEGES; > QUIT;
配置前端反向代理
- 修改 Nginx 配置文件
注意:这只是一个示范,具体配置反向代理可以查看我的 Nginx 学习笔记# vi /etc/nginx/conf.d/default.conf server { listen 80; server_name gogs.cubat.cc; location / { proxy_pass http://127.0.0.1:3000/; } }
- 重启 Nginx
# systemctl restart nginx
配合 Jenkins 做持续集成
- 首先打开 Jenkins 进入系统管理→管理插件→可选插件安装,搜索Generic Webhook Trigger并安装。
- 打开 Gogs 管理界面,仓库设置 → 管理 Web 钩子 → 添加 Web 钩子。这里的推送地址是
http://jenkins地址:端口号/generic-webhook-trigger/invoke?token=密钥
密钥是要与后面在jenkins里面的密钥设置一致。 - 设置完了之后可以点击测试推送,点击测试记录可以看到发送给jenkins的推送详情。
评论
发表评论