前回の続き
以前にも書いた通り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の解説でもしようか。
コメント