0x01 爲啥要費勁的自己搭一個git服務器
本人空閒時間喜歡自己鼓搗一些項目,但是又不喜歡在本地存,所有都放到github上了,最近去Github看了一下,又多又亂,github儼然成了一個demohub了,所以有了建一個自己的代碼倉庫管理自己代碼的想法。另一方面,也由於Github的訪問速度有點慢,所以說幹就幹,在自己的服務器上搭了這麼一個gitea服務器。
調查了一些市面上的Git服務器,大概有這麼三個gogs、gitlab、gitea。
- gogs是使用go語言開發的一個輕量級的git服務器。
- gitlab算是目前企業使用較多,也比較火的一個git自建服務應用,但是對於個人來說,服務器的配置可能跟不上。
- gitea是gogs的一個克隆版本,但是相比較gogs,是採用社區進行維護的,問題解決的也比較及時。
因此我這裏用gitea搭建了一個自己的git服務器,用來作爲自己的一個代碼倉庫,一個方便管理,另一個是方便裝逼。
0x02 準備工作
我自己搭建的使用的存儲數據庫採用的是mysql,當然可以根據gitea的文檔自己選擇和搭建。
這裏放一下gitea的官網,有需要的可以參照英文文檔步驟自己搭建。
首先要安裝mysql數據庫,由於之前我已經安裝過了,這裏就不做安裝步驟的,有需要的自己上網搜索。
Mysql
1、 以root用戶登錄數據庫。
[root@renhj ~]# mysql -u root -p
Enter password:
2、 創建gitea所需的數據庫用戶,這裏我用的用戶名爲gitea,密碼爲!QAZ2wsx, 你可以用你熟悉的比較安全的密碼。
如果你的gitea和mysql是在同一臺服務器上,按照下面的創建:
mysql> CREATE USER 'gitea' IDENTIFIED BY '!QAZ2wsx';
對於不在一臺服務器上的,則可以按照下面的語句進行創建:
mysql> CREATE USER 'gitea'@'%' IDENTIFIED BY '!QAZ2wsx';
%
是對於所有外部服務器進行匹配的,如果你只想限定某一臺服務器登錄mysql,可以把%
換成你的gitea服務器的IP地址。
3、創建gitea所需的數據庫giteadb,編碼用utf8mb4.
mysql> CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
4、授權數據庫的權限。
git服務和mysql在一臺服務器上的:
mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
git服務和mysql不在一臺服務器上的:
mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'%';
可以把%
換成你的gitea服務器的IP地址。
mysql> FLUSH PRIVILEGES;
Git
檢查服務器上是否安裝了git
[root@renhj ~]# git --version
git version 1.8.3.1
如果沒有安裝的話,用yum或者二進制包進行安裝
[root@renhj ~]# sudo yum install git -y
系統
1、創建運行gitea服務的系統用戶
[root@renhj ~]# groupadd git
[root@renhj ~]# adduser --system --shell /bin/bash --comment 'Git Version Control' --user-group --home-dir /home/git -m git
2、創建運行所需的目錄
[root@renhj ~]# mkdir -p /var/lib/gitea/{custom,data,log}
[root@renhj ~]# chown git:git /var/lib/gitea/{data,indexers,log}
[root@renhj ~]# mkdir /etc/gitea
[root@renhj ~]# chown root:git /etc/gitea/
[root@renhj ~]# chmod 770 /etc/gitea/
3、下載二進制文件
[root@renhj ~]# mkdir /usr/local/bin/
[root@renhj ~]# cd /usr/local/bin/
[root@renhj bin]# wget -O gitea https://dl.gitea.io/gitea/1.9.6/gitea-1.9.6-linux-amd64
[root@renhj bin]# chmod +x gitea
4、將gitea做成服務
[root@renhj ~]# vim /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
Requires=mysqld.service
[Service]
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
[Install]
WantedBy=multi-user.target
5、啓動gitea
[root@renhj ~]# systemctl daemon-reload
[root@renhj ~]# systemctl enable gitea
[root@renhj ~]# systemctl start gitea
啓動之後可以通過http://[you ip]:3000進行訪問,或者可以通過nginx做一個反向代理,nginx的安裝這裏就不寫了,我把反向代理的配置貼出來。
6、nginx配置反向代理
[root@renhj bin]# vim /etc/nginx/conf.d/gitea.conf
server {
listen 80;
server_name git.renhj.org;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
}
}
同時不要忘了在你的域名解析上加上一條git的解析。
7、註冊git管理員及配置
這裏已經算是安裝完成了,但是gitea的管理員是沒有的,數據庫其他配置也沒有配置。
通過訪問/install
頁面進行配置,這裏我的地址是http://git.renhj.org/install
我這裏已經配置完成了,所以就不展示了,這裏你配置上自己的數據庫信息就行之,之後會讓你進行註冊,第一個註冊的用戶是管理員賬戶。
8、配置倉庫地址
我查了很多網上的教程,很多教程到上一步就結束了,其實不是。還需要配置一下git代碼的地址,不然你git推送和拉取都是localhost的地址。
將/etc/gitea/app.ini文件裏server標籤下的SSH_DOMAIN、DOMAIN、ROOT_URL都改爲你自己配置的域名如下。
[root@renhj bin]# vim /etc/gitea/app.ini
[server]
SSH_DOMAIN = git.renhj.org
DOMAIN = git.renhj.org
HTTP_PORT = 3000
ROOT_URL = http://git.renhj.org/
當然還有一些配置如禁止註冊、郵箱配置,我這裏也不需要,就不配置了。如果你需要可以到官網上去找,或者聯繫我。