【GitLab】Webページの自動デプロイ環境を作る(Gitのpushで公開する)

スポンサーリンク

GitLabサーバ(Ubuntu 16.04 LTS Server)のリモートリポジトリにpushする事で、GitLabサーバ上のWebページを自動更新する環境を構築したので備忘録を残す。

やりたい事

  1. ローカルでファイル編集
  2. GitLabのリモートリポジトリにpush
  3. GitLabサーバ上にある、Apache公開ディレクトリに自動的にpull

前提条件

  • サーバマシンは、Ubuntu 16.04 LTS Server
  • GitLabサーバがインストールしてある
  • Apacheサーバがインストールしてあり、公開ディレクトリがWeb表示できるようにしてある
  • ローカルマシンにGitがインストールされており上記GitLabにpushできる
【Ubuntu 16.04 LTS Server】GitLabでGitサーバを構築する
gitliteをGitサーバとして使ってきたが、GitLabもaptで簡単にインストール出来るようになってるようで、Ubuntu 16.04 LTS Server にインストールして試す。<追記 2018/05/04>Ubuntu 18.0...
【Ubuntu 16.04 LTS Server】Webサーバ「Apache2」を使う
Webページ(ホームページ)サーバ「Apache」を稼働させる。インストール$ sudo apt install apache2Webブラウザで、サーバのIPアドレスを入力し動作確認「Ubuntu default page」が表示されるサー...

準備1.GitLabサーバにリモートリポジトリを作成

Webページ関連のファイル一式を登録するリモートリポジトリを、GitLabから作成登録しておく。

準備2.公開するWebページのフォルダを作成

Apacheサーバで公開するフォルダ /var/www/homepage/ を作成。尚、GitLabから操作できるようにGitユーザからアクセスできるようにする。

$ cd /var/www
$ sudo mkdir homepage
$ sudo chown git:git homepage

続いて作成したフォルダに、Gitユーザでリモートリポジトリを一度クローンしておく。

$ sudo su git
$ cd /var/www/homepage
$ git clone <リモートリポジトリ名>
$ exit

準備3.GitLabリモートリポジトリの post-recive を設定

Gitリモートリポジトリにpushされた時には、post-recive ファイルのスクリプトが実行される。
GitLabに登録されたリポジトリは /var/opt/gitlab/git-data/repositories/ に格納されており、このフォルダはGitユーザのみしかアクセスできないので、rootユーザになって作業する。

【Ubuntu 18.04/16.04 LTS server】rootユーザになる
Ubuntuのデフォルトでは、rootユーザはパスワードが設定されていないので利用できない。一般的には、管理者コマンドを使うには「sudo」コマンドを利用して、root特権を実行するが、多くのコマンドを入力する時とか面倒な場合、下記コマンド...
$ sudo -s
# cd /var/opt/gitlab/git-data/repositories
# cd <user名>
# cd homepage.git

下記のような内容の、custum_hooks/post-receive スクリプトファイルを作成する。

# cd custum_hooks
# nano post-receive
#!/bin/sh
cd /var/www/homepage/ && git --git-dir=.git pull > /var/tmp/homepage_update.log

このファイルがGitユーザから実行できるようにアクセス権を変更しておく。

# chown git:git post-receive
# chmod 755 post-recive
# exit

ローカルマシンからリモートリポジトリにpush

ローカルマシンに、リモートリポジトリを一度cloneし、Web公開するファイルを登録コミットしpushする。

例として、下記のようなファイル index.html をGit登録してpushしてみる。

<html>
<head><title>Test page</title></head>
<body>
<p>This is a test.</p>
</body>
</html>

これで、Webページにアクセスして表示できる事を確認。

補足

  • 私のサーバ環境では読み出し専用にgitプロトコル(git-daemon)が動くようにしているので、Webページのフォルダ作成時にクローンした <リモートリポジトリ名> は、「git://localhost/user名/homepage.git」のように指定。
【Ubuntu 16.04 LTS Server】git-daemonを使う
gitプロトコル(git://)で通信できるサービスを登録する。gitプロトコルからのリポジトリアクセスは、読み出し専用とする。git-daemon をインストール# apt install git-daemon-sysvinit/etc/...
  • 試してはないが同じサーバ上なら、<リモートリポジトリ名> は、下記のように絶対パス名を指定してもよい。
    /var/opt/gitlab/git-data/repositories/user名/homepage.git

参考

  1. gitでシンプルなデプロイ環境を作る
  2. GitLab でサーバーサイドフックを記述する際には、 custom_hooks ディレクトリにスクリプトを置く。
  3. [Git] リモートリポジトリのパスの書き方一覧

コメント

タイトルとURLをコピーしました