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

前回の続き
以前にも書いた通り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
この投稿へのコメント