简介

Gitea是一个极易安装,运行非常快速,安装和使用体验良好的自建Git服务。采用Go作为后端语言,这使得只要生成一个可执行程序即可。并且他还支持跨平台,支持Linux、macOS和Windows以及各种架构,除了x86,amd64,还包括ARM和 PowerPC。

Github地址:https://github.com/go-gitea/gitea

功能

  • 支持活动时间线
  • 支持SSH以及HTTP/HTTPS协议
  • 支持SMTP、LDAP和反向代理的用户认证
  • 支持反向代理子路径
  • 支持用户、组织和仓库管理系统
  • 支持添加和删除仓库协作者
  • 支持仓库和组织级别Web钩子(包括Slack集成)
  • 支持仓库Git钩子和部署密钥
  • 支持仓库工单(Issue)、合并请求(Pull Request)以及Wiki
  • 支持迁移和镜像仓库以及它的Wiki
  • 支持在线编辑仓库文件和Wiki
  • 支持自定义源的Gravatar和Federated Avatar
  • 支持邮件服务
  • 支持后台管理面板
  • 支持MySQL、PostgreSQL、SQLite3、MSSQL和TiDB(实验性支持)数据库
  • 支持多语言本地化(21种语言)

二进制安装

1、安装MySQL数据库

手动安装数据库方法不在这里说明,很简单。恰巧我这个站长安了宝塔服务器管理面板。啥啥套件都一键安装了。

宝塔可视化服务器面板安装。

#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh

#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh

安装完成后,安装MySQL,至少5.7版本。

2、安装Git

先查看下内置的git版本,是否达到最新gitea的git版本要求。然后觉得是否升级。

#Debian和Ubuntu系统
apt-get -y install git

#CentOS系统
yum -y install git

#添加Git用户

groupadd git

useradd git -g git -s /bin/false

3、安装Gitea

创建目录

mkdir /home/git/gitea /var/log/gitea

获取程序

最新版本下载地址:https://dl.gitea.io/gitea

wget   https://dl.gitea.io/gitea/1.6.0-rc1/gitea-1.6.0-rc1-linux-amd64  -O /home/git/gitea/gitea
添加执行权限
chmod +x /home/git/gitea/gitea
修改所有人
chown -R git:git /home/git/gitea /var/log/gitea

运行项目

./gitea web

接下来打开http://ip:3000即可

常见问题

1、进入ip:3000打不开网站
打不开需要关闭防火墙,或者打开对应的3000端口。

CentOS 7
systemctl stop firewalld.service
systemctl disable firewalld.service

其它系统
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
service iptables save
service iptables restart

2、保持程序一直运行
首先新建编辑下面这个文件
vi /etc/systemd/system/gitea.service

输入下面配置文件

[Unit]
 Description=Gitea (Git with a cup of tea)
 #After=syslog.target
 After=network.target
 #After=mysqld.service
 #After=postgresql.service
 #After=memcached.service
 #After=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
 RestartSec=2s
 Type=simple
 User=git
 Group=git
 WorkingDirectory=/home/git/gitea
 ExecStart=/home/git/gitea/gitea web
 Restart=always
 Environment=USER=git HOME=/home/git/gitea
  
 [Install]
 WantedBy=multi-user.target

之后执行
systemctl daemon-reload
sudo systemctl start gitea

如果服务不能启动,你要注意的是下面几点(systemctl status giea查看服务状态,journalctl -b 0 -u gitea查看日志)

首先你的gitea放的目录问题,因为使用git用户启动的服务,所以你的gitea所在目录肯定要让git用户有访问权限,所以root目录下是不可以的
之后上面的配置参数你也要按照自己的环境目录来写,不要复制粘贴了,After=mysqld.service表示在mysql服务启动之后再启动gitea服务,所以这个根据你的数据库来选择去掉哪个注释

服务操作相关命令

查看服务列表与状态

systemctl list-units --type=service

启动一个服务:

systemctl start gitea

关闭一个服务:

systemctl stop gitea

重启一个服务:

systemctl restart gitea

显示一个服务的状态:

systemctl status gitea

在开机时启用一个服务:systemctl enable gitea

在开机时禁用一个服务:systemctl disable gitea

查看服务是否开机启动: systemctl is-enabled gitea

查看已启动的服务列表: systemctl list-unit-files | grep enabled

查看启动失败的服务列表: systemctl --failed