目前主流开源的git服务有gitlab、gogs、gitea三个,gitlab功能最丰富,适合中大型团队使用,但对硬件要求高。gogs和gitea都是一个轻量级、易安装、快速、使用体验良好的自建Git服务,适合小团队或个人使用,对硬件要求很低,其实gitea是gogs的一个分支,因为gitea比较活跃,更新版本比较快,所以选择gitea来搭建git服务,gitea官网,gitea文档。
1 安装和运行gitea和mysql
注:先要安装好docker和docker-compose这两个工具。
创建一个目录(例如/usr/local/gitea),在新建的目录下创建文件docker-compose.yml。
mkdir /usr/local/gitea
cd /usr/local/gitea
vim /docker-compose.yml
docker-compose.yml,配置内容如下:
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
执行命令安装和启动gitea和mysql。
docker-compose up
简单测试下gitea启动是否正常。
2 nginx反向代理
先添加一个新的域名解析(例如 git.zhuyasen.com),然后在阿里云上申请一个免费的ssl证书,ssl证书绑定新域名,最后下载ssl证书给nginx配置使用。
创建目录存放gitea的nginx配置文件和ssl证书文件。
mkdir -p /usr/local/gitea/nginx/ssl
把ssl证书压缩文件上传到目录/usr/local/gitea/nginx/ssl,然后解压、改名。
cd /usr/local/gitea/nginx/ss
unzip xxx.zip
mv xxx.key cert.key
mv xxx.pem cert.pem
在/usr/local/gitea/nginx目录下创建gitea的nginx配置文件gitea_nginx.conf。
cd /usr/local/gitea/nginx
vim gitea_nginx.conf
gitea_nginx.conf的配置内容如下:
server {
server_name git.zhuyasen.com;
access_log /usr/local/gitea/nginx/access.log;
error_log /usr/local/gitea/nginx/error.log;
# 阿里云ssl证书
listen 443;
ssl on;
ssl_certificate /usr/local/gitea/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/gitea/nginx/ssl/cert.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
proxy_set_header Host git.zhuyasen.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server{
listen 80;
server_name git.zhuyasen.com;
rewrite ^(.*)$ https://git.zhuyasen.com permanent;
}
在nginx配置中添加内容:
include /usr/local/gitea/nginx/gitea_nginx.conf;
重新加载nginx配置,使配置生效。
nginx -s reload
3 gitea设置
配置好nginx反向代理后,在浏览器打开 https://git.zhuyasen.com ,第一次注册需要对gitea进行初始化设置。
(1) 配置数据库
可以选择多种数据库类型,这里选择mysql数据库,填写的mysql配置信息就是docker-compose.yml配置mysql的信息。
(2) 一般设置
因为这里没有使用ssh服务,在一般设置里主要修改下Gitea的基本URL,其他默认即可。
(3) 第三方服务设置
默认第三方设置是允许所有人注册的,这里禁止用户自助注册,只能通过管理员注册。
(4) 填写管理员信息
最后确认提交设置信息,完成了git服务初始化。这些配置提交到容器gitea的配置文件里(gitea/gitea/conf/app.ini),也可以手动修改配置文件,然后重启容器gitea服务使配置生效。
==使用gitea尽量不使用中文提交信息,容易报500错误。==
专题「工具」的其它文章 »
- TLS和SSL (Nov 17, 2020)
- prometheus基础和使用 (Aug 20, 2019)
- kubernetes基础和使用 (Sep 30, 2018)
- 使用gitlab和gitlab-runner实现DevOps (Sep 15, 2018)
- 一款漂亮的命令行工具——cmder (Sep 10, 2018)
- 使用vagrant和vitrualBox搭建虚拟开发环境 (Aug 16, 2018)
- docker基础和使用 (Aug 10, 2018)
- goland IDE使用说明 (Aug 07, 2018)