使用Nginx反向代理在CentOS 7/8上安装Gitea自托管Git服务

时间:2020-02-23 14:30:40  来源:igfitidea点击:

本指南将在CentOS 7/CentOS 8服务器上安装Gitea自托管的Git服务,并使用Nginx将所有请求代理到Gitea。 Gitea是一种由Gogs派生的无痛苦的自托管Git服务,在功能上类似于GitHub,Bitbucket和Gitlab。

Gitea的构建是一种快速,易用且以最少的资源来建立自托管Git服务的最轻松的方法。 Gitea用Go编写,可在支持Go的所有平台(Linux,macOS和Windows)和体系结构上运行。

供Ubuntu使用如何在Ubuntu上安装Gitea自托管Git服务

更新系统并安装git

更新所有系统软件包并通过运行安装git

sudo yum -y update
sudo yum -y install git wget vim bash-completion
sudo reboot

添加git系统用户并创建目录

添加将由Gitea使用的git用户帐户。

sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home-dir /home/git \
   git

创建所需的目录结构

sudo mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

安装MariaDB数据库服务器

我们将使用MariaDB存储Gitea数据,按照之前的指南在服务器上安装MariaDB在Ubuntu 18.04和CentOS 7上安装MariaDB 10.x

安装MariaDB CentOS 8

为Gitea创建数据库:

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 608168
Server version: 10.3.9-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE gitea;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY "StrongPassword";
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye

安装和配置Gitea

现在从下载页面下载gitea二进制文件。在下载之前,请检查最新版本。

export VER=1.9.4
wget https://github.com/go-gitea/gitea/releases/download/v${VER}/gitea-${VER}-linux-amd64

将下载的二进制文件移至"/use/local/bin"目录

chmod +x gitea-${VER}-linux-amd64
sudo mv gitea-${VER}-linux-amd64 /usr/local/bin/gitea

我们可以使用确认安装的版本

$gitea --version
Gitea version 1.9.4 built with GNU Make 4.1, go1.12.9 : bindata, sqlite, sqlite_unlock_notify

可以使用--help选项打印帮助页面

~$gitea --help
NAME:
   Gitea - A painless self-hosted Git service

USAGE:
   gitea [global options] command [command options] [arguments...]

VERSION:
   1.9.4 built with GNU Make 4.1, go1.12.9 : bindata, sqlite, sqlite_unlock_notify

DESCRIPTION:
   By default, gitea will start serving using the webserver with no
arguments - which can alternatively be run by running the subcommand web.

COMMANDS:
     web       Start Gitea web server
     serv      This command should only be called by SSH shell
     hook      Delegate commands to corresponding Git hooks
     dump      Dump Gitea files and database
     cert      Generate self-signed certificate
     admin     Command line interface to perform common administrative operations
     generate  Command line interface for running generators
     migrate   Migrate the database
     keys      This command queries the Gitea database to get the authorized command for a given ssh key fingerprint
     convert   Convert the database
     help, h   Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --port value, -p value         Temporary port number to prevent conflict (default: "3000")
   --pid value, -P value          Custom pid file path (default: "/var/run/gitea.pid")
   --custom-path value, -C value  Custom path file path (default: "/usr/local/bin/custom")
   --config value, -c value       Custom configuration file path (default: "/usr/local/bin/custom/conf/app.ini")
   --version, -v                  print the version
   --work-path value, -w value    Set the gitea working path (default: "/usr/local/bin")
   --help, -h                     show help

DEFAULT CONFIGURATION:
     CustomPath:  /usr/local/bin/custom 
     CustomConf:  /usr/local/bin/custom/conf/app.ini
     AppPath:     /usr/local/bin/gitea
     AppWorkPath: /usr/local/bin

创建系统服务单元

sudo vim /etc/systemd/system/gitea.service

将文件配置为setUser,Group和WorkDir

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mariadb.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
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=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

重新加载systemd并重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart gitea

同时启用服务以在启动时启动

sudo systemctl enable gitea

配置Nginx反向代理

如果我们想使用不带端口的域名访问Gitea UI,则需要配置Apache或者NGINX反向代理

sudo yum install nginx

创建一个VirtualHost反向代理配置文件

sudo vim /etc/nginx/conf.d/gitea.conf

加:

server {
    listen 80;
    server_name git.example.com;

    location/{
        proxy_pass http://localhost:3000;
    }
}

如果使用SSL并希望将http重定向到https,请使用

server {
	listen 80;
        server_name  git.example.com;
	location/{
        	rewrite     ^ https://git.example.com$request_uri? permanent;
    }
}

server {
        listen       443 ssl;
	ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
        server_name git.example.com;

        location/{
            proxy_pass http://localhost:3000;
        }
}

用实际域名替换git.example.com。

重新启动Nginx服务:

sudo systemctl restart nginx

在CentOS 8/CentOS 7上完成Gitea安装

通过访问http://domain-name/install开始安装

设置数据库身份验证

在第一页上,设置数据库连接

提供的用户名和密码应与"数据库配置"部分中提供的用户名和密码匹配。如果数据库服务器位于其他主机上,请在"主机"部分下提供IP地址。

设置应用程序常规设置

提供应用程序URL,它可以是路由服务器IP地址或者解析为IP的域名。 SSH应该设置相同。

禁用用户自我注册

我们可以在"服务器和其他服务设置"下禁用用户自注册。这意味着管理员用户将手动创建用户帐户。

我们可以选择创建一个管理员用户帐户。默认情况下,rootuser将自动获得管理员访问权限。

完成配置后,单击"安装Gitea"按钮以完成安装。成功安装后,我们应该登录到Gitea管理控制台

有关高级配置和使用指南,请参阅Gitea文档。