静看光阴荏苒
不管不顾不问不说也不念

使用Gitea自建一个Git服务器

Gitea是一个开源社区驱动的Gogs克隆,是一个轻量级的代码托管解决方案,后端采用Go编写。

Gitea和Gogs是有点渊源的,虽然可以说没有Gogs就没有Gitea,但我还是更喜欢Gitea一些。。。

下面我在一台CentOS7上面尝试部署,Gitea支持的数据库有SQLite/MySQL/PostgreSQL,这里我还是采用MySQL的方式,如果你想更简单的话可以选择SQLite。

更新系统:

yum -y update

安装Git:

yum -y install git

新建一个MySQL的源:

vi /etc/yum.repos.d/mysql-community.repo

写入:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

然后使用yum安装(安装的版本是5.7,机器内存要大于2G):

yum -y install mysql-community-server

立即启动以及设置开机启动:

systemctl enable mysqld
systemctl start mysqld

查看初次安装完成后的默认ROOT密码:

grep 'temporary password' /var/log/mysqld.log

使用初始ROOT密码登录:

mysqladmin -u root -p password

然后修改ROOT密码,这里会提示让你输入两遍新的的密码。完成之后重启MySQL:

systemctl restart mysqld

使用你设置的新ROOT密码登录到MySQL的终端内:

mysql -u root -p

创建数据库:

CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

给数据库授权:

GRANT ALL PRIVILEGES ON gitea.* TO 'root'@'localhost';

保存更改:

FLUSH PRIVILEGES;

退出MySQL的终端:

quit

现在就可以下载Gitea的二进制文件了:

wget https://github.com/go-gitea/gitea/releases/download/v1.6.3/gitea-1.6.3-linux-amd64

给执行权限:

chmod +x gitea-1.6.3-linux-amd64

移动到/usr/bin:

mv gitea-1.6.3-linux-amd64 /usr/bin/gitea

新建一个systemd服务文件:

vi /etc/systemd/system/gitea.service

写入:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/gitea web
Restart=always

[Install]
WantedBy=multi-user.target

启动Gitea以及设置开机启动:

systemctl start gitea
systemctl enable gitea

安装certbot用于签发SSL证书:

yum -y install certbot

签发命令:

certbot certonly --standalone -d example.com

安装Nginx用于反向代理:

yum -y install nginx

新建一个Nginx站点配置文件:

vi /etc/nginx/conf.d/gitea.conf

写入:

server {
    listen       80;
    listen       443 ssl http2;
    client_max_body_size 100000m;
    server_name  example.com;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    ssl_certificate    /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

location / {
    proxy_pass       http://127.0.0.1:3000;
    proxy_redirect             off;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
    }
}

启动Nginx以及设置开机启动:

systemctl start nginx
systemctl enable nginx

现在访问你的域名,应该可以看到Gitea的首页:

点击右上角的注册按钮开始进行安装,首先是设置数据库:

然后下面这个,因为我不需要用到SSH这个功能,所以就没做改动,Gitea基本URL修改成自己的域名:

往下翻可以设置邮件SMTP什么的,建议这里就先把管理员账号创建了:

这些设置在完成安装之后也是可以进行修改的,默认情况下,我这个环境的配置文件保存在:

/usr/bin/custom/conf/app.ini

修改之后务必重启Gitea使其生效:

systemctl restart gitea

现在可以简单测试下功能是否正常,首先我尝试着创建了一个仓库:

项目页面,我怎么感觉这UI比Github还要好看。。。

赞(6)
未经允许不得转载:荒岛 » 使用Gitea自建一个Git服务器
分享到: 更多 (0)

评论 15

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    每次逛完大佬网站都是一脸懵逼走出去

    zturns6年前 (2019-01-07) Firefox 64.0 Firefox 64.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • :razz: 下次搞几个妹子,让你走出去是一脸满足

      LALA6年前 (2019-01-07) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • :neutral: 那时候怕是走不动路了

        zturns6年前 (2019-01-07) Firefox 64.0 Firefox 64.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    牛逼

    艾滋狂魔6年前 (2019-01-08) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    这个必须HTTPS么?

    ohoh6年前 (2019-01-08) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Mac OS X  10.14.0 Mac OS X 10.14.0回复
    • 非必需,但是提供Git服务的话还是建议上个SSL。

      LALA6年前 (2019-01-09) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  4. #4

    为什么和gogs基本长的一模一样 :eek: :eek:

    Quarter6年前 (2019-01-08) Google Chrome 71.0.3578.99 Google Chrome 71.0.3578.99 Android 9 Android 9回复
    • 差不多就相当于Gogs的一个分支吧,至于为什么要另起炉灶,看了这个你就知道了:https://blog.gitea.io/2016/12/welcome-to-gitea/

      LALA6年前 (2019-01-09) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    大佬,可以用宝塔面板安装吗?

    Liuben6年前 (2019-04-24) Mozilla Compatible Mozilla Compatible iPhone iOS 12.2 iPhone iOS 12.2回复
    • 可以的。

      LALA6年前 (2019-04-24) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 那该怎么操作啊

        Liuben6年前 (2019-04-24) Mozilla Compatible Mozilla Compatible iPhone iOS 12.2 iPhone iOS 12.2回复
        • 。。在宝塔创建个数据库,Nginx配一下反代规则应该就行了。。

          LALA6年前 (2019-04-25) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    谢谢lala大佬!我想请教一个问题:我设置域名之后(http或者https都试过)可以成功解析,但是页面完全没有css加载,也没有favorite.ico显示,何解?… 新手也不知道应该从哪里开始排错,还望给个思路指点一下下,万分感谢。CentOS 7 x64,宝塔面板,mySQL版本5.6

    Chouchou5年前 (2020-02-23) Google Chrome 80.0.3987.116 Google Chrome 80.0.3987.116 Windows 10 x64 Edition Windows 10 x64 Edition回复
  7. #7

    更新,已经修好了…… 确实是JS css内容没有加载,于是给它们都加了proxy_pass
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
    expires 30d;
    error_log off;
    access_log /dev/null;
    proxy_pass http://127.0.0.1:3001;
    }

    location ~ .*\.(js|css)?$
    {
    expires 12h;
    error_log off;
    access_log /dev/null;
    proxy_pass http://127.0.0.1:3001;
    }

    location / {
    proxy_pass http://127.0.0.1:3001;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    }

    Chouchou5年前 (2020-02-23) Google Chrome 80.0.3987.116 Google Chrome 80.0.3987.116 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