ubuntu/debian shell 脚本自动配置 gitea git 仓库

简介: 这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
#!/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
目录
相关文章
|
3月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
471 9
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
400 2
|
6月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
296 60
|
3月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
5月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
723 1
|
7月前
|
监控 Ubuntu Linux
在Ubuntu环境中制定脚本开机自动启动设置
以上就是在Ubuntu环境下制定脚本开机自动启动的设置方法。通过Systemd服务,你可以按需要轻松管理脚本的自动执行。全新的一天开始时,脚本已静静地运行,无需额外手动启动,机器恰如一位忠诚的仲夏夜的梦想者,在黎明的许诺中尽职尽责。于是心满意足地看着,任由它在自己选择的轨道上静静地飞翔。
832 26
|
7月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
217 17
|
7月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
236 4
|
7月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
465 3
|
8月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
723 25

热门文章

最新文章