2013年6月12日水曜日

【chef】apacheとtomcatの連携をajpで設定する方法

■概要
chefを使ってapacheとtomcatをインストールした場合のajpの設定方法について紹介します
chefを使ってapacheとtomcatをインストールする方法は以下で検証した通りです
http://kakakikikeke.blogspot.com/2013/05/opscodecookbooks.html 

■環境
CentOS 6.2 64bit
Apache 2.2.15
Tomcat 7.0.32.0
Java 1.7.0_17-b02

■tomcat側設定
vi /usr/local/tomcat/default/conf/server.xml
以下のとおり8080の部分をコメントアウトします
<!--
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

service tomcat restart
netstat -an | grep 8080
8080が起動していないことを確認します

■apache側設定
■confファイルの設定
cd /etc/httpd/sites-available
cp -ipr default-ssl test.conf
vi test.conf
<Location />
  Order allow,deny
  Allow from all
  ProxyPass ajp://localhost:8009/
</Location>
/を設定しているDirectoryタグの閉じタグの直後に記載します
localhostの部分はtomcatがインストールしてある振り分け対象のホスト名を記載してください

ErrorLog /var/log/httpd/error_test.log
CustomLog /var/log/httpd/access_mbaas.log combine
アクセスログとエラーログもVirtualHostごとにわける場合は上記の箇所の設定を変更します

また、ports.confに記載しているNameVirtualHostとtest.confのVirtualHostに記載するIPアドレス(ドメイン)値は同じでなければなりません
例えば、parts.confが「*:443」と記載しているならtest.confも「*:443」と記載しなければなりません

■再起動
cd /etc/httpd/sites-enabled/
ln -s /etc/httpd/sites-available/test.conf test.conf

service httpd restart
apachectl -f /etc/httpd/sites-available/test.conf
エラーができないことを確認する

https://localhost/
にアクセスしてtomcatのROOTコンテキスト(管理画面)が表示されることを確認します

■トラブルシューティング
  • apacheのエラーログにclient denied by server configurationと出ている場合Locationの設定がおかしい可能性があります(Allow from allがない等)
  • apacheのエラーログにInvalid method in requestが出る場合はVirtualHostの設定がおかしい可能性があります(IPアドレスやドメインの指定がおかしい等)

2013年6月11日火曜日

VirtualBoxでvboxファイルの保存フォルダを変更する方法

■概要
VirtualBoxの管理系ファイル、vboxファイルを違う場所に移動すると以下のようなエラーとなりVMを起動できません

上記の復旧手順を紹介します

■手順
  1. VirtualBoxマネージャーからエラーとなっているVMを削除します
  2. 「ファイル」→「環境設定」からデフォルトの仮想マシンのフォルダーを変更します(移動したvboxファイルを管理しているフォルダを選択しましょう)
  3. 設定が完了したらメニューバーから「仮想マシン」→「追加」を選択します
  4. デフォルトの仮想マシンのフォルダの一覧が表示されるので追加したいVMのvboxファイルを選択します
  5. VirtualBoxマネージャーの一覧画面にVMが追加されれば完了です

追加されたら一旦起動できるか確認したほうがいいでしょう

2013年6月10日月曜日

githubでタグを作成する方法

git clone https://github.com/NIFTYCloud/sdk-java.git
タグを作成するリポジトリをクローンします
git tag -a [タグ名] -m 'Create tag for [タグ名]'
タグを作成します、同時にコメントも残します
個人的にはタグはバージョン名を記載します
git tag
タグが作成されているか確認します
git push --tags
タグ情報をメインストリームにpushする
これでmasterからタグを作成することができます
タグを作成するとgithubのtagsからzipファイルをダウンロードできるようになります

git tag -d [タグ名]
git push origin :refs/tags/[タグ名]
すると間違って作成してしまったタグを削除できます

タグを作成したあとはmasterに対して新しいバージョンの修正等をお好きなように反映して問題ないです

2013年6月9日日曜日

zabbixのapiをPHPから試してみた

■環境
CentOS 6.3 64bit
Zabbix 2.0.3
PHP 5.3.3

