Gogsからの記事
序章
Gogs は、Goで記述されたセルフホストのGitサービスであり、実行が非常に簡単で、システムの使用量も少なくなっています。 これは、セルフホストのGitサービスをセットアップするための最も簡単で、最速で、最も苦痛のない方法であることを目指しています。
このチュートリアルを終了すると、Gogsの実行中のインスタンスが作成されます。これには、Webインターフェイス、管理ダッシュボード、Gitのプルやプッシュなどの操作へのアクセスが含まれます。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 任意のサイズのUbuntu14.04ドロップレット。
- sudo非rootユーザー。 このチュートリアルでは、セキュリティ上の懸念から、Gogsに対してのみ別のsudo非rootユーザーを使用します。 このチュートリアルでは、Gitサービスの規則に従って、この専用ユーザーの名前がgitであると想定しています。 このチュートリアルは、gitユーザーとして従う必要があります。
ステップ1—データベースをインストールします
このステップでは、バックエンドのGogsデータベースを作成します。
ログイン後、システムパッケージが最新であることを確認してください。
sudo apt-get update
MySQLをバックエンドサーバーとして使用するので、次にそれをインストールします。 ここでの-y
フラグは、すべてのプロンプトに対してyesを想定しています。
sudo apt-get -y install mysql-server
インストール中に、データベースrootユーザーのパスワードを入力するように求められます。 このチュートリアルの後半で必要になるため、安全なものを使用していることを確認し、覚えておいてください。
次に、gogs.sql
という名前のファイルを作成して開きます。 ここではnano
を使用していますが、お好みのテキストエディタを使用できます。
nano gogs.sql
以下の内容をファイルに貼り付け、保存して閉じます。
DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
最後に、MySQLでgogs.sql
を実行して、Gogsデータベースを作成します。 your_password
を、この手順の前半で選択したルートパスワードに置き換えます。
注:このコマンドでは、-p
フラグとパスワードの間にスペースはありません。
mysql -u root -pyour_password < gogs.sql
ソースからGogsをインストールするには、GitやMercurialなどのバージョン管理ツールが必要なので、次にインストールします。
sudo apt-get -y install mercurial git
SSH経由でリポジトリのクローンを作成する場合は、SSHサーバーが機能している必要がありますが、幸い、Ubuntu14.04にはすぐに使用できるサーバーが付属しています。
ステップ2—Goをインストールする
GogsはGoで記述されているため、Gogsをコンパイルする前にインストールする必要があります。
まず、Goに設定する必要のある環境変数がいくつかあります。 これを行うには、ファイル~/.bashrc
を開いて編集します。
nano ~/.bashrc
ファイルの最後に次の行を追加し、閉じて保存します。
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin
次に、変更を適用します。
source ~/.bashrc
次に、wget
を使用して、Goの最新の準拠バージョンをWebサイトからダウンロードします。 執筆時点では、最新のファイルはgo1.4.2.linux-amd64.tar.gz
です。
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
tar
を使用してアーカイブを解除します。
tar zxf go1.4.2.linux-amd64.tar.gz
ディレクトリを~/.bashrc
で定義した$GOROOT
に変更します。
sudo mv go $GOROOT
ここで、端末にgo
と入力すると、次のようになります。
go
次のように表示されます。
Go is a tool for managing Go source code.
Usage:
go command [arguments]
...
Use "go help [topic]" for more information about that topic.
ステップ3—サービスとしてのGogsのインストールと開始
Goには、Goプロジェクトのソースコードとそのすべての依存関係を簡単にダウンロードするためのコマンドget
が組み込まれています。これを使用して、Gogsをダウンロードします。
go get -d github.com/gogits/gogs
Gogsのソースコードは$GOPATH/src/github.com/gogits/gogs
にあるので、そこに移動します。
cd $GOPATH/src/github.com/gogits/gogs
次に、バイナリをビルドして生成します。 このコマンドの実行には少し時間がかかる場合があります。
go build
スーパーバイザーを使用してGogsサービスを管理します。
まず、インストールしましょう。
sudo apt-get -y install supervisor
スーパーバイザー構成セクションを作成して、Gogsデーモンを作成しましょう。 まず、ログファイルを保存するためのディレクトリを作成します。
sudo mkdir -p /var/log/gogs
次に、編集のためにスーパーバイザー構成ファイルを開きます。
sudo nano /etc/supervisor/supervisord.conf
次の内容をファイルに追加して、Gogsセクションを作成します。
[program:gogs]
directory=/home/git/go/src/github.com/gogits/gogs/
command=/home/git/go/src/github.com/gogits/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment = HOME="/home/git", USER="git"
user = git
このセクションでは、Gogsを起動するために実行するコマンドを定義し、Supervisorで自動的に起動し、ログファイルと対応する環境変数の場所を指定します。 スーパーバイザー構成の詳細については、このチュートリアルをお読みください。
次に、Supervisorを再起動します。
sudo service supervisor restart
次のコマンドで、Gogsが実行されていることを確認できます。
ps -ef | grep gogs
このようなものが出力として表示されるはずです。
root 1344 1343 0 08:55 ? 00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs web
stdout.log
ファイルも確認することで、サーバーが稼働していることを確認できます。
tail /var/log/gogs/stdout.log
次のような行が表示されます。
2015/03/09 14:24:42 [I] Gogs: Go Git Service 0.5.16.0301 Beta
また、URLhttp://your_server_ip:3000/
でWebページにアクセスできるはずです。 これによりインストールページにリダイレクトされますが、まだ記入しないでください。
ステップ4—Nginxをリバースプロキシとして設定する
ドメイン名をGogsに簡単にバインドできるように、Nginxをリバースプロキシとして構成することに移りましょう。
まず、Nginxをインストールします。
sudo apt-get -y install nginx
次に、gogsのNginx構成ファイルを作成します。
sudo nano /etc/nginx/sites-available/gogs
次のコンテンツを追加し、your_server_ip
をDropletのIPアドレスに置き換えます。 ドロップレットにドメイン名を使用している場合は、代わりにここでドメイン名を使用できます。
server {
listen 80;
server_name your_server_ip;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
}
そして、Nginxが使用できるようにシンボリックリンクします。
sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs
Nginx仮想ホスト構成ファイルの詳細については、このチュートリアルを参照してください。
最後に、Nginxを再起動して、仮想ホスト構成をアクティブ化します。
sudo service nginx restart
これで、ポートを指定しなくても、URLhttp://your_server_ip/
でWebページにアクセスできるようになります。
ステップ5—ゴグを初期化する
最初の実行のためにGogsを初期化するためのもう1つの簡単なステップが残っています。
http://your_server_ip/install
にアクセスして、次のオプションを入力します。 それらの多くはすでに記入されていますが、赤の変数をサーバーの値に置き換えてください。
最初のセクションで、 GogsにはMySQL、PostgreSQL、またはSQLite3が必要です。次のように入力してください。
- データベースタイプ:
MySQL
- ホスト:
127.0.0.1:3306
- ユーザー:
root
- パスワード:
your_database_password
- データベース名:
gogs
2番目のセクションGogsの一般設定に、次のように入力します。
- リポジトリルートパス:
/home/git/gogs-repositories
- 実行ユーザー:
git
- ドメイン:
your_server_ip
- HTTPポート:
3000
- アプリケーションURL:
http://your_server_ip/
オプションの電子メールと通知の設定をスキップし、管理者アカウント設定で、管理者のユーザー名とパスワードを選択し、電子メールアドレスを含めます。 次のステップでは、管理者ユーザー名をyour_admin_username
と呼びます。
最後に、 Gogsのインストールをクリックして、ログインします。
ステップ6—テストゴグ
これですべて完了です。 Gogsが正しく機能していることを確認するために、簡単なプル/プッシュテストを実行してみましょう。
まず、http://your_server_ip/repo/create
に移動し、 my-test-repo という名前のリポジトリを作成し、このリポジトリをREADME.mdで初期化するオプションをクリックします。
これで、クローンを作成できるはずです。 まず、ホームディレクトリに移動します。
cd
次に、リポジトリのクローンを作成します。
git clone http://your_server_ip/your_admin_username/my-test-repo.git
リポジトリディレクトリに移動します。
cd my-test-repo
README.md
を更新します。
echo 'I love Gogs!' >> README.md
変更をコミットしてプッシュします。 このコマンドは、Gogsのユーザー名とパスワードの入力を求めます。
git add --all && git commit -m "init commit" && git push origin master
結論
http://your_server_ip/your_admin_username/my-test-repo
に戻ると、「ゴグが大好き!」と表示されます。 READMEに追加された行。 とても簡単です!