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
目录
相关文章
|
11月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
953 78
|
9月前
|
安全 开发工具 git
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
854 5
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
|
Ubuntu Linux UED
Ubuntu和Debian系统与Hat Linux系列的使用比较
所以,如果你想搞一个家用服务器,或者是个人使用,喜欢新鲜事物,那Ubuntu可能是你的最好选择。如果你需要一个在商业环境中经受住考验的系统,那Fedora或CentOS可能更符合你的口味。不过记住,CentOS现在是CentOS Stream,中途换马了,所以如果你是稳定性的极端追求者,可能得考虑一下这一变化。而Debian,则适合那些对稳定性需求极高,不太追求软件版本新旧的用户。
454 26
|
Ubuntu 搜索推荐 Linux
Ubuntu/Debian Hat系Linux的便捷操作指南
总的来说,虽然Ubuntu/Debian和Red Hat系列在操作方法上有所不同,但基本概念类似。掌握了包管理和服务管理,可以应对大多数常见的系统管理任务。同时,这两个系统都有丰富的在线资源可以查询,不管你在任务中遇到什么困难,搜索引擎都能帮你找到答案。这些基本技能能让你在Linux的世界里更加自如。
350 26
|
定位技术 Python
遭遇Debian无法执行脚本提示"文件或目录不存在"问题解决方案
这样的错误提示在使用Debian的过程中是很常见的,希望这个极具形象意义的解释和解决方法能帮到你,并使你在处理这样的问题的时候充满乐趣。如果你遇到其他的问题或者对这个问题有更深一步的疑问,欢迎随时提问,我会在第一时间为你解答。
563 24
|
11月前
|
开发工具 git 开发者
Git流程控制:远程仓库操作的实用指南
通过遵循这些步骤和策略,你将能够更有效地与远程仓库进行交互,确保代码变更的透明度和项目历史的干净。同时,良好的版本控制习惯可以减少潜在的冲突,并帮助保持代码库的整洁。在日常工作中应用这些实用的Git流程控制技巧将是非常有益的。
311 0
|
Shell 开发工具 git
解决git bash报错:在仓库中检测到可疑的所有权
总的来说,解决“在仓库中检测到可疑的所有权”的报错,关键在于理解和调整文件或目录的所有权。只要我们正确地设置了文件或目录的所有权,那么我们就可以避免这种问题,让Git Bash正常工作。
722 22
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
16995 11
|
Ubuntu Linux
Ubuntu中dpkg和apt命令:debian包安装详解
希望这让你对于Ubuntu中的dpkg和apt命令有了更为清晰的理解。下次你面对软件包安装的问题,就可以轻松应对,优雅地在你的Linux系统中游刃有余了。
1766 10

热门文章

最新文章