18

15分钟为自己架设优雅如Github的代码仓库

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA%3D%3D&%3Bmid=2654078561&%3Bidx=3&%3Bsn=73e6d4d3dbbf94f303f402c569ea17f3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

Github大家都熟悉。

除了开源的项目外,有时候,大家也会把自己或团队、公司的项目传到Github的私有仓库里,把Github当成自己的私人Git Server。

但是,用Github会有一些问题:

  1. Github从国内访问不是很稳定,有时候会很慢,很影响使用;

  2. Github毕竟是个商业运作的网站,有些规则未来是否会变,不得而知;

  3. 一般我们放到私有仓库的项目,不会做很仔细的清理,代码中的密钥、服务器地址、帐号,就那样写在那里。一旦这个库被公开,这些信息会成为生产系统最大的漏洞。

第三点尤其重要。回想一下,前几天Github私有仓库被黑客攻破的事,会影响到您、或您的团队吗?

所以,我们希望有一个自己的Git Server,

  1. 能满足Git管理代码的需要,这是最基本的;

  2. 能像Github一样,有一个完整的BS架构的管理界面(我喜欢那个界面,而且很熟悉);

  3. 最好是全部可控的,是自己搭建的Git Server。

今天给大家介绍的,叫Gitea,是我自己用的完全类似Github的Git Server。

一、Gitea

先看一下Gitea运行后的样子:

UB3EZf7.jpg!web

是不是很熟悉?

Gitea是一个开源社区驱动的代码托管解决方案,使用Go作为后端语言,并形成一个可执行的程序。它可以支持x86、x64,以及ARM和PowerPC,换句话说,你可以装到你喜欢和需要的任何操作系统上。

Gitea的官网:https://gitea.io

Gitea最新版本的下载地址:https://dl.gitea.io/gitea

在Gitea的官网上,可以找到从安装到使用的全部帮助。而这篇文章,是根据我自己的经验以及刨过的坑,一步步教大家完成一个Gitea的完整搭建及配置调整。

二、安装前的准备

Gitea运行需要两个外部系统:数据库和Git客户端。

第一部分:数据库

Gitea需要数据库支持。

Gitea的代码仓库,是以文件的形式存放的。数据库用来记录相关的版本、设置及各种pull&commit信息。

Gitea支持PostgreSQL、MySQL、SQLite和MS SQL,从使用效果上没什么区别。

如果你本身有这些数据库,那可以跳过这一步。

如果没有,可以装一个SQLite,方便,也简单。

为了方便大家使用,我会分Windows和Linux两条线的安装来写。

两个系统安装的意义在于:Windows是大多数人开发用的平台,可以装一个给自己的代码用;而Linux是服务器的平台,可以装一个给团队用。

  1. Windows安装SQLite

SQLite官网:https://sqlite.org

SQLite最新版本下载地址:https://sqlite.org/download.html

Windows下安装SQLite,只需要从官网上下载:https://sqlite.org/2020/sqlite-dll-win64-x64-3310100.zip就行。下载完成后,解压到一个目录,比方: D:\Program Files\SQLite3

然后,我们需要把这个目录加到环境变量Path中。在Windows中,按WIN+R打开运行,输入 sysdm.cpl 打开系统属性,进到 高级 -> 环境变量 ,在 系统变量 中,编辑 Path ,在变量值的最后加入 ;D:\Program Files\SQLite3 即可。

就这么简单,SQLite在Windows下安装完成。

当然,这个安装完成的是应用系统使用SQLite的支持。如果你想管理SQLite,或看看数据库里有什么内容,可以多下载一个:https://sqlite.org/2020/sqlite-tools-win32-x86-3310100.zip,下载完,也是解压到 D:\Program Files\SQLite3 目录下,就可以了。使用时,在命令行输入:

> sqlite3 your_path/your_database_file_name
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite>

如果没看到这个,说明Path没启用。退出重登一下Windows就好。

  1. Linux安装SQLite

Linux下安装SQLite,可以从下载页下载源代码自行编译,也可以直接下载编译好的二进制包。当然还可以更简单的从包源安装:

# apt-get install sqlite3

SQLite在Linux下也安装完成。

第二部分:Git客户端

Gitea运行还需要Git客户端。可以使用任何Git客户端。如果已经安装了,可以跳过下面这一步。

  1. Windows安装Git客户端

Git官网:https://gitforwindows.org

官网进去后,有一个大大的 Download 按钮,用力点下去,就开始下载。

下载完成后,是个可执行的安装文件。运行安装文件,即可完成Git客户端的安装。

安装完成后,也需要在环境变量中设置 Path ,加进去 Git 命令的运行目录。Git运行目录是Git安装目录下的 bin 目录。

  1. Linux安装Git客户端

大多数情况下,Linux下会自带Git客户端,可以检查一下:

# git --version

如果已安装,会返回版本信息。

