GitLabサーバ(Ubuntu 16.04 LTS Server)のリモートリポジトリにpushする事で、GitLabサーバ上のWebページを自動更新する環境を構築したので備忘録を残す。
やりたい事
- ローカルでファイル編集
- GitLabのリモートリポジトリにpush
- 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
」
コメント