sudo apt update sudo apt install git
Ubuntu 22.04.3 LTSにGitサーバーの構築
作成日 | : | 2024/01/08 |
---|---|---|
最終更新日 | : | 2024/01/08 |
Ubuntu 22.04.3 LTSにGitサーバーの構築
作成日 | : | 2024/01/08 |
---|---|---|
最終更新日 | : | 2024/01/08 |
概要
Gitのホスティングサイトとして、 GitHub[1] や Bitbucket[2] が有名です。ローカルでの開発時に閉じた環境でこれらのサイトとおなじようにGUIベースでGitのリポジトリをホスティングしたい場合があり、OSSとして GitLab[3] や GitBucket[4] 、 Gogs[5] などがあります。今回は、構築時にあまりリソースを必要としない Gogs を Ubuntu 22.04.03 LTS 上に構築します。
下準備
Gogs のインストールは公式サイトの Installation[6] を参考にするのが良さそうです。構築するために、MySQLやPostgreSQL、SQLite3などのDBが必要です。MySQLを導入したDBサーバーは既に構築済なのでそちらを利用することにします。
Gitのインストール
まず、サーバーにGitをインストールします。
Goのインストール
今回は、 Install from source[7] に沿って、ソースコードから構築します。
GogsはGoで書かれているので、Goをインストールします。
Gitをインストールする際に apt update
は既に実施しているため省略します。
sudo apt install golang
ユーザーの追加
Gogsを動作させるためのユーザーとして git
を追加します。
sudo adduser --disabled-login --gecos 'Gogs' git
Gogsで使用するディレクトリの作成
Gogsで使用するディレクトリを作成し、パーミッションを変更しておきます。
sudo mkdir /var/gogs sudo chown git:git /var/gogs sudo mkdir /var/log/gogs sudo chown git:git /var/log/gogs
MySQLのクライアントのインストール
MySQLのクライアントをインストールします。
sudo apt install mysql-client
MySQLサーバーの設定
MySQLサーバーにログインし、以下のSQL文を発行しておきます。
CREATE DATABASE gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'gogs'@'%' IDENTIFIED BY 'パスワード'; GRANT ALL ON gogs.* to 'gogs'@'%' WITH GRANT OPTION;
Gogsの構築
Gogsのclone
Gogsをリポジトリからcloneします。
git clone https://github.com/gogs/gogs.git gogs
Gogsのbuild
Gogsをbuildします。
cd gogs git checkout v0.13.0 go build -o gogs
Gogsの動作確認
Gogsを動作確認します。
./gogs web
ブラウザで、Gogsをインストールしたサーバーへアクセスします。デフォルトではポート番号が3000番になるので、 URLは http://サーバーのIPアドレス:3000
になります。
ページが表示されたら、コンソールから CTRL + C を入力し、 Gogsを終了します。
Gogsの設置
Gogsを移動します。 また、設定に必要となるディレクトリを作成しておきます。
sudo mv ~/gogs /usr/local/gogs mkdir /usr/local/gogs/custom sudo chown git:git /usr/local/gogs/custom
Gogsの起動スクリプトの編集
Gogsの起動スクリプトを環境に合わせて修正します。 Ubuntu 22.04.3 LTSの場合はsystemdのものをベースにします。
vi /usr/local/gogs/scripts/systemd/gogs.service
差分としては、以下になります。
--- gogs.service.org 2024-01-07 15:28:47.776078301 +0000 +++ gogs.service 2024-01-07 16:07:21.034870359 +0000 @@ -2,7 +2,6 @@ Description=Gogs After=syslog.target After=network.target -After=mariadb.service mysql.service mysqld.service postgresql.service memcached.service redis.service [Service] # Modify these two values and uncomment them if you have @@ -14,14 +13,14 @@ Type=simple User=git Group=git -WorkingDirectory=/home/git/gogs -ExecStart=/home/git/gogs/gogs web +WorkingDirectory=/usr/local/gogs +ExecStart=/usr/local/gogs/gogs web Restart=always Environment=USER=git HOME=/home/git # Some distributions may not support these hardening directives. If you cannot start the service due # to an unknown option, comment out the ones not supported by your version of systemd. -ProtectSystem=full +ProtectSystem=false PrivateDevices=yes PrivateTmp=yes NoNewPrivileges=true
起動スクリプトを設置し、起動時に実行されるようにします。
sudo cp /usr/local/gogs/scripts/systemd/gogs.service /etc/systemd/system/ sudo systemctl start gogs sudo systemctl enable gogs
Gogsの初期設定
ブラウザで、Gogsをインストールしたサーバーへアクセスします。デフォルトではポート番号が3000番になるので、 URLは http://サーバーのIPアドレス:3000
になります。アクセスすると設定画面が表示されるので、今回は以下のように設定しました。


必要に応じてオプションの設定も実施します。設定の入力を完了したら、「Gogsをインストール」ボタンをクリックします。

これで、インストールは完了です。アカウントの作成やリポジトリの作成については割愛します。
まとめ
Gogsサーバーを構築する場合は以下を実施します。
- Goのインストール
- 適切なバージョンのソースコードを用意
- 公式ドキュメントを適宜読み替え