ubuntu 18.04 日本語 Remix でGitLab

ubuntu 18.04 日本語 Remix でGitLab

ubuntu 18.04 の GitLab 環境を
ローカルで使用したいので
virtualBox で構築

まずはISOファイルのダウンロード

Ubuntu Desktop 日本語 Remixのダウンロード

から
ubuntu-ja-18.04.1-desktop-amd64.iso(ISOイメージ)
をダウンロード

次に VirtualBoxで仮想マシン作成
今回はメモリ4GB
CPUを4つ割当し
ネットワークをブリッジアダプターにしておきます

ubuntu18.04 のダウンロードが完了したら
ストレージの
IDE の光学ドライブの設定を
ubuntu 18.04 のISOファイルを指定するようにします

あとは起動をクリックすれば
インストール画面になるのでそのまま続けていきます

インストール完了後
今回は
Ubuntu 18.04 LTSにDockerを使ってGitLabとMattermostを導入してみた

を参考に
Docker を使って GitLab を導入します

が、ここで問題発生
今後は ssh で接続して行おうと思って
ifconfig コマンドでIPアドレスを調べようとしたら
コマンドが存在しないとのこと

Ubuntu 17.04 その132 – ifconfigからipコマンドへ移行しよう・ipコマンドはifconfigを置き換える

によると
ip コマンドを代わりに使うようです

使い方に関しては
ipコマンド備忘録

などを参考に今後調べていく予定

ip addr

で現在のIPアドレスがわかるので

次に ssh 接続できるように
ubuntu18.04 側へ openssh-server をインストールし
.ssh ディレクトリにを作成

sudo apt-get -y install ssh
mkdir .ssh
chmod 700 .ssh/

次に
クライアントマシンとしての ubuntu16.04 から
ssh で接続して操作します

cd .ssh/
ssh-keygen -t rsa -f gitlab_snowpool

今回は gitlab_snowpool
というファイル名にしました

ファイル名は任意でOK
これで鍵ができたので

scp gitlab_snowpool.pub snowpool@192.168.1.139:/home/snowpool/.ssh/.

で鍵を scp でコピー

コピーできたら
再び ubuntu18.04 側で

cd .ssh/
cat gitlab_snowpool.pub >> authorized_keys
chmod 600 authorized_keys 

として authorized_key を作成し
権限を変更

ubuntu 18.04 LTS のサーバーに公開鍵認証でssh接続

を参考にホスト名でアクセスできるように設定をします

接続元のubuntu16.04 で

vim .ssh/config 

でファイルを作成し

Host gitlab
        HostName 192.168.1.139
        User snowpool
        Port 22
        IdentityFile /home/snowpool/.ssh/gitlab_snowpool

というように
Host には任意の名前のホスト名
HostName にはIPアドレス
User にはユーザ名
Port には接続ポート
IdentityFile には鍵ファイルのパスを指定

これで

ssh gitlab

とすればパスワードなしでログインできるようになります

次に

sudo apt-get install vim
 sudo vim /etc/ssh/sshd_config 

で設定ファイルを開き
56行目の

#PasswordAuthentication yes

PasswordAuthentication no

とすることで
鍵認証のみログインできるようにして
パスワードでのログインを禁止します

あとは設定を反映するために

systemctl restart ssh

パスワードログインの禁止については
OpenSSH : SSH 鍵認証

を参考にしました

次に GitLab の導入

今回は
Ubuntu 18.04 LTSにDockerを使ってGitLabとMattermostを導入してみた

を参考に導入します

まずはリポジトリアップデート

sudo apt-get update 

次にHTTPSでリポジトリを使うためのパッケージをインストール

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 

しかし

E: dpkg は中断されました。問題を修正するには 'sudo dpkg --configure -a' を手動で実行する必要があります。

となってしまうため

sudo dpkg --configure -a

を実行

再度

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 

を実行することでインストールは成功

次に Docker 公式GPGキーの追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

GPGキーの取得確認は

sudo apt-key fingerprint 0EBFCD88

次に安定版の Docker リポジトリ設定
Stable 版が安定版

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   artful \
   stable"

リポジトリを変更したので、再度

sudo apt-get update 

で更新

次にDocker のインストール

sudo apt-get install docker-ce

Docker のバージョンを調べるには

docker version

で調べることができます

次に GitLab の Docker イメージを pull

sudo docker pull gitlab/gitlab-ce

次に ifconfig を使うためツールをインストール

sudo apt install net-tools

これで IPアドレスを調べておく

次に gitlab 用ファイルを保存するディレクトリを作成

mkdir -p gitlab/config
mkdir -p gitlab/logs
mkdir -p gitlab/data

なお、一般ユーザで docker を使おうとすると

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/json: dial unix /var/run/docker.sock: connect: permission denied

