Centos7 部署gitea,使用sqlite作为数据源

发布时间 2023-11-01 17:05:14作者: Sinsen柳


# 创建用户git,指定登录shell为Bash,-d指定家目录默认/home/git,-m如果指定的家目录不存在,则创建该目录
# 踩坑:-r 不分配登录shell和家目录
useradd -s /bin/bash -d -m git

#编辑 /etc/sudoers 文件以允许 git 用户在执行 sudo 命令时无需密码
vi /etc/sudoers
在文件中找到以 root ALL=(ALL:ALL) ALL 开头的行,在该行下面添加以下内容:
git ALL=(ALL:ALL) NOPASSWD: ALL

 

下载Gitea的二进制文件:

wget https://dl.gitea.io/gitea/1.15.4/gitea-1.15.4-linux-amd64
使二进制文件可执行:

chmod +x gitea-1.15.4-linux-amd64
创建应用数据和LFS根目录:

mkdir -p ~/gitea/data ~/gitea/lfs
创建Gitea的配置文件gitea.ini:

cp custom/conf/app.ini ~/gitea/data/
编辑配置文件gitea.ini,设置以下参数:

[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER =
PASSWD =
PATH = /home/git/gitea/data/gitea.db

[repository]
ROOT = /home/git/gitea/repos

[lfs]
START_SERVER = true
STORAGE_PATH = /home/git/gitea/lfs

[server]
ROOT_URL = http://your-domain.com/
注意:请将your-domain.com替换为你的域名或IP地址。

配置Gitea的systemd服务:
创建一个名为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 -c /home/git/gitea/data/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/home/git/gitea

[Install]
WantedBy=multi-user.target
将服务文件移动到/etc/systemd/system/目录下:

sudo mv gitea.service /etc/systemd/system/
启动Gitea服务并设置开机自启:

sudo systemctl daemon-reload
sudo systemctl start gitea
sudo systemctl enable gitea


==============================================================================================================
#遇到3000端口被占用报错:Failed to start server: listen tcp 0.0.0.0:3000: bind: address already in use
#CentOS 7安装netstat命令,netstat 命令被包含在 net-tools 软件包中
yum install -y net-tools

#netstat命令:检查是否有其他进程正在使用某端口
sudo netstat -tuln | grep 3000
#通过netstat命令看到:端口3000是被一个TCP6监听进程占用
[git@localhost gitea]$ netstat -tuln | grep 3000
tcp6 0 0 :::3000 :::* LISTEN


#用lsof或ss命令来查找端口3000是否被其他进程占用
sudo lsof -i :3000
# 看到已经有个gitea在占用了
[git@localhost gitea]$ sudo lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gitea 39165 git 6u IPv6 80676 0t0 TCP *:hbci (LISTEN)
==============================================================================================================