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

jenkins AWS

jenkins

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

前提

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

Webサイトの公開設定

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

最新ソースの取得

Gitにコミットされた最新ソースをclone。
[code lang=”bash” gutter=”off”]
$ mkdir ~/tmp
$ cd ~/tmp
$ git clone gitolite-user@gitolite:repo-doop.git doop-web
$ sudo mv doop-web/ /var/lib/
[/code]

 

公開設定

/var/libにコピーしたディレクトリに/var/www/htmlからシンボリックリンクを設定する。
[code lang=”bash” gutter=”off”]
$ cd /var/www/html/
$ sudo ln -s /var/lib/doop-web doop-web
[/code]

 

apacheに書き込み権限を付与

これをしておかないと、ファイルのアップロードができない。
[code lang=”bash” gutter=”off”]
$ sudo chown -R work_user:www doop-web/
$ sudo chmod 2775 doop-web/
$ find doop-web -type d -exec sudo chmod 2775 {} +
[/code]

 

httpd.confの編集

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

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

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

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

 

Jenkinsによるリリース設定

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

 

sudo設定

まず、jenkinsの実行ユーザがgitコマンドをパスワードなしでsudoできるように、
「visudo」コマンドで設定ファイルを編集。
[code lang=”xml”]
jenkins ALL=(ALL) NOPASSWD: /usr/bin/git
[/code]

 

jenkins実行ユーザの権限設定

jenkinsからもファイルの更新ができるように、wwwグループに参加させる。
[code lang=”bash” gutter=”off”]
$ sudo usermod -a -G www jenkins
[/code]

 

jenkinsジョブの作成

フリースタイル・プロジェクトのビルドでジョブ「doop-web_releace」を新規作成する。
ビルド手順の追加で、以下のスクリプトを定義
[code lang=”bash” gutter=”on”]
cd /var/lib/doop-web/
sudo -u work_user git fetch
sudo -u work_user git pull
[/code]

 

動作確認

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

 

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

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

jenkinsジョブの作成

フリースタイル・プロジェクトのビルドでジョブ「doop-web.commit_and_push」を新規作成する。
ビルド手順の追加で、以下のスクリプトを定義
[code lang=”bash” gutter=”on”]
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
[/code]

 

動作確認

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

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

コメント

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