如何在Ubuntu 18.04上安装Gitea

・9 分钟阅读

使用不同的系统?

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

前提条件

  • 新的Ubuntu 18.04实例,至少有2个CPU核心和1GB RAM,
  • 有sudo权限的非root用户,
  • Nginx
  • Git
  • MariaDB

步骤1:安装Nginx

更新Ubuntu 18.04服务器实例。

 
sudo apt update

 

安装Nginx 。


sudo apt -y install nginx

安装Nginx后,通过浏览浏览器中的Nginx测试页来测试它是否正常工作,打开网页浏览器并将它指向http://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

第二步:安装Git

安装Git 。


sudo apt -y install git

安装后,检查版本:


git --version
git version 2.17.1

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

Gitea支持以下数据库

  • MariaDB/mysql
  • PostgreSQL
  • SQLite
  • TiDB

对于本教程,我们会安装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

然后,运行下面的命令以保护MariaDB服务器,创建root密码,并且禁止远程root访问。


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;

第4步准备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 wget -O gitea https://dl.gitea.io/gitea/1.5.0/gitea-1.5.0-linux-amd64 
sudo chmod +x 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 http://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地址。


http://example.com/install

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

Zuoxiaojuan profile image