OracleXEの稼働しているUbuntuにGitLabを入れようとしたらドハマリした話


##経緯

###インストール

`OracleXE`のインストールされた`Ubuntu(14.04)`に`GitLab CE(8.6.1)`を[公式ページ参照](https://about.gitlab.com/downloads/)でインストール

###`gitlab.rb`を修正してなんやかんや

[ここ](http://qiita.com/shela/items/b62dc775015755d92ad7)を参照して`gitlab.rb`に加筆

```/etc/gitlab/gitlab.rb
...
external_url 'http://localhost'
unicorn['worker_timeout'] = 180
...
```
記述後、`$ sudo gitlab-ctl reconfigure`してブラウザにて接続すると「502」エラー。

### `external_url`へ明示的にポート8080を指定

```/etc/gitlab/gitlab.rb
...
external_url 'http://localhost:8080'
...
```
修正後、ブラウザにて接続すると「XDBに対するユーザ名とパスワード～～」というBasic認証の画面が。

どうやら`OracleXE`には`Apex(Oracle Application Express)`というWebアプリケーションがついてくるらしく、そこでポート8080を使用している模様。

###じゃあ`external_url`のポートを変えてみよう

```/etc/gitlab/gitlab.rb
...
external_url 'http://localhost:8081'
...
```
修正後、ブラウザにて接続すると再び「502」エラー。
このあたりで`/var/log/gitlab/unicorn/unicorn_stderr.log`、`/var/log/gitlab/nginx/gitlab_error.log`を見だす

* その時点での`/var/log/gitlab/unicorn/unicorn_stderr.log`のエラー

```/var/log/gitlab/unicorn/unicorn_stderr.log
...
E, [2016-03-30T15:44:57.159072 #32405] ERROR -- : adding listener failed addr=127.0.0.1:8080 (in use)
E, [2016-03-30T15:44:57.159146 #32405] ERROR -- : retrying in 0.5 seconds (4 tries left)
...
```

リスナーのポートが変わっていない…？

###どうやらポート設定が問題のようだ

ポートの問題と特定するもそもそも`unicorn`だの`nginx`だのがよくわかっておらず、
  いろいろイジっているうちに`/var/log/gitlab/unicorn/unicorn_stderr.log`が更新されなくなった（permissionを変更してしまったらしい）り、
  `/etc/gitlab/gitlab.rb`を初期化しようと思って`rm`したら再作成されず[テンプレート](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template)から引っ張って来て
  修正後ブラウザから接続すると「404」エラー（この404エラーがググっても全然出てこなくてハマった、`/var/log/gitlab/nginx/gitlab_error.log`では`/var/opt/gitlab/nginx/html/index.html`がnot found状態）になったりで、
  ええいままよと再インストールを決断

###そして再インストールへ

単純にアンインストール・インストールを実行しても状況変わらず

```bash
$ sudo apt-get remove gitlab-ce=8.6.1-ce.0
$ sudo apt-get install gitlab-ce=8.6.1-ce.0
/* /etc/gitlab/gitlab.rbは再作成されず */
$ sudo gitlab-ctl reconfigure
/* ブラウザ接続も404エラーのまま */
```

```bash
$ sudo apt-get --purge remove gitlab-ce=8.6.1-ce.0
$ sudo apt-get install gitlab-ce=8.6.1-ce.0
/* /etc/gitlab/gitlab.rbは再作成されず */
$ sudo gitlab-ctl reconfigure
/* ブラウザ接続も404エラーのまま */
```

###もうアタッマきて関連するディレクトリを`rm`

```bash
$ sudo rm -rf /opt/gitlab
$ sudo rm -rf /var/opt/gitlab
$ sudo rm -rf /var/log/gitlab
$ sudo rm -rf /etc/gitlab
```

###`GitLab`の実行ユーザでやってたら怒られた

```bash
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
shell-init: カレントディレクトリの取得時にエラーが発生しました : getcwd: 親ディレクトリにアクセスできません: そのようなファイルやディレクトリはありません
Detected operating system as Ubuntu/trusty.
...
```
実行ユーザの`home`がさっき`rm`ったところにあったのが原因だそう。
`cd /`して解決

###改めて`GitLab`をインストール
公式手順通り
今度は`/etc/gitlab/gitlab.rb`が再作成された！

###今までの経験を活かして`/etc/gitlab/gitlab.rb`を修正

```/etc/gitlab/gitlab.rb
...
external_url 'http://localhost:10080'
...
##################
# GitLab Unicorn #
##################
...
unicorn['worker_timeout'] = 180
...
## Advanced settings
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8888
...
################
# GitLab Nginx #
################
...
# nginx['listen_port'] = nil # override only if you use a reverse proxy: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#setting-the-nginx-listen-port
nginx['listen_port'] = 10080
...
```
結局いじったのは

```/etc/gitlab/gitlab.rb
external_url 'http://localhost:10080'
unicorn['worker_timeout'] = 180
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8888
nginx['listen_port'] = 10080
```
の5行。

###お約束の`$ sudo gitlab-ctl reconfigure`を実行しブラウザから接続してみると…
  夢にまで見たサービスログイン画面が！！

##まとめ
結局`Apex`を動かしてるサーバアプリケーションは探さなかったので、そっちでポート変えれば一番早かったかもしれない…。
既に`Apache`や`nginx`が稼働しているサーバに`GitLab`を入れるって情報はそこそこ拾えたんだけど。
そもそもLinuxのリソースが足りない＆OracleXEサーバのリソースが余ってるからって安易に同居させようと思ったのが間違い。