というようなエラーメッセージがでる

対処としては
ユーザを docker グループへ所属させる
もしくは
sudo をつけて実行

次に
makefile を作成

sudo apt install make

で make をインストールし

vim makefile

でファイルを作成

中身は

start:
  sudo docker run --detach \
      --hostname 192.168.1.139 \
      --publish 443:443 --publish 80:80 --publish 2222:22 --publish 8001:8001  --publish 9090:9090 \
      --name gitlab \
      --restart always \
      --volume /home/snowpool/gitlab/config:/etc/gitlab \
      --volume /home/snowpool/gitlab/logs:/var/log/gitlab \
      --volume /home/snowpool/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest

restart:
  sudo docker restart gitlab

stop:
  sudo docker stop gitlab

rm:
  sudo docker rm gitlab

として保存

ちなみに、コマンドの sudo の前は
スペースではなく tab

スペースで書いてしまうと

makefile:2: *** 複数のターゲットパターンです.  中止.

となってしまうので注意

makefile の書き方については
Makefileの書き方

を参考に

なお make についてわからなかったので
Makefileを使ってスマート?にDocker+Railsの開発をしようとした

を参考したところ
コマンドの省略に使えそうとのこと

また docker の起動や停止については
Dockerでコンテナ作成/起動/停止/自分用Image作成

を参考に

もしコンテナ起動時に

docker: Error response from daemon: Conflict. The container name "/gitlab" is already in use by container "cf98f43e7b160c26b663f65e4a5487e48d3a0ca27fd6ef29504736a59c93560e". You have to remove (or rename) that container to be able to reuse that name.

となる場合

Dockerのコンテナ名がコンフリクトした

にあるように一度コンテナを削除

今回なら

sudo docker rm gitlab

また、今回の場合
ホストマシンで 22 番ポートを使っているので
ssh で使用するポートを22にすると

docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (45d121856a9d4eb420973d76ac265049026800565d1395fac7879656ed936f25): Error starting userland proxy: listen tcp 0.0.0.0:22: bind: address already in use.

となってしまう

現在使用しているポートは

sudo lsof -i -P | grep "LISTEN"

で調べることができる

次に
クライアントマシンの ubuntu 16 に
クリっプボードにコピーを簡単にするコマンド xsel をインストール

sudo apt install xsel

コマンドの引数が面倒なので

echo "alias pbcopy='xsel --clipboard --input'" >> ~/.bashrc
source ~/.bashrc 

で反映

これでできると思ったけど
最後に git push するときに エラーになるため
docker での Gitlab を断念し
通常のインストールで運用することに

【Ubuntu 18.04 LTS Server】GitLabでGitサーバを構築する

を参考に実践

sudo apt install postfix

でメールサーバーをインストール
形式は
ローカルのみ
を選択

なお、システムメール名は任意のものを入力

次に Gitlab リポジトリ登録

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

そして Gitlab インストール

sudo apt install gitlab-ce

次に設定ファイルの編集

sudo vim /etc/gitlab/gitlab.rb 

で13行目を

external_url 'http://192.168.1.139'

というようにIPを指定

49行目の

# gitlab_rails['time_zone'] = 'UTC'


[she]
gitlab_rails[‘time_zone’] = ‘Asia/Tokyo’
[/shell]
として保存

sudo gitlab-ctl reconfigure

で設定を反映

sudo gitlab-ctl status

でGitlab の状態を確認できる

なお、再起動をしたいときには

sudo gitlab-ctl restart

で Gitlab の再起動ができる

なお、この状態で仮想マシンを再起動すると Docker が起動してしまうため

make stop
sudo gitlab-ctl restart

として一度 Dockerコンテナを停止してから
Gitlab を再起動する必要あり

これで Gitlab が使えるようになったので
ブラウザで Gitlab サーバーのIPへアクセスすると
管理者ユーザの
新しいパスワードの設定になるので
パスワードを入力し
Change your Password をクリック

Register で登録ができるので
Full name
username
にはユーザ名

Email と Email Confirmation にはメルアド

Password にはパスワードを入力し
Register で登録

次に、SSHキーの設定をするので
Settings をクリック

SSH Keys をクリックし
鍵をコピペする

鍵のコピーには
xsel を使うと便利なので

sudo apt install xsel

でインストールし
xsel のオプション設定の面倒を省くためエイリアスを設定

echo "alias pbcopy='xsel --clipboard --input'" >> ~/.bashrc
source ~/.bashrc 

これで

cat ~/.ssh/gitlab_snowpool.pub | pbcopy 

でSSH key をコピーできるので
これを貼り付けて
Add key をクリックすれば登録完了

あとは新規リポジトリを作成してテストしたいので
Gitlabアイコンをクリックし
New Project をクリック

Project Name にリポジトリ名を入れ
Public にして
Crate project をクリック

ここまでできたら
あとはクライアントマシンで git を使えばいい

なお、リポジトリについては
SSH をクリックし、コピーアイコンをクリックすれば
リポジトリのコピーができるので
あとは

git clone git@192.168.1.139:sno/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

とすればgitlab でのリポジトリ管理ができるようになる

git push するときに
Git global setup をしていないと

to set your account's default identity. Omit --global to set the identity only in this repository.

というようにエラーになるので

git config --global user.name "First-name Family-name"

First-name Family-nameの部分は自分の名前

git config --global user.email "username@example.com"

username@example.com の部分は自分のメルアド
というように設定をすればOK

なお、git commit での nano ではなく vim にしたいのなら
Gitをインストールしたら真っ先にやっておくべき初期設定
を参考に

ラズパイ3のGitlab へ ssh で git clone

ラズパイ3にGitlab をインストールしたので
ここでリポジトリ管理することに

参考サイトは
AndroidStudioからGitLabにSSH接続する

まず gitlab へ ssh 鍵を登録

cd ~/.ssh/
ssh-keygen -t ecdsa -b 256 -C "gitlab connect"

で鍵を作成

Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/snowpool/.ssh/id_ecdsa):

と鍵ファイル名を聞かれるので、ファイル名を入力

今回は
android_gitlab

次にパスフレーズの設定だけど
テストなので今回は未入力で Enter

Enter same passphrase again: 

もう一回確認されるので、再度Enter

次に Gitlab へログインして
右上アイコンから Settings をクリック

次に .pubファイルの中身を貼り付けるけど
mac なら pbcopy コマンドが使えるけど
ubuntu なので

[Linux] コマンドラインでの標準出力をクリップボードにコピーする

を参考に

sudo apt-get install xsel

で xsel コマンドをインストール

さらに
Macのpbcopyをubuntuでも使う

を参考に
エイリアスを設定すると楽とのことなので

【初心者向け】エイリアスの設定方法

を参考に

vim ~/.bashrc 

でファイルを開き

alias pbcopy='xsel --clipboard --input'

を最終行に追記

source ~/.bashrc 

で設定の反映

これで pbcopy でクリップボードにコピーできるので

pbcopy < android_gitlab.pub 

として android_gitlab.pub の中身をコピーし

gitlab の key のところへ貼り付けして
Add Key をクリック

これで鍵が登録されます

次にテストリポジトリを作成します
トップ画面から New project をクリック

Project name は test
Visibility level は Public にして
Create project をクリック

これでリポジトリが作成されたので
鍵を有効化するために ssh 接続します

まず鍵の設定をします

vim ~/.ssh/config 

で設定ファイルを開き

Host raspberrypi
 User git
 Port 22
 HostName 192.168.1.208
 Identitiesonly yes
 IdentityFile ~/.ssh/android_gitlab

として保存

あとは ssh で git clone したいので

git clone git@raspberrypi:snowpool/test.git

とするとテストリポジトリの clone ができます

ここまでできたら次に
Android Studio でGitLabが使えるように設定

ラズパイ3を Gitサーバに

ラズパイ3を Gitサーバに

まずは ssh でログインしてIPを固定しておきます

 sudo apt-get install vim

で vim をインストール

次に

interface eth0
static ip_address=192.168.1.208/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

というように IPの設定をファイル末尾に追記して保存

固定IPについては
固定IPアドレスの設定(有線LANの場合)

を参考に

固定IPで接続できるかは

sudo shutdown -r now

で再起動し
ssh で接続できれば成功

次にリポジトリの更新と
インストール済みソフトのアップデート

sudo apt-get update 
sudo apt-get -y upgrade

次に git サーバに必要なライブラリのインストール

sudo apt-get -y install wget git-core 

次に gitユーザを作成
このユーザで gitサーバにアクセスするようにする

sudo adduser git

なおパスワード設定の後に
フルネーム []:
部屋番号 []:
職場電話番号 []:
自宅電話番号 []:
その他 []:
がでるけど
そのまま Enter でOK

以上で正しいですか? [Y/n]
とでたら、 y を入力

次にテストリポジトリの作成

 su git

で gitユーザのパスワードをいれて git ユーザになり

cd

で git ユーザのホームディレクトリに移動

mkdir -p ./git_root/test.git

でテストリポジトリのディレクトリ作成

次に空リポジトリの作成
.4 Git サーバー – サーバーのセットアップ

にあるように
作業ディレクトリのない空のリポジトリを初期化
したいので
git init に –bare オプションを指定して実行

cd ./git_root/test.git/
git init --bare
git init

次に GitLab のインストール
GitLab に必要なパッケージを入れるので

sudo apt-get install curl openssh-server ca-certificates postfix apt-transport-https