如果没有安装,使用包管理装一个

# apt-get install git

三、安装Gitea

安装Gitea我也分Windows和Linux两条线来写。因为Linux和Windows系统权限的管理方式不一样,所以安装过程会有一些不同。

  1. Windows安装

下载for Windows的最新版1.11.5:https://dl.gitea.io/gitea/1.11.5/gitea-1.11.5-windows-4.0-amd64.exe。

把下载下来的文件改成名,叫 gitea.exe ,然后放到一个目录,比方 D:\gitea 目录下,安装就完成了。

Gitea在Windows上可以直接运行,也可以加为Service。

我们先直接运行试试:

> d:\gitea\gitea.exe web
cmd/web.go:107:runWeb() [I] Starting Gitea on PID: 5840

这就算启动了。

当然,这只是个检查。正式运行时,我们还是需要把它加到Service里运行。按WIN+R,打开运行,输入命令:

sc create gitea start= auto binPath= "\"d:\gitea\gitea.exe\" web --config \"d:\gitea\custom\conf\app.ini\""

点确定,就加到Windows服务里了。

接下来,启动服务gitea,就完成了。

  1. Linux安装

下载for Linux的最新版1.11.5:

# wget -O gitea https://dl.gitea.io/gitea/1.11.5/gitea-1.11.5-linux-amd64

下载完成后,把gitea移到 /usr/local/bin 目录,并改为可执行。

# mv gitea /usr/local/bin
# chmod +x gitea

Gitea也就算是安装完成了。

下面建几个Gitea的数据目录:

# mkdir /var/lib/gitea
# mkdir /var/lib/gitea/{custom,data,log}
# mkdir /etc/gitea

目录的位置,文章中就采用Gitea推荐的位置了。实际安装时可以自己定义。

其中:

/var/lib/gitea是存放仓库相关文件的目录

/etc/gitea是存放配置文件app.ini的目录

为了服务器的安全,我们还需要做一点技术处理:创建一个系统用户 git

# adduser git --system --shell /bin/bash --group --disabled-password --home /home/git

把上面建立的几个目录给到 git 用户:

# chown -R git:git /var/lib/gitea
# chown git:git /var/gitea

Gitea在Linux上需要以Service的方式运行。

把以下配置保存到文件 gitea.service

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

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

修改 gitea.service 为可执行,并复制到 /etc/systemd/system 目录:

# chmod +x gitea.service
# mv gitea.service /etc/systemd/system# systemctl enable gitea.service

最后一步,启动Service:

# systemctl start gitea.service

完成。

四、设置Gitea

安装完成并运行启动后,我们需要对Gitea进行配置。

Gitea默认运行在3000端口上。所以,在浏览器打开:http://your_gitea_server_ip:3000,看到一个漂亮的界面,就说明安装正确,连上服务器了。

  1. 配置服务器

从界面右上角 注册登录 点进去,会看到一个很长的表格,别慌,我一个一个说。

  • 数据库设置

先选择数据库类型。如果是用原有的数据库,相关的参数需要填进去。我们安装用的Sqlite3,所以选择这个。下面会有一个数据库路径,这个不需要改,就用默认的。在Windows下,Gitea会自己在运行目录下建立目录和数据文件;Linux下我们是预先建立好的。

当然如果你有某种习惯,可以随便改,不过要注意,Windows下不存在问题,Linux下需要注意目录的权限。这个权限会跟着下面「以用户名运行」参数来设置。如果要修改,先看看下面的说法。

  • 一般设置

这里面:

站点名称,你的站点你自己起名喽;

仓库根目录,跟上面数据库文件路径一样,有默认位置,自己决定要不要改;

LFS根目录,跟仓库一样,用来存放大文件,

以用户名运行,这个要注意:Windows下面是SYSTEM,是服务的运行帐号,所以,如果要改,需要同步修改服务的运行帐号;Linux下面,是git,就是上文Linux安装的部分里,建立的那个系统帐号,同时,也是建立的几个目录的所有人。所以, 在Linux下,所有跟文件目录有关系的地方,如果需要修改,要同时把目录的权限改成这个用户

其它参数都好理解,不详细写了。

  • 服务和第三方服务设置

禁止用户自助注册,含义写的很明确。通常会禁掉。

启用页面访问限制,这个参数是决定这个网站是公开的还是私有的。如果这个外人像浏览Github一样访问你的这个仓库,可以勾选上。

  • 管理员帐号设置

这个网站,第一个注册的帐号,会自动成为管理员。在上面禁止注册后,需要这个管理员来建立用户帐号。

搞定上面的设置后,点最下面的立即安装,配置也完成了。

五、升级

Gitea社区很活跃,版本迭代很快。

有新版本时,先下载新版本的Gitea,然后停掉服务,覆盖旧的Gitea程序,再启动服务。搞定。

嗯,接下来,Enjoy your private Github !!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK