Gogs 是一款极易搭建的自助 Git 服务。
Gogs是一款类似Github/GitLab的开源文件/代码管理系统(基于Git)。
远程代码仓库管理
代码仓库权限分配、管理
团队管理
代码审查
Gogs是轻量级Git服务器的不二选择,因为GitLab比较重,对资源要求比较高,而且搭建流程相对复杂(使用docker搭建除外)。
我们可以看到Gogs的硬件要求:
最低的系统硬件要求为一个廉价的树莓派
如果用于团队项目管理,建议使用 2 核 CPU 及 512MB 内存
当团队成员大量增加时,可以考虑添加 CPU 核数,内存占用保持不变
相对于GitLab的2核4G起步,Gogs可以说是对硬件要求非常低了。
好了,下面开始详细的搭建流程。
默认环境已经安装Nginx,Mysql,git,这里不做详细介绍。
不知道的可以参考这篇安装WordPress的配置教程:最新阿里(腾讯)云主机LANMP搭建WordPress详细教程
因为本次配置中我们使用到了邮箱,所以我们申请了域名邮箱。
域名邮箱建议使用网易免费企业邮箱或者腾讯企业邮箱。
下载linux 64位安装包:
wget https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
解压:
tar -xvf gogs_0.11.91_linux_amd64.tar.gz
使用root用户登录:
mysql -u root -p
为用户创建一个数据库(gogs):
mysql> create database gogs;
创建gogs用户并授予上面创建的gogs数据库所有权限:
mysql> grant all on gogs.* to gogs@localhost Identified by "19921111Yasin#$";
mysql> flush privileges;
grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
因为gogs默认使用3000端口,所以我们将80端口对gogs的请求反向代理到3000端口。
增加Nginx配置文件:
vim /etc/nginx/conf.d/gogs.conf
添加下面的内容:
server {
listen 80;
server_name gogs.site; # 修改为你的域名
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}
server {
server_name www.gogs.site;
return 301 $scheme://gogs.site$request_uri;
}
重启Nginx:
systemctl restart nginx
git
用户# 创建用户 git
adduser git
# 修改文件夹权限
chown git:git gogs -R
首先修改配置文件,将gogs工作目录修改为你自己存放的目录:
cd gogs
vim scripts/systemd/gogs.service
主要修改配置文件中的WorkingDirectory
和ExecStart
:
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/yasin/gogs
ExecStart=/yasin/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git
# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
将服务文件复制到system
文件夹:
cp scripts/systemd/gogs.service /etc/systemd/system/
设为开机启动:
systemctl enable gogs.service
启动服务:
systemctl start gogs.service
查看状态:
systemctl status gogs.service
上面一切正确的话,我们打开网页输入我们的域名就可以进入首次安装配置了。
填写我们上面预置的账号和密码:
根据你自己的配置进行填写:
填写自己邮箱的SMTP服务器地址:
这里要注意的是,上面网易免费企业邮箱的SMTP地址应该为smtp.ym.163.com
。
注意,邮件配置这里坑比较多,在配置完邮箱后发现还是不能发送邮件。但是这时候使用Foxmail是可以连接邮箱并发送邮件的,于是排查服务器本身。
发送测试邮件示例:
最终发现是云主机服务商把25端口给封了,这时候需要去阿里云或者腾讯云申请解封25端口,具体流程就不叙述了。
申请解封完再选择发送测试邮件,终于成功了!
因为环境采用的LANMP配置,所以Aapache和Nginx都需要配置。
如果已经安装可以跳过。
yum -y install mod_ssl
使用命令httpd -M
查看已安装的模块,默认开启,没有的话在http.conf
配置文件中开启下面的配置:
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
添加配置文件:
vim /etc/httpd/cond.d/gogs.conf
增加下面的内容,配置证书并将请求反向代理给Gogs服务端口:
ServerName gogs.site
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /yasin/ssl/gogs.site/2_gogs.site.crt
SSLCertificateKeyFile /yasin/ssl/gogs.site/3_gogs.site.key
SSLCertificateChainFile /yasin/ssl/gogs.site/1_root_bundle.crt
ProxyRequests off
ProxyPreserveHost On
Order deny,allow
Allow from all
ProxyPass https://127.0.0.1:3000/
ProxyPassReverse https://127.0.0.1:3000/
ServerName www.gogs.site
Redirect permanent / https://gogs.site/
重启服务:
systemctl restart httpd
将80端口全部重定向到https链接。
vim /etc/nginx/cond.d/gogs.conf
修改配置:
server {
listen 80;
server_name www.gogs.site gogs.site;
return 301 https://gogs.site.com$request_uri;
}
重启服务:
systemctl restart nginx
如果只用Nginx一个服务器的话,参考下面的配置:
server {
listen 443;
server_name www.host.com;
ssl on;
ssl_certificate /home/git/gogs/custom/https/fileName.pem;
ssl_certificate_key /home/git/gogs/custom/https/fileName.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
#这里主要也要将http://修改为https://
proxy_pass https://localhost:3000;
}
}
server {
#HTTP跳转HTTPS
listen 80;
server_name www.host.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
打开配置文件:
cd gogs
vim custom/conf/app.ini
修改server
配置:
[server]
DOMAIN = gogs.site
HTTP_PORT = 3000
PROTOCOL = https
ROOT_URL = https://gogs.site/
CERT_FILE = /yasin/ssl/gogs.site/2_gogs.site.crt
KEY_FILE = /yasin/ssl/gogs.site/3_gogs.site.key
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
OFFLINE_MODE = false
重启gogs:
systemctl restart gogs.service
如果一切顺利的话,这时候再输入你的域名,比如 https://gogs.site,你会发现HTTPS启用成功!
好了,至此Gogs配置教程已经全部完毕,更多功能等待你去慢慢探索!
https://try.gogs.io/