AWS(EC2)でRedmineとGit、Jenkinsを使ったWordPress開発環境の構築と公開を行う
(その6-JenkinsによるWebサイトの更新設定)

jenkins

前回の続き
以前にも書いた通りWebサイトをWordPressで構築すると、頻繁にソースの修正やプラグインの更新が発生する。
そこで、ローカルの開発環境でテストが終わってGitにコミット&プッシュしたら、
Webサーバにはワンクリック(とは言わないまでも、マウス操作のみ)でリリースできるようにしたかった。
と、言うわけでJenkinsでどうやって実現したかを記録しておく。

前提

  • ドメインは事前に取得済みであるものとする。
  • Apacheの実行ユーザはgitにsshでアクセスできるものとする。
  • Webサイトを構成するWordPressのすべてのソースはGitで管理されている。
    ※wp-config.phpは除く
  • 実現するのは更新されたリポジトリのソースの取得と、
    アップロード等して更新されたファイルをコミット&プッシュの2つ

Webサイトの公開設定

まず、Gitのリポジトリに登録されたソースを使って、Webサイトの公開設定を行う。

最新ソースの取得

Gitにコミットされた最新ソースをclone。

$ mkdir ~/tmp
$ cd ~/tmp
$ git clone gitolite-user@gitolite:repo-doop.git doop-web
$ sudo mv doop-web/ /var/lib/

 

公開設定

/var/libにコピーしたディレクトリに/var/www/htmlからシンボリックリンクを設定する。

$ cd /var/www/html/
$ sudo ln -s /var/lib/doop-web doop-web

 

apacheに書き込み権限を付与

これをしておかないと、ファイルのアップロードができない。

$ sudo chown -R work_user:www doop-web/
$ sudo chmod 2775 doop-web/
$ find doop-web -type d -exec sudo chmod 2775 {} +

 

httpd.confの編集

取得したドメインでアクセスできるように、VirtualHostを設定。
なお、それ以外の名称でアクセスされた場合は通常のドキュメントルートにアクセスできるようにしておく。

NameVirtualHost *:80
 
<VirtualHost *:80>
  ServerName doop-web.com
  DocumentRoot "/var/www/html/doop-web"
</VirtualHost>

<VirtualHost *:80>
  ServerName (IPアドレス)
  DocumentRoot "/var/www/html/"
</VirtualHost>

取得したドメインにブラウザでアクセスして、ちゃんと表示されればOK。

 

Jenkinsによるリリース設定

Jenkinsからサイトを更新できるようにする設定。
最初はJenkinsからGit連携しようと思ったんだけど、
アップロードしたファイルなんかもJenkins経由でGitにcommitできるようにしたかったので、
コマンドベースで実行できるようにして、Jenkinsからコマンド実行するようにした。

 

sudo設定

まず、jenkinsの実行ユーザがgitコマンドをパスワードなしでsudoできるように、
「visudo」コマンドで設定ファイルを編集。

jenkins         ALL=(ALL)       NOPASSWD: /usr/bin/git

 

jenkins実行ユーザの権限設定

jenkinsからもファイルの更新ができるように、wwwグループに参加させる。

$ sudo usermod -a -G www jenkins

 

jenkinsジョブの作成

フリースタイル・プロジェクトのビルドでジョブ「doop-web_releace」を新規作成する。
ビルド手順の追加で、以下のスクリプトを定義

cd /var/lib/doop-web/
sudo -u work_user git fetch
sudo -u work_user git pull

 

動作確認

実際にjenkinsから「ビルド実行」をしてみて、
最新ソースが反映されれればOK。

 

Jenkinsによるコミット&プッシュ設定

Webサイトでファイルのアップロードなどをした場合に、
それらのファイルをリポジトリにコミット&プッシュできるようにする。
なお、コンフリクトが発生した場合は、コマンドラインで解決するものとする。

jenkinsジョブの作成

フリースタイル・プロジェクトのビルドでジョブ「doop-web_commit_and_push」を新規作成する。
ビルド手順の追加で、以下のスクリプトを定義

cd /var/lib/doop-web/
sudo -u work_user git status
sudo -u work_user git add -A
sudo -u work_user git commit -a -m "doop-web_commit_and_push"
sudo -u work_user git push

 

動作確認

実際にjenkinsから「ビルド実行」をしてみて、
ファイルがリポジトリに追加されていればOK。

以上で今回の開発環境の構築は終了。
さて、次回はリニューアルしたWordPressの解説でもしようか。


この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL