Gogsは、Go言語で記述された無料のオープンソースGitサービスです。 Gogsは、最小限のハードウェアサーバーで独自のGitサーバーを作成して実行できる、簡単な自己ホスト型gitサービスです。 Gogs web-UIはGitHubと非常によく似ており、MySQL、PostgreSQL、およびSQLiteデータベースのサポートを提供します。
このチュートリアルでは、Ubuntu16.04でGogsを使用して独自のGitサービスをインストールおよび構成する方法を段階的に説明します。このチュートリアルでは、UbuntuシステムにGoをインストールする方法、PostgreSQLをインストールする方法、GoアプリケーションのリバースプロキシとしてNginxWebサーバーをインストールして構成する方法などの詳細について説明します。
- Ubuntu 16.04
- root権限
- システムの更新とアップグレード
- PostgreSQLのインストールと構成
- GoとGitをインストールする
- ゴグをインストールする
- ゴグを構成する
- サービスとしてのGogsの実行
- Nginxをリバースプロキシとしてインストールして構成する
- テスト
先に進む前に、すべてのUbuntuリポジトリを更新し、すべてのパッケージをアップグレードしてください。
以下のaptコマンドを実行します。
sudo apt update
sudo apt upgrade
Gogsは、MySQL、PostgreSQL、SQLite3、MSSQL、およびTiDBデータベースシステムのサポートを提供します。
このガイドでは、GogsインストールのデータベースとしてPostgreSQLを使用します。
以下のaptコマンドを使用してPostgreSQLをインストールします。
sudo apt install -y postgresql postgresql-client libpq-dev
インストールが完了したら、PostgreSQLサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start postgresql
systemctl enable postgresql
PostgreSQLデータベースがUbuntuシステムにインストールされています。
次に、Gogs用の新しいデータベースとユーザーを作成する必要があります。
'postgres'ユーザーとしてログインし、'psql'コマンドを実行してPostgreSQLシェルを取得します。
su - postgres
psql
「git」という名前の新しいユーザーを作成し、「CREATEDB」のユーザー権限を付与します。
CREATE USER git CREATEDB;
\password git
'gogs_production'という名前のデータベースを作成し、'git'ユーザーをデータベースの所有者として設定します。
CREATE DATABASE gogs_production OWNER git;
Gogsインストール用の新しいPostgreSQLデータベース「gogs_production」とユーザー「git」が作成されました。
以下のaptコマンドを使用してリポジトリからGitをインストールします。
sudo apt install git
次に、新しいユーザー「git」をシステムに追加します。
sudo adduser --disabled-login --gecos 'Gogs' git
'git'ユーザーとしてログインし、新しい'local'ディレクトリを作成します。
su - git
mkdir -p /home/git/local
'local'ディレクトリに移動し、以下に示すようにwgetコマンドを使用して' Go'(最新バージョン)をダウンロードします。
cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
go圧縮ファイルを抽出して、削除します。
tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz
「Go」バイナリファイルが「〜/ local/go」ディレクトリにダウンロードされました。次に、環境をセットアップする必要があります。システムで「git」ユーザーの下で「go」コマンドを実行できるように、「GOROOT」および「GOPATHディレクトリ」を定義する必要があります。
次のすべてのコマンドを実行します。
cd ~/
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
次に示すように、「source〜/.bashrc」コマンドを実行してBashをリロードします。
source ~/.bashrc
デフォルトのシェルとしてBashを使用していることを確認してください。
次に、「go」コマンドを実行してバージョンを確認します。
go version
そして、次のスクリーンショットに示すような結果が得られることを確認してください。
これで、Goがシステムの「git」ユーザーの下にインストールされました。
「git」ユーザーとしてログインし、「go」コマンドを使用してGitHubから「Gogs」をダウンロードします。
su - git
go get -u github.com/gogits/gogs
このコマンドは、「GOPATH/src」ディレクトリにあるすべてのGogsソースコードをダウンロードします。
'$ GOPATH / src / github.com / gogits / gogs'ディレクトリに移動し、以下のコマンドを使用してgogsをビルドします。
cd $GOPATH/src/github.com/gogits/gogs
go build
そして、エラーが発生しないことを確認してください。
次に、以下のコマンドを使用してGogs GoGitServiceを実行します。
./gogs web
このコマンドは、デフォルトのポート3000でGogsを実行します。
Webブラウザーを開き、ポート3000でサーバーのIPアドレスを入力します。私のアドレスはhttp://192.168.33.10:3000/
です。そして、以下のような結果が得られるはずです。
GogsはUbuntuシステムにインストールされています。ここでターミナルに戻り、「Ctrl+c」を押して終了します。
このステップでは、Gogsのカスタム構成を作成します。
Gogsインストールディレクトリに移動し、新しい「custom/conf」ディレクトリを作成します。
cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
デフォルト設定をカスタムディレクトリにコピーし、vimを使用して編集します。
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini
'[サーバー] 'セクションで、サーバー'HOST_ADDR'を'127.0.0.1'に変更します。
[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
'[データベース] 'セクション、独自のデータベース情報ですべてを変更します。
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs_production
USER = git
PASSWD = [email protected]#
保存して終了します。
次に、以下に示すようにコマンドを実行して構成を確認します。
./gogs web
そして、次のような結果が得られることを確認してください。
Gogsは、ポート3000の「localhost」の下でカスタム構成で実行されています。
このステップでは、UbuntuシステムでGogsをサービスとして構成します。 '/ etc / systemd/system'ディレクトリの下に新しいサービスファイル構成'gogs.service'を作成します。
'/ etc / systemd / system'ディレクトリに移動し、vimエディタを使用して新しいサービスファイル'gogs.service'を作成します。
cd /etc/systemd/system
vim gogs.service
次のgogsサービス構成をそこに貼り付けます。
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service 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
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git
[Install]
WantedBy=multi-user.target
保存して終了します。
次に、systemdサービスをリロードします。
systemctl daemon-reload
gogsサービスを開始し、systemctlコマンドを使用してシステムの起動時に毎回起動できるようにします。
systemctl start gogs
systemctl enable gogs
Gogsは現在Ubuntuシステムでサービスとして実行されています。
以下のコマンドを使用して確認してください。
netstat -plntu
systemctl status gogs
そして、以下のような結果が得られるはずです。
このステップでは、NginxをGogsのリバースプロキシとして構成します。独自のリポジトリからのNginxパッケージを使用します。
add-aptコマンドを使用してNginxリポジトリを追加します。
sudo add-apt-repository -y ppa:nginx/stable
次に、すべてのUbuntuリポジトリを更新し、以下のaptコマンドを使用してNginxをインストールします。
sudo apt update
sudo apt install nginx -y
次に、「/ etc / nginx / sites-available」ディレクトリに移動し、新しい仮想ホストファイル「gogs」を作成します。
cd /etc/nginx/sites-available
vim gogs
次の構成をそこに貼り付けます。
server {
listen 80;
server_name git.hakase-labs.co;
location / {
proxy_pass http://localhost:3000;
}
}
保存して終了します。
注:
'server_name'行を独自のドメイン名に変更します。
次に、新しい仮想ホストをアクティブにして、nginx構成をテストします。
ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
nginx -t
エラーがないことを確認してから、Nginxサービスを再起動します。
systemctl restart nginx
ウェブブラウザを開き、gogsのURLを入力します。私のものはhttp://git.hakase-labs.co
これで、インストールページが表示されます。ページの上部に、PostgreSQLデータベース情報をすべて入力します。
次に、一番下までスクロールして、[管理者アカウントの設定]ドロップダウンをクリックします。
管理者ユーザー、パスワード、メールアドレスを入力してください。
次に、[ゴグのインストール]ボタンをクリックします。
そして、以下に示すように、Gogsユーザーダッシュボードにリダイレクトされます。
以下はGogsの「管理ダッシュボード」です。
Gogsは、Ubuntu16.04サーバーにPostgreSQLデータベースとNginxWebサーバーとともにインストールされます