怎样在 Ubuntu 18.04 上安装 Gitea

Gitea 是一个由 git 提供支持的替代开源、自托管版本控制系统。 Gitea 是用 Golang 编写的,是一个轻量级的解决方案,可以托管在任何平台上。

先决条件

  • 具有至少 2 个 CPU 内核和 1 GB RAM 的新 Vultr Ubuntu 18.04 实例
  • 非 root 用户 sudo 特权。
  • nginx
  • 吉特
  • 玛丽亚数据库

第 1 步:安装 Nginx

更新您的 Vultr Ubuntu 18.04 服务器实例。

sudo apt update

安装 Nginx。

sudo apt -y install nginx

安装好Nginx后,通过浏览器浏览nginx测试页面来测试它是否正常工作。 打开您的网络浏览器并将其指向 https://example.com

以下命令可用于停止、重新加载、重启、检查状态和启用 Nginx。

sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl restart nginx.service
sudo systemctl reload nginx.service
sudo systemctl enable nginx.service

第 2 步:安装 Git

安装 Git。

sudo apt -y install git

安装后,检查版本:

git --version
git version 2.17.1

第 3 步:安装 MariaDB 数据库服务器

Gitea 支持以下数据库

  • MariaDB/MySQL
  • PostgreSQL
  • SQLite
  • 数据库

在本教程中,我们将安装 MariaDB 服务器和客户端。

sudo apt -y install mariadb-server mariadb-client

安装 MariaDB 后,可以使用以下命令停止、启动、重启、检查状态和启用它。

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl restart mariadb.service
sudo systemctl status mariadb.service
sudo systemctl enable mariadb.service

之后,运行以下命令通过创建 root 密码并禁止远程 root 访问来保护 MariaDB 服务器。

sudo mysql_secure_installation

出现提示时,请按照指南回答以下问题。

Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
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

重新启动 MariaDB。

sudo systemctl restart mariadb.service

要测试是否安装了 MariaDB,请键入以下命令以登录到 MariaDB 服务器

sudo mysql -u root -p

然后输入您在上面创建的密码进行登录。 您将看到 MariaDB 欢迎消息。

创建一个名为的数据库 gitea.

CREATE DATABASE gitea;

创建一个名为的数据库用户 giteauser 使用新密码。

CREATE USER 'giteauser'@'localhost' IDENTIFIED BY 'new_password_here';

然后授予用户对数据库的完全访问权限。

GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;

最后,保存更改并退出。

FLUSH PRIVILEGES;
EXIT;

第四步:准备Gitea环境

创建一个用户来运行 Gitea。

sudo adduser 
   --system 
   --shell /bin/bash 
   --gecos 'Git Version Control' 
   --group 
   --disabled-password 
   --home /home/git 
   git

创建所需的目录结构。

sudo mkdir -p /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 mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

第五步:安装Gitea

使用方法下载 Gitea 二进制文件 官方分发页面.

将二进制文件复制到全局位置。

sudo cp gitea /usr/local/bin/gitea

第六步:创建服务文件自动启动Gitea

创建一个linux服务文件。

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

使用以下内容填充文件。

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=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
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

在启动时启用并启动 Gitea。

sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea

运行状态命令。

sudo systemctl status gitea

● gitea.service - Gitea (Git with a cup of tea)
  Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: en
  Active: active (running) since Wed 2018-10-10 14:15:28 CDT; 19ms ago
 Main PID: 17769 (gitea)
   Tasks: 4 (limit: 2321)
  CGroup: /system.slice/gitea.service
       ├─17769 /usr/local/bin/gitea web -c /etc/gitea/app.ini
       └─17774 /usr/local/bin/gitea web -c /etc/gitea/app.ini

第 7 步:将 Nginx 配置为反向代理

删除默认的 nginx 配置文件。

sudo rm /etc/nginx/sites-enabled/default

为 Gitea 创建反向代理配置。

sudo nano /etc/nginx/sites-available/git

使用以下配置填充文件。

upstream gitea {
    server 127.0.0.1:3000;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com;
    root /var/lib/gitea/public;
    access_log off;
    error_log off;

    location / {
      try_files maintain.html $uri $uri/index.html @node;
    }

    location @node {
      client_max_body_size 0;
      proxy_pass https://localhost:3000;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_max_temp_file_size 0;
      proxy_redirect off;
      proxy_read_timeout 120;
    }
}

启用 Gitea Nginx 反向代理配置。

sudo ln -s /etc/nginx/sites-available/git /etc/nginx/sites-enabled

然后重新加载 Nginx 服务。

sudo systemctl reload nginx.service

接下来,打开浏览器并浏览到服务器主机名或 IP 地址。

https://example.com/install

按照屏幕上的说明完成 Gitea 设置。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: ,