search
gogs是一个用go仿的github,得益于go的编译成二进制文件,可以方便在所有平台布署。
# 添加源:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
#添加key
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
#安装:
sudo apt-get update && sudo apt-get -y install postgresql
#切换到root
su
#新建一个用户专用一个数据库提高安全性
useradd dbGogs
#进入PostgreSQL控制台,psql单独使用只有默认的postgres用户可以使用,这个相当于数据库的超级用户
su postgres
psql
#为postgres设置一个密码
\password postgres
#创建数据库用户dbGogs,并设置密码。
CREATE USER dbGogs WITH PASSWORD 'password';
#创建用户数据库,这里为gogsDB,并指定所有者为dbGogs。
CREATE DATABASE gogsDB OWNER dbGogs;
#将gogsDB数据库的所有权限都赋予dbGogs,否则dbGogs只能登录控制台,没有任何数据库操作权限。
GRANT ALL PRIVILEGES ON DATABASE gogsDB to dbGogs;
\q
先切换回普通用户,建议新建一个专用的gitGogs用户
useradd gitGogs -md /home/gitGogs
su gitGogs
#解压
unzip gogs_0.12.2_linux_amd64.zip
#if tar.gz
tar -zxvf gogs_0.12.2_linux_amd64.tar.gz
#安装
./gogs/gogs web
这里的localhost 为本机,如果你的服务器不是在本机而是在nas上或者树梅派软路由之类的那么这里要写个域名比如:git.me,然后通过路由器或者host进行映射
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service 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
Type=simple
User=gitGogs
Group=gitGogs
WorkingDirectory=/home/gitGogs/gogs
ExecStart=/home/gitGogs/gogs/gogs web
Restart=always
Environment=USER=gitGogs HOME=/home/gitGogs
# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
运行
systemctl start gogs
,设置开机启动systemctl enable gogs
/home/gitGogs/gogs web --port 80
.非root用户只能使用1024以下端口,gogs默认使用的为3000端口,访问git.me要使用http://git.me:3000这样。如果不想加端口那么配置一下nginx反射代理就可以了。#安装依赖:
sudo apt install curl gnupg2 ca-certificates lsb-release
#添加源:
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
#添加密钥:
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
#安装
sudo apt update && sudo apt install nginx
cd /etc/nginx/conf.d/
touch git.me.conf
vi git.me.conf
server {
listen 80;
server_name git.me;
access_log /var/log/nginx/git.me.access.log main;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
systemctl start nginx
配置开机启动systemctl enable nginx
这个仓库的密钥不能和nas的登陆密钥一样,不然报does not appear to be a git repository错误,解决办法是更换一个
基本思路是用cron运行shell脚本,配合天天翼云盘的cli进行备分。cli可以自己选用,我这用是cloundpan189-cli。
先写脚本,gogs备分目录为/home/zzerd/gogs-backup,根据实际情况改写。
# /bin/bash
DEST=/home/zzerd/gogs-backup
# 本地保留最近三次的备分,删除其它的。
find $DEST -name "*.zip" |xargs ls -1t | tail -n +4 | xargs rm -f
#gogs 备分
/home/zzerd/gogs/gogs backup --target /home/zzerd/gogs-backup
#云端只保最新的删除旧的,因为删除到回收站也会有30天才删除的。
/home/zzerd/bin/c189 rm /git-server
/home/zzerd/bin/c189 mkdir /git-server
#取最新的文件名
backName=$(ls -1t /home/zzerd/gogs-backup | head -n 1)
#up clound 189
/home/zzerd/bin/c189 u /home/zzerd/gogs-backup/$backName /git-server/
配置cron输入crontab -e
,编辑
#星期一1点0分执行上面写好的脚本,并且不要执行日志邮件
0 1 * * 1 /bin/sh /home/zzerd/shell/gogs_back.sh >/dev/null 2>&1