gitea部署

发布 : 2022-07-08 分类 : 版本控制 浏览 :

Gitea安装部署

假定是已经有了mysql数据库
没有安装mysql可以跳到最后先安装mysql

1. docker-compose部署

1
2
3
4
mkdir /data/docker-compose/gitea
cd /data/docker-compose/gitea
vim docker-compose.yml
docker-compose up -d

docker-compose.yml配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"

services:
server:
image: gitea/gitea:1.20.5
restart: always
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- SSH_DOMAIN=zhouinfo.site
- TZ=Asia/Shanghai
- DB_TYPE=mysql
- DB_HOST=zhouinfo.site:3306
- DB_NAME=gitea
- DB_USER=root
- DB_PASSWD=test
volumes:
- /data/gitea:/data
ports:
- "3000:3000"
- "222:22"

2 docker部署

1
2
3
docker run -d -p 3000:3000 -p 222:22 --name gitea -v /home/git/gitea:/data -v /home/git/.ssh/:/data/git/.ssh -e TZ="Asia/Shanghai"  -e USER_UID=1001 -e USER_GID=1001 -e DB_TYPE=mysql -e DB_HOST=zhouinfo.site:3306 -e DB_NAME=gitea -e DB_USER=root -e DB_PASSWD=passwd --restart=always gitea/gitea:1.17.1

docker run -d -p 3000:3000 -p 222:22 --name gitea -v /docker/gitea:/data -e TZ="Asia/Shanghai" -e DB_TYPE=mysql -e DB_HOST=zhouinfo.site:3306 -e DB_NAME=gitea -e DB_USER=root -e DB_PASSWD=test -e DOMAIN=zhouinfo.site -e --restart=always gitea/gitea:1.17.3
  • 端口映射
    3000:3000
    222:22

  • 挂载
    gitea数据
    /home/git/gitea:/data
    ssh转发
    /home/git/.ssh/:/data/git/.ssh

-运行用户 git
需要创建git用户
可以看怎么创建git用户在Linux 搭建GIT服务
查看git的uid和gid
vim /ect/paaswd

USER_UID=1001 -e USER_GID=1001

  • mysql配置
    -e DB_TYPE=mysql -e DB_HOST=zhouinfo.site:3306 -e DB_NAME=gitea -e DB_USER=root -e DB_PASSWD=passwd

  • gitea版本
    gitea/gitea:1.17.1

配置nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 443 ssl http2;
server_name git.zhouinfo.site;
ssl_certificate /etc/letsencrypt/live/zhouinfo.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zhouinfo.site/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/zhouinfo.site/chain.pem;
ssl_dhparam /zhou/ssl/dhparam.pem;
location / {
proxy_pass http://localhost:3000;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

配置ssh

1
2
3
4
5
在 /usr/local/bin/ 添加一个 gitea 可执行脚本内容如下

ssh -p 222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"

修改 gitea的SSH_PORT为 主机的ssh端口
1
大致的流程是这样的,也就是说,SSH 直通的原理实际上也只是转发服务器本机的 ssh 请求到 Gitea 的容器中。大致的走向:用户访问 ssh -> 主机收到 ssh 请求 -> 主机验证 ssh key -> 验证成功后执行 command -> 将实际的 command 转发给容器。所以,实际上我们只要在 command 使用的脚本“做手脚”就可以了。Gitea v1.16.0+中,command 的默认命令脚本为 /usr/local/bin/gitea,而之前的版本则是 /app/gitea/gitea,我们创建对应版本的脚本到服务器本机上(至于为什么是本机,因为 ssh 会直接在本机上执行,而我们只是利用这个路径的脚本来转发命令而已),注意路径要一模一样。

webhook web钩子

1
2
3
4
#用本地的路径clone 不需要账号密码
git clone /home/git/gitea/git/repositories/zhouinfo/blog.git
#所属用户需要修改
chown -R git:git blog/

使用https://github.com/adnanh/webhookgo编译的钩子

可以使用json或者 yaml配置

vim hooks.yaml

1
2
3
- id: update-blog-webhook
execute-command: "/webapps/webhook/update-blog.sh"
command-working-directory: "/webapps/blog"

vim update-blog.sh

1
2
3
4
5
#!/bin/sh
cd /webapps/blog
unset GIT_DIR
git checkout master
git pull --rebase

设置可执行权限
chmod 755 update-blog.sh

vim /etc/nginx/nginx.conf

1
2
3
4
5
6
7
location /hooks {
proxy_pass http://localhost:9000/hooks;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

./webhook -hooks hooks.yaml -verbose > webhook.log 2>&1 &

gitea项目中创建web钩子 post master分支

这样调用url就会更新blog
https://zhouinfo.site/hooks/update-blog-webhook

安装mysql

1
2
3
4
mkdir /data/docker-compose/mysql
cd /data/docker-compose/mysql
vim docker-compose.yml
docker-compose up -d

docker-compose.yml配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'
services:
db:
image: mysql:8
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: 设定root密码
volumes:
- /data/mysql/conf:/etc/mysql/conf.d
- /etc/my.cnf:/etc/my.cnf
- /data/mysql/logs:/logs
- /data/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
1
docker run --name mysql -d -p 3306:3306 --restart=always -v /data/mysql/conf:/etc/mysql/conf.d -v /etc/my.cnf:/etc/my.cnf -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=设定root密码 mysql:8
本文作者 : zhouinfo
原文链接 : http://blog.zhouinfo.site/2022/07/08/gitea%E9%83%A8%E7%BD%B2/
版权声明 : 本博客所有文章除特别声明外,均采用 CC Apache License 2.0 许可协议。转载请注明出处!
留下足迹