#!/bin/bash
# shell 脚本自动配置 gitea git 仓库; 支持系统:ubuntu20以上,debian12以上系统
# time: 2023.2.26
downdir="/datadisk/eisc/download" ; sudo mkdir -p $downdir ; sudo chmod 777 -R $downdir
installdir="/datadisk/eisc/server" ; sudo mkdir -p $installdir
# 安装路径不能将所有目录都为 777 , 如: mysql 的 /etc/my.cnf 不能为 777 否则mysql 无法启动
echo "
欢迎使用自动 shell 脚本自动配置 gitea git 仓库
server 源码下载路径:$downdir
server 安装路径:$installdir
C 2022.12.04 小绿叶技术博客 ddoss.cn 原: eisc.cn
"
sleep 2;
down_guanfang_url(){
giteaUrl="https://dl.gitea.com/gitea/1.22.0/gitea-1.22.0-linux-amd64"
}
down_eisc_url(){
giteaURL="http://work.ddoss.cn/ruanjian/ubuntu/deb/bin/gitea"
}
down_select(){
read -p "选择下载安装包地址: 1 官方下载 2 小绿叶技术博客下载. 请输入: " selectURL
case $selectURL in
"1") echo "当前选择官方下载..." ; down_guanfang_url ;;
"2") echo "当前选择小绿叶技术博客下载..." ; down_eisc_url ;;
*) echo "输入错误,请重新执行脚本! " ; exit ;;
esac
echo $gitea
}
gitea_install(){
sudo apt install git supervisor -y
git --version
if [ ! -e $downdir/gitea/gitea ]
then
sudo mkdir $downdir/gitea ; sudo chmod 777 $downdir/gitea
wget -O $downdir/gitea/gitea $giteaURL
else
echo "[ok] 已经下载包: $downdir/gitea/gitea "
fi
if [ ! -e $installdir/gitea/gitea ]
then
sudo mkdir $installdir/gitea ; sudo chmod 777 $installdir/gitea
cp $downdir/gitea/gitea $installdir/gitea/gitea
else
echo "[ok] 已经安装包: $installdir/gitea/gitea "
fi
}
gitea_user(){
# gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
# gpg --verify $installdir/gitea/gitea.asc $installdir/gitea/gitea
# gpg 签名密钥箱,防篡改
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
# 创建gitea用户
sudo mkdir -p /var/lib/gitea/{
custom,data,log}
sudo chown -R git:git /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
# 创建工作路径
sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini
# 写入权限
}
gitea_service(){
# ubuntu 以 systemd 服务方式,自动启动服务软件
# gitea_user
# 配置 gitea 用户和目录
sudo touch $systemdDir/$webname ; sudo chmod 777 $systemdDir/$webname
sudo chmod +x $giteaRun
sudo mkdir -p /var/lib/gitea/ ; sudo chmod 644 /var/lib/gitea/
sudo mkdir -p $installdir/shell ; sudo chmod 777 -R $installdir/shell
echo "#!/bin/bash
# bash 解释器 一定要在第一行 开头写,否则下面脚本不执行,开机启动不成功。 由于是 service服务,因此此脚本是 root 用户执行
$giteaRun &
" > $installdir/shell/gitea_start.sh
sudo chmod +x $installdir/shell/gitea_start.sh
sudo chown root:root $installdir/shell/gitea_start.sh $giteaRun
# 可执行文件 和 脚本属性是 root 用户才能开机启动
#----- 写入 start.service 服务 -----#
echo "
[Unit]
Description=gitea
[Service]
Type=forking
#ExecStart=$installdir/shell/gitea_start.sh
ExecStart=/bin/gitea
ExecReload=/bin/kill -SIGHUP \$MAINPID
ExecStop=/bin/kill -SIGINT \$MAINPID
[Install]
WantedBy=multi-user.target
" > $systemdDir/$webname
sudo apt install dos2unix -y
sudo dos2unix $systemdDir/$webname
# 转为 unix 格式,否则可能出现字符乱码
sudo chmod 644 $systemdDir/$webname
sudo systemctl daemon-reload
sudo systemctl disable $webname
sudo systemctl enable $webname
sudo systemctl start $webname
# 启动服务名称,不用加路径,配置了 service 相当于配置了环境变量,可以直接启动/停止服务名称
cd ~
# 配置 gitea 开机启动
sudo mkdir -p /home/git/gitea/log/supervisor
# 配置日志服务
sudo chmod 777 /etc/supervisor/supervisord.conf
echo "
[program:gitea]
directory=/home/git/go/src/github.com/go-gitea/gitea/
command=/home/git/go/src/github.com/go-gitea/gitea/gitea web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gitea/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gitea/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
user = git
environment = HOME="/home/git", USER="git"
" > /etc/supervisor/supervisord.conf
sudo chmod 644 /etc/supervisor/supervisord.conf
sudo systemctl enable supervisor
sudo systemctl start supervisor
}
gitea_if_service(){
giteaRun="$installdir/gitea/gitea"
systemdDir="/usr/lib/systemd/system"
webname="gitea.service"
if [ ! -e $systemdDir/$webname ]
then
echo "[runing] 开始配置gitea.service 开机启动..."
gitea_service
else
echo "[ok] 已经配置 gitea.service 开机启动, 是否重新配置 开机启动?"
read -p "input y/n? : " xz
if [ "$xz" = "y" ]
then
echo "[runing] 开始配置gitea.service 开机启动..."
gitea_service
else
echo "[ok] 已经配置过gitea 开机启动,不需要重新配置!"
fi
fi
}
main(){
down_select
gitea_install
gitea_if_service
}
main
# 一键下载: wget ddoss.cn/file/ubuntu/shell/server/giteaInstall.sh -O giteaInstall.sh