■設定およびサンプル実行
http://zabbixapi.confirm.ch/download.php?file=library
から最新のphpライブラリをダウンロードします

bzip2 -d PhpZabbixApi_Library.tar.bz2
tar xvf PhpZabbixApi_Library.tar
cd PhpZabbixApi_Library

vi ZabbixApi.class.php
以下の1行を追加します
require 'ZabbixApiAbstract.class.php';

vi sample_zabbix.php
以下のサンプルコードを記載します
「username」と「password」はzabbixにログインする際のものを使います
<?php

require 'ZabbixApi.class.php';

try {
    $api = new ZabbixApi('http://hostname/api_jsonrpc.php', 'username', 'password');
    $res = $api->apiinfoVersion();
    var_dump($res);
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}

?>

php sample_zabbix.php
を実行するとapiのバージョンが返ってきます

エラーになる場合は以下を確認してみてください

  • phpファイルの権限が755になっていることを確認する、もしくは実行するユーザに実行権限が付いていることを確認する
  • zabbixのホスト名やユーザ名パスワードが間違っていないか
  • そもそもphpがインストールされていない

■Tips
PHPのメソッドのコール方法はZabbixAPI名と連動している
例えばホストを取得するAPIは host.get というAPIをコールするが、PHPでは hostGet というメソッドをコールする
ドットで区切られている部分をcamel caseに変換してコールすればPHPで呼ぶことができる
なのでPHPのリファレンスがなくてもZabbixのAPIリファレンスを見るだけで必要なメソッドをコールすることができる
Zabbix 2.0 APIリファレンス

リファレンス内のリクエストパラメータで「query」というTypeが存在している
ここには以下が指定できる
  • shorten - returns just the primary key;
  • refer - returns the primary key and the foreign keys used to link related objects;
  • extend - returns all object properties;
  • count - returns the number of retrieved records; supported only by certain subselects.
基本的にはレスポンス情報に影響するパラメータで、詳細に表示するか簡易的に表示するかのモードが切り替えられる感じかなと思います
指定可能なquery一覧


■参考サイト

2013年6月7日金曜日

Zabbixのグラフで文字化けしたので対応した

■概要
chefでzabbixをインストールしたら日本語が表示されていなかったので対応してみました

■環境
CentOS 6.2 64bit
Zabbix 2.0.3
以下のchefでzabbixをインストール
http://kakakikikeke.blogspot.com/2013/05/opscodecookbooks.html 

■コマンド
yum -y install ipa-gothic-fonts.noarch
cd /opt/zabbix/web/fonts/
ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf ipagp.ttf
vi /opt/zabbix/web/include/defines.inc.php
//define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
define('ZBX_GRAPH_FONT_NAME', 'ipagp')
画面をリロードすると日本語は表示されるようになります

chefでインストールしていない場合は以下のディレクトリ構成も確かめて見てください
yum -y install ipa-gothic-fonts.noarch
cd /usr/share/zabbix/fonts/
ln -s /usr/share/fonts/ipa-gothic/ipag.ttf
vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'ipag')

2013年6月2日日曜日

zipimport.ZipImportError: can't decompress data; zlib not available

yum -y install zlib*
したあとに再度pythonをconfigureしてmakeすれば幸せになれると思います

というかソースからインストールした場合ってyumでライブラリインストールしたあとは
再コンパイルしないとダメなのだろうか
あまりpythonは詳しくないのでわからない・・・

2013年6月1日土曜日

【CentOS6.3】python2.7.5をインストール

■コマンド
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar xvfz Python-2.7.5.tgz
cd Python-2.7.5
yum -y install gcc zlib* openssl*
./configure
make
make test
make install

which python
cd /usr/local/bin/
rm python.back python2 python2-config python-config python
cd /usr/bin/
rm python2
mv python python2.6.6
ln -s /usr/local/bin/python2.7 python
python --version
vi /usr/bin/yum
冒頭のpythonへのパスを/usr/bin/python2.6.6に変更する
yum search python
yumができることを確認する

ポイントはyum installで、ソースからインストールするときはyumをインストールしてからでないとコンパイル後のpythonに反映されません
つまり、yumでモジュールをインストールしたあとは再コンパイルしないといけません