debian安装gitea


项目需要自己的git仓库,github,gitee,阿里云效都可以,gitea没用过,尝试装一下。

1.mariadb安装

lsb_release -a

root@github:/home/tools# lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description: Debian GNU/Linux 10 (buster)

Release: 10

Codename: buster

apt install mariadb-server mariadb-client

sudo mysql_secure_installation

- Set root password? [Y/n] y

-Remove anonymous users? [Y/n] y

- Disallow root login remotely? [Y/n] y

- Remove test database and access to it? [Y/n] y

- Reload privilege tables now? [Y/n] y

一路回车,Set root password? [Y/n] y

Enter current password for root (enter for none):

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

Set root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

接下来设置数据库

MariaDB [(none)]> CREATE DATABASE gitea;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO ‘giteadb‘@’localhost’ IDENTIFIED BY ‘gitea#ba1’;

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> QUIT;

2.gitea 安装

sudo apt install git

adduser –system –shell /bin/bash –gecos ‘Git Version Control’ –group –disabled-password –home /data/gitrepo git

下载gitea最新版本:120M左右
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d ‘“‘ -f 4 | grep ‘\linux-amd64$’ | wget -i -

mv gitea-*-linux-amd64 /usr/local/bin/gitea

chmod +x /usr/local/bin/gitea

root@git:/home/tools/gitea# gitea –version

Gitea version 1.20.0 built with GNU Make 4.1, go1.20.6 : bindata, sqlite, sqlite_unlock_notify

接下来,您需要为 Gitea 创建一个目录结构。

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}

然后,使用以下命令设置适当的权限和所有权:

chown git:git /var/lib/gitea/{data,indexers,log}

chmod 750 /var/lib/gitea/{data,indexers,log}

chown root:git /etc/gitea

chmod 770 /etc/gitea

创建 Gitea Systemd 文件。 Gitea创建服务/etc/systemd/system/gitea.service:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git 
HOME=/data/gitrepo
GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

systemctl daemon-reload

systemctl enable gitea.service

systemctl start gitea.service

初始化:


最终会生成一个/etc/gitea/app.ini文件:可以做域名,端口根据自己需求调整:

cat /etc/gitea/app.ini

APP_NAME = Gitea: Git with a cup of tea
RUN_USER = git
WORK_PATH = /usr/local/bin
RUN_MODE = prod
 
[server]
SSH_DOMAIN = repo.git.abcd.com
DOMAIN = 域名
HTTP_PORT = gitea端口自定义10048
ROOT_URL = https://域名

APP_DATA_PATH = /usr/local/bin/data
START_SSH_SERVER = true
DISABLE_SSH = false

\#SSH_PORT = 22
SSH_PORT = 可以自定义
LFS_START_SERVER = true
LFS_JWT_SECRET = ……
OFFLINE_MODE = false 

