使用Nginx反向代理在CentOS 7/8上安装Gitea自托管Git服务
本指南将在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文档。