途中で postfix の画面がでてくるので
tab を押して
了解
で Enter

piGitlab

メール設定の形式は
インターネットサイト
を選択し
了解で Enter

piGitlab2

システムメール名は
デフォルトの raspberrypi のままでOK

Gitlab3

次に GitLab の gpg.key を追加

curl https://packages.gitlab.com/gpg.key | sudo apt-key add -

次に Gitlab パッケージのインストール

sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash

そして GitLab CE Omnibus package
のインストール

sudo apt-get install gitlab-ce

を実行してもパッケージがみつからないため

Turning the RaspberryPi 3 into a local App-Development Server

の中の
If you are not comfortable installing the repository through a piped script, you can find the entire script here and select and download the package manually and install using
を参考にパッケージをダウンロードし
インストールすることに

lsb_release -a

を実行するとバージョンを調べることができる

No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 9.3 (stretch)
Release:	9.3
Codename:	stretch

が今回の結果なので
stretch 対応のものを
https://packages.gitlab.com/gitlab/gitlab-ce
からダウンロード

今回は
ubuntu 14.04 へ
gitlab-ce_10.3.3-ce.0_amd64.deb
をダウンロード

そして

 scp gitlab-ce_10.3.3-ce.0_amd64.deb pi@192.168.1.208:/home/pi/

でファイルを転送

scp コマンドについては
scpコマンドでファイル送る、とってくる

を参考に

次に ラズパイ3で

sudo dpkg -i gitlab-ce_10.3.3-ce.0_amd64.deb

としたけど
アーキテクチャが違うため
インストール不可

このため、再度 Google で検索し
2017年7月以降のもので検索

GitLab on the Raspberry Pi 3

を参考に

curl https://packages.gitlab.com/gpg.key | sudo apt-key add -
sudo curl -o /etc/apt/sources.list.d/gitlab_ce.list "https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/config_file.list?os=debian&dist=jessie" && sudo apt-get update

を実行し

sudo apt-get install gitlab-ce

でインストールできた

これで

sudo gitlab-ctl reconfigure

で初期設定できる

あとは
http://192.168.1.208/
というように
ラズパイ3のIPへブラウザでアクセスすると
GitLab の画面が表示されるので

New password に
新しいパスワードを設定し
Confirm new password

確認のため同じパスワードを入力し
Change your password
をクリック

gitlab4

これでパスワード変更が有効化されるので
ユーザ名 root
パスワードを設定したもので
Sign in をクリック

gitlab5

これで Gitlab へログインできます

gitlab6

Gitlab のインストール

Gitlab のインストール

2年ぶりに Gitlab のインストール
いろいろと変更がありそうなので
GitLab Installation

を参考にインストール

sudo apt-get install -y curl openssh-server ca-certificates

次にメールサーバーのインストール

sudo apt-get install -y postfix

を実行すると確認画面がでるので、tabを押して
了解で Enter

2017gitlab

次に、どの形式にするか選択がでるけど
ドキュメントには
During Postfix installation a configuration screen may appear. Select ‘Internet Site’ and press enter. Use your server’s external DNS for ‘mail name’ and press enter. If additional screens appear, continue to press enter to accept the defaults.

意味は
Postfixのインストール中に、設定画面が表示されることがあります。 [インターネットサイト]を選択し、Enterキーを押します。サーバーの外部DNSを「メール名」に使用し、Enterキーを押します。追加の画面が表示された場合は、enterを押してデフォルトを受け入れます。

となっているので
インターネット上サイトのまま
tabを押して了解で Enter

2017gitlab2

次にメール名だけど、ローカルのみの予定なので
今回はそのまま tab を押して 了解で
Enter

2017gitlab3

次に Gitlab リポジトリを追加するので

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

次に

sudo apt-get install gitlab-ce

で Gitlab インストール

インストールされると

gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable at http://snowpool-Prime-Series
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab: 
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab: 
It looks like GitLab has not been configured yet; skipping the upgrade script.
W: Duplicate sources.list entry http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/  Packages (/var/lib/apt/lists/download.opensuse.org_repositories_isv:_ownCloud:_community_xUbuntu%5f14.04_Packages)

と表示される

Gitlab の初期設定と開始には

sudo gitlab-ctl reconfigure

を実行

これで
http://snowpool-prime-series:8080/
だとアクセスできず、
http://localhost:8080
ではレイアウトが崩れる

2017gitlab4

このため

sudo vim /etc/gitlab/gitlab.rb 

で設定ファイルを開き

13行目の

external_url 'http://snowpool-Prime-Series'

external_url 'http://192.168.1.206:8000'

というように変更し

sudo gitlab-ctl reconfigure

を実行し設定を反映

これで再度アクセスすると無事にCSSが反映されていた
2017gitlab5