两种部署自己的git仓库:gitea

640 阅读3分钟

前言

在公司或个人里,会有需要部署属于自己 git 仓库,网上的总归于在他人的服务器上,市面上也有很多种仓库选择,本次我使用的是 gitea,系统是 Ubuntu。

安装

  1. 本次我默认大家都服务器上都有安装了 git,mysql
  2. 大致介绍下 mysql 需要的东西,需要创建一个数据库,网页配置 gitea 时需要,为了数据库的安全着想,建议在 root 用户下创建数据库,然后创建一个用户,并赋予该用户可操作的数据库\表。
  1. gitea官网 gitea.io/zh-cn/ 上有很多安装方式,我选择使用二进制方式安装(主要懒得再上传到服务器了)
wget -O gitea https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64
chmod +x gitea
  1. 创建用户(推荐使用名称 git
adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git
  1. 创建工作路径
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

注意: 为了让 Web 安装程序可以写入配置文件,我们临时为 /etc/gitea 路径授予了组外用户 git 写入权限。建议在安装结束后将配置文件的权限设置为只读。

此时的 app.ini并没有创建,需要选创建。

chmod 750 /etc/gitea
mkdir /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini
  1. 配置 Gitea 工作路径
export GITEA_WORK_DIR=/var/lib/gitea/
  1. 复制二进制文件到全局位置
cp gitea /usr/local/bin/gitea

启动

本次介绍两种启动方式

  1. 命令行
  2. Nginx 反向代理

通过命令行终端运行

GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini

通过 Nginx 反向代理运行

安装 Nginx

Nginx 安装方法也有很多种,具体参考官网:nginx.org/en/download…

Debin/Ubuntu 上安装
# 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包:
apt-get update
apt install -y curl gnupg2 ca-certificates lsb-release \
debian-archive-keyring

# 下载并保存 NGINX 签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

# 使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ 
http://nginx.org/packages/${OS} ${RELEASE} nginx" \
| tee /etc/apt/sources.list.d/nginx.list

# 再次更新软件包信息,然后安装 NGINX
apt-get update
apt-get install -y nginx 
nginx
Centos 上安装
# 创建一个名为 /etc/yum.repos.d/nginx.repo 的文件,其中包含以下内容
[nginx] 
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ 
gpgcheck=0
enabled=1

# 修改文件,将 URL 中间的 OS 替换为 rhel 或 centos,具体取决于您的发行版本。分别
# 将版本 7.x 或 8.x 的 OSRELEASE 替换为 7 或 8。然后运行以下命令:
yum -y install nginx 
systemctl enable nginx 
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp 
firewall-cmd --reload
Nginx 目录介绍与基本使用

/etc/nginx/ 目录是 NGINX 服务器的默认配置根,您可以从中找到指示 NGINX 如 何运行的配置文件。

/etc/nginx/nginx.conf 文件是 NGINX 服务使用的默认配置入口点。此配置文件能够 为 worker 进程、调优、日志记录、动态模块的加载以及对其他 NGINX 配置文件 的引用设置全局设置。在默认配置中, /etc/nginx/nginx.conf 文件包括顶层 http 代 码块,也就是上下文,它提供了下述目录中的所有配置文件。

/etc/nginx/conf.d/ 目录包含默认的 HTTP 服务器配置文件,其中以 .conf 结尾的 文件都包含在 /etc/nginx/nginx.conf 文件的顶层 http 代码块中。最佳实践是利用 include 语句并以这种方式组织配置,从而保持配置文件的简洁。在某些软件包仓 库中,此文件夹被命名为 sites-enabled,配置文件链接到 site-available 文件夹; 此惯例已不再使用。

/var/log/nginx/ 目录是 NGINX 的默认日志位置,您可以从中找到一个 access.log 文件和 error.log 文件。访问日志包含 NGINX 服务的每条请求的条目。如果启用了 debug 模块,则错误日志文件包含错误事件和调试信息。

# 查看 Nginx 版本
nginx -v

# 启动 Nginx,任选一个
start nginx
systemctl start nginx

# 停止 Nginx
nginx -s top
systemctl stop nginx

# 重载配置文件
ngins -s reload
配置 Nginx
server {
    listen 80; # 这里是访问您外网所监听的端口,可修改
    server_name git.example.com; # 这个是随意起,但尽量不与其他配置文件重复

    location / {
        proxy_pass http://localhost:3000; # 代理到 gitea 的端口地址
        # 下面是配置请求头
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

配置完成后重新加载配置文件

nginx -s reload
防火墙设置
# Ubuntu
# 启动防火墙
ufw enable
# 查看开放的端口
ufw status numbered
# 开放端口
ufw allow 80
# 重载防火墙
ufw reload

# 服务器通用方式
# 开启防火墙
systemctl start firewalld
# 开放端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看端口号
netstat -ntlp # 查看当前所有tcp端口· 
netstat -ntulp |grep 1935 # 查看所有1935端口使用情况
启动

这时候就可以使用浏览器去访问了,进行图形界面配置后即可使用 gitea。

如果还访问不了,那么请检查你购买的服务器商家那里是否开放端口。具体开放不再阐述介绍。