Windows AzureにGitLabを構築してみる


#はじめに
- 記事作成時(2015/07/29)の状態です。
- Linux初心者なので突っ込みがあれば修正したいと思います。やさしくしてね。
- OpenLogic 7.1とGitLab 7.13.2(ce6fd30)を使っています。
- Windows Azureとか書いたけど多分CentOS 7.x系なら行けると思う。
- データの保存先を変更しています。29GBとか足りるか!


#Virtual Machineを用意する
##…の前にストレージアカウント
![create storage.png](https://qiita-image-store.s3.amazonaws.com/0/78832/af96bb3c-2c5a-868c-9343-da1427c9c3c7.png)

こんな感じで適当にストレージアカウントを作成。
デフォルトで作られるよくわからない名前ので困らない人はスキップしてください、僕も困りませんが何となく作ってみます。

##今度こそVirtual Machineを用意する
CentOSが好きなのでOpen Logic 7.1で用意してみます。yumとviぐらいしか使わないのでお好みでどうぞ。
![penguin.png](https://qiita-image-store.s3.amazonaws.com/0/78832/52352f17-6698-659d-2307-1f33bf88436c.png)

今回はSTANDARDのA1で用意します。
もっとスペックが欲しい人は適当に上げてください。
![machine.png](https://qiita-image-store.s3.amazonaws.com/0/78832/5278659f-4a69-7f8b-2bba-04ee68c32783.png)

あとはストレージアカウントを最初に作ったものにしたら作成完了です。
![machine2.png](https://qiita-image-store.s3.amazonaws.com/0/78832/bc8f3a67-3c96-042e-4e4b-aba1f7d3818c.png)


##httpでアクセスできるようにする
Virtual Machineのエンドポイントを追加します。
プロトコルでHTTPを選ぶと楽です。
![port.png](https://qiita-image-store.s3.amazonaws.com/0/78832/41fb3df8-297e-147c-5818-99405bf9e2fd.png)


記事の最後に気づいたので怒られてますが気にしないでください。

#GitLabのインストール
##Virtual Machineに接続する
Terminalに打ち込んだりPuttyとかTeraTerm使ったりして接続してください。
Terminalなら ssh [アカウント名]@[マシン名].cloudapp.net とか打ち込めばつながります、多分。
##GitLabをインストールする
###…の前にFirewallを有効化する
次に出てくるコマンドの一部が怒られてしまうので最初にFirewallを有効化します。Windows Azure側で何か走っている可能性はありますがまぁ問題ないでしょう、多分。

```bash
sudo systemctl start firewalld
sudo systemctl enable firewalld
```

一応確認の為に

```bash
sudo systemctl list-unit-files -t service | grep firewalld
```

**firewalld.service                           enabled**
と表示されていればokです。

##今度こそインストールする
[ダウンロードページ](https://about.gitlab.com/downloads/ "Download GitLab Community Edition (CE)")を見に行くとプルダウンがあるのでCentOS 7を選ぶとコマンド一式が書かれてるので実行します。

```bash
sudo yum install curl openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
```

しばらくすれば**Complete!**と出てきてインストールは完了です。

#データの保存先を変更するためのストレージを用意する
Windows Azureの管理ポータルにてディスクの接続をします。
容量/キャッシュはお好みで。
ストレージも実際に使っている分しか課金されないっぽいのでとりあえず1023GB確保してみました。
![AddDisk.png](https://qiita-image-store.s3.amazonaws.com/0/78832/0bbd4054-7fe7-9b7c-1576-65bf4c65dd4d.png)

##ディスクの設定
自分で他にディスクを追加していなければsdcとして登録されるのでパーティションの設定などをしてしまいます。

```bash
sudo fdisk /dev/sdc
```

fdiskが立ち上がったら

```bash
n (パーティションの新規作成)
p (primary)
1 (1番目)
[空] (Firsct Sectorの設定)
[空] (Last Sectorの設定)
w (書き込んで終了)
```

パーティションの設定は完了です。
参考にしたページ [CentOSにハードディスクドライブを増設する](http://ezxnet.com/linux/entry2771/)

##フォーマット
フォーマットしただけでは使えないのでフォーマットします。
ext4とかってのが主流らしいのでext4でフォーマットします。

```bash
sudo mkfs -t ext4 /dev/sdc1
```

##ラベルを付ける
管理用に名前をつけます。データ用なのでDataとでもつけましょう。
**2016/10/03追記**
**良い子は後々困らないようにUUIDで設定しましょう。ググってください。**


```bash
sudo e2label /dev/sdc1 Data
```

確認してみます。

```bash
sudo e2label /dev/sdc1
```

**e2label /dev/sdc1
Data**
OKです。

##ディレクトリの作成
/Dataの中にgitlabフォルダを作ってデータディレクトリとしたいと思います。

```bash
sudo mkdir /Data
sudo mkdir /Data/gitlab
sudo mkdir /Data/gitlab/git-data
```

##マウントの設定
まずはマウントから

```bash
sudo mount /dev/sdc1 /Data
```

確認してみます。

```bash
df -lh
```

**/dev/sdc1      1007G   77M  956G   1% /Data**
OKです。

次は自動的にマウントされるように

```bash
sudo vi /etc/fstab
```

以下の行を追加

```bash
LABEL=Data      /Data   ext4    defaults        0 0
```

書き込んで終了です。

#GitLabの設定をする
##保存先の変更
公式の[configuration.md](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/configuration.md#configuring-the-external-url-for-gitlab)を読むとデフォルトでは */var/opt/gitlab/git-data* 以下にリポジトリが生成されるそうですが、29GBしか容量がなくセットアップした時点で既に空き容量は25GBです。
さすがにそんな所にリポジトリを入れて行ったら大変な事になります、というか昔やらかしました。
なのでデータ用に作った */Data/GitLab* にデータを保存するように変更したいと思います。
*/etc/gitlab/gitlab.rb* に設定が保存されているので編集します。

```bash
sudo vi /etc/gitlab/gitlab.rb
```

**git_data_dir**がコメントアウトされた状態なので解除し、 */Data/GitLab/git-data* に変更します。

##URLの設定
ドメインを持っている等でURLを変更したい場合は**external_url**を好きなURLに設定します。

##その他の項目
その他設定したい項目があれば公式ドキュメントの[settings/README.md](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/README.md)に書かれています。httpsとか、いろいろ。

##設定が終わったら

```bash
sudo gitlab-ctl reconfigure
```

でしばらく待つと設定が完了します。

#アクセスしてみる
httpでアクセスするとログイン画面が出てきます。お疲れ様でした。
![Sign in  GitLab.png](https://qiita-image-store.s3.amazonaws.com/0/78832/0a89d114-3d48-ba54-0cc9-d78989e5f40b.png)