#!/bin/bash # ubuntu20 shell 脚本自动配置 gitea git 仓库 # 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 小绿叶技术博客 eisc.cn " sleep 2; down_guanfang_url(){ giteaUrl="https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64" } down_eisc_url(){ giteaURL="http://work.eisc.cn/ruanjian/ubuntu/c/git/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 # echo "" > gitea.sh ; nano gitea.sh ; sudo chmod +x gitea.sh ; ./gitea.sh