[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD = `passwd`
SCHEMA = 
SSL_MODE = disable
PATH = /usr/local/bin/data/gitea.db
LOG_SQL = false

[repository]
ROOT = /data/gitrepo/

[lfs]
PATH = /usr/local/bin/data/lfs
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.域名

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[cron.update_checker]
ENABLED = false
 
[session]
PROVIDER = file

[log]
MODE = console
LEVEL = info
ROOT_PATH = /usr/local/bin/data/log

[repository.pull-request]
DEFAULT_MERGE_STYLE = merge

[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
……

 

Nginx 配置转发:


server { 
   listen    80; 
   server_name  域名; 
   \# http默认重定向到https 
   return   301 https://$server_name$request_uri; 

} 

server {

  listen 443 ssl;
 server_name 域名;
  access_log /var/log/nginx/gitea_access.log;
  error_log /var/log/nginx/gitea_error.log;

  ssl_certificate  /etc/nginx/cert/域名.pem; 
  ssl_certificate_key /etc/nginx/cert/域名.key;  
   ssl_session_timeout 5m; 
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  ssl_prefer_server_ciphers on; 
   client_max_body_size 1024m; 
 
 allow 192.168.8.10;  
  deny all;
  location / {
   proxy_pass http://localhost:10048;
  }
}

3.gitea 操作

调试完成就可以访问配置的域名,进入gitea后台:右上角设置,设置SSH/GPGg密钥和管理后台添加账户;

创建仓库:

本地设置:

在安装完git和TortoiseGit后,使用ssh的配置如下:
生成ssh key
 运行Git Bash
 进到ssh目录: cd ~/.ssh/
 如果提示不存在,创建.ssh:mkdir ~/.ssh/
 配置用户名和邮箱:

Git config –global user.name “your name”

Git config –global user.email “your_email@example.com

 生成key:ssh-keygen -t rsa -C “your_email@example.com
 连续按三次回车即可
 最后得到了两个文件:id_rsa和id_rsa.pub
 复制ssh内容:cat is_rsa.pub 添加到gitea 的SSH/GPGg密钥那边

需要创建一个远程空仓库,可以使用GitHub、GitLab等平台创建。获取仓库的URL,以便后续推送代码时使用。

克隆远程仓库

在推送代码之前,首先需要将远程仓库克隆到本地。可以使用以下命令进行克隆:

git remote add origin ssh:/git url

建议用ssh:/git 远程库url,https url会报一些错误:比如,

error: RPC failed; curl 56 HTTP/2 stream 5 was reset

send-pack: unexpected disconnect while reading sideband packet

fatal: the remote end hung up unexpectedly

Everything up-to-date

设置了git config –global http.postBuffer 524288000似乎效果不大

Git基本操作:

新建代码库:

# 在当前目录新建一个Git代码库

$ git init

# 新建一个目录,将其初始化为Git代码库

$ git clone [url]

# 列出当前所有配置, 包含本地、全局、系统配置

$ git config –list

# 列出本地配置

git config –local –list

# 列出全局配置

git config –global –list

# 列出系统配置

git config –system –list

# 添加指定文件到暂存区

$ git add [file1] [file2] …

# 添加指定目录到暂存区,包括子目录

$ git add [dir]

# 添加当前目录的所有文件到暂存区

$ git add .

# 添加每个变化前,都会要求确认# 对于同一个文件的多处变化,可以实现分次提交

$ git add -p

# 删除工作区文件,并且将这次删除放入暂存区

$ git rm [file1] [file2] …

# 停止追踪指定文件,但该文件会保留在工作区

$ git rm –cached [file]

# 改名文件,并且将这个改名放入暂存区

$ git mv [file-original] [file-renamed]

# 提交暂存区到仓库区

$ git commit -m [message]

# 提交暂存区的指定文件到仓库区

$ git commit [file1] [file2] … -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区

$ git commit -a

# 提交时显示所有diff信息

$ git commit -v

# 使用一次新的commit,替代上一次提交# 如果代码没有任何新变化,则用来改写上一次commit的提交信息

$ git commit –amend -m [message]

# 重做上一次commit,并包括指定文件的新变化

$ git commit –amend [file1] [file2] …

# 列出所有远程分支

$ git branch -r

# 列出所有本地分支和远程分支

$ git branch -a

# 新建一个分支,但依然停留在当前分支

$ git branch [branch-name]

# 新建一个分支,并切换到该分支

$ git checkout -b [branch]

# 新建一个分支,指向指定commit

$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系

$ git branch –track [branch] [remote-branch]

# 切换到指定分支,并更新工作区

$ git checkout [branch-name]

# 切换到上一个分支

$ git checkout -

# 合并指定分支到当前分支

$ git merge [branch]

# 选择一个commit,合并进当前分支

$ git cherry-pick [commit]

# 删除分支

$ git branch -d [branch-name]

# 删除远程分支

$ git push origin –delete [branch-name]

$ git branch -dr [remote/branch]

Windows系统上面的更新脚本:



::::::::::::::::::::::::::::::::::::::::::::

::    Usage: ./update.bat "msg"     ::

::::::::::::::::::::::::::::::::::::::::::::

 

@echo off

setlocal enabledelayedexpansion

@echo "start update!"

pause

:: 下方设置参数

@set DATE="%date% %time%"

@set FILE="%0"

@set MSG="%1"

pause

:: 下方将双引号删除

@set FILE=%FILE:"=%

@set MSG=%MSG:"=%

@set DATE=%DATE:"=%

pause

:: 下方更新git

cd E:\work\server_release

dir

git status

git remote -v

:: 多人协作首先pull一下到本地

git pull origin master

pause

git status

pause

git config --global http.postBuffer 524288000

echo "set postbuffer"

pause

@git add .

pause

@git commit -m "%FILE% : %MSG% %DATE%"

pause

@git push origin master

pause

::::::::::::::::::::::::::::::::::::::::::::

::   written by -_-     ::

::::::::::::::::::::::::::::::::::::::::::::

文章作者: 云上的小雨滴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 云上的小雨滴 !
评论
  目录