スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHP OAuthのエラー

Evernote APIのoauthサンプル(evernote-api-1.20)をPHPで動かすべくDLしてサーバにアップ。index.phpへアクセスしてみたところ、

The PHP OAuth Extension is not installed

というエラー表示。このエラーについてサンプル内を検索したら、以下のような記述を見つけた。どうやらOAuthの拡張機能が必要のようだ。

OAuth support is implemented using the <a href="http://www.php.net/manual/en/book.oauth.php">PHP OAuth Extension</a>

これを入れようと、サーバで、

# pecl install oauth

とコマンドしてみると、



running: make
/bin/sh /var/tmp/pear-build-root/oauth-1.2.2/libtool --mode=compile gcc -I. -I/tmp/tmpPckkzC/oauth-1.2.2 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/oauth-1.2.2/include -I/var/tmp/pear-build-root/oauth-1.2.2/main -I/tmp/tmpPckkzC/oauth-1.2.2 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -Wall -g -c /tmp/tmpPckkzC/oauth-1.2.2/oauth.c -o oauth.lo
mkdir .libs
gcc -I. -I/tmp/tmpPckkzC/oauth-1.2.2 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/oauth-1.2.2/include -I/var/tmp/pear-build-root/oauth-1.2.2/main -I/tmp/tmpPckkzC/oauth-1.2.2 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -Wall -g -c /tmp/tmpPckkzC/oauth-1.2.2/oauth.c -fPIC -DPIC -o .libs/oauth.o
In file included from /tmp/tmpPckkzC/oauth-1.2.2/oauth.c:14:
/tmp/tmpPckkzC/oauth-1.2.2/php_oauth.h:47:31: error: ext/pcre/php_pcre.h: No such file or directory
/tmp/tmpPckkzC/oauth-1.2.2/oauth.c: In function 'php_so_object_new':
/tmp/tmpPckkzC/oauth-1.2.2/oauth.c:178: warning: unused variable 'tmp'
/tmp/tmpPckkzC/oauth-1.2.2/oauth.c: In function 'oauth_http_build_query':
/tmp/tmpPckkzC/oauth-1.2.2/oauth.c:617: warning: dereferencing type-punned pointer will break strict-aliasing rules
make: *** [oauth.lo] エラー 1

エラーが出て止まる。php_pcre.hが無いと言ってるのはわかるが、どうすればとググるもなかなか見つからなかったが、とってもぴったりなのを発見。

・Memo/PHP/PECL/oauth - DEX Lab
http://dex.qp.land.to/pukiwiki/index.php?Memo%2FPHP%2FPECL%2Foauth

CentOS5.4 php5.1.6で「ext/pcre/php_pcre.h: No such file or directory」エラーの場合。rpm版だと入っていないので、ソースから該当部分を取得

ここの説明にあるように、PHP5.1.6を一旦ダウンロードして、該当部分をコピーでいけた。


# yum install php-devel php-pear pcre-devel curl-devel
# wget http://museum.php.net/php5/php-5.1.6.tar.gz
# tar xvfz php-5.1.6.tar.gz
# cp -r php-5.1.6/ext/pcre /usr/include/php/ext/


「pecl install oauth」というコマンドだと、最新版の1.2.2をインストールしようとする。これだと、PHP5.1.6では動かないようだ。上記にあるように、とりあえず古い版を入れてみた。

#pecl install oauth-0.99.9



/etc/php.d/oauth.iniのiniファイルを新規作成するか、php.iniに

extension=oauth.so


と記述してApacheを再起動させると、やっとphpinfo()で認識してくれた。

Screenshot_1.png
スポンサーサイト

激安パソコン構成を探して

前回、自宅サーバに公開しているwordpressサイトが劇的に重いという旨の記事を書き、サイト改善に行えそうな事を調べてみました。箇条書きにすると以下の項目あたりです。

  • DBを最適化するプラグインを導入する
  • APCを導入してPHPを速くする
  • nginx+FastCGIにする
  • WP Super Cacheを使う
  • nginxのproxy cacheを使う
  • Apacheパフォーマンス・チューニング http://www.atmarkit.co.jp/flinux/rensai/apache16/apache16a.html
  • wordpress再構築(予想:カテゴリー多すぎなので減らして記事を投稿しなおす)

nginxとキャッシュが肝になってくるので、Apacheのチューニングは必要ないかもしれません。それに、一番最後のWordpress再構築の部分もかなりウェイトがあると思います。これに加え、サーバ側としては、

  • CentOS 32bit版→ 64bit版移行
  • 最小構成でのOS起動。不要なプロセスは起動させない、もすくはアンインストール。GUIもこの際いらない
  • CPUのスペックアップ

さて、nginx + FastCGIでもやるかと思ってましたが、Apacheとnignxの両Webサーバを起動させて、どっちのサーバが呼び出されるのか?とか、最小構成の観点からも、綺麗に構築したいなと思い始め、どんどん改善熱が冷めていきました。。。

サイトたちが重いとは言え、一応、動いているわけで。crontabにはスクリプトが何個か登録させており、定期的に稼働しているわけです。この対応を進めていくにあたり、稼働を止めなきゃいけないと思ったら、サーバをもう一台新調したくなりました。新規で買うにはもったいないので、中古パソコンで。

 

ググった結果、

 


これが、4,999円!今のサーバ、3万近くで組み立てたのに!!後の祭りなわけで。



BUFFALO デスクトップPC用増設メモリ PC2-5300 (DDR2-667) 2GB D2/667-2G/E
バッファロー (2009-04-10)
売り上げランキング: 313


このメモリ2,280円を追加すれば、最強だな。と確信していたのですが、引っかかるCPUのCeleron D。

 

・FMV-D5230 製品詳細 -FMWORLD(法人):富士通
http://www.fmworld.net/biz/fmv/product/hard/vdt0610/d5230/

 

富士通のサイトで調べると、このCPUはCeleron D 336と判明。これをインテルのサイトで最大消費電力(Max TDP)を調べると。

・Intel® Celeron® D Processor (Desktop)
http://ark.intel.com/products/family/5263/Intel-Celeron-D-Processor/desktop

 

84W!と言われてもピンときませんが、今サーバに搭載されているCPUは、Celeron 400なので23.7W。

・マルカン 保温電球 20Wですが、大体で良いので、1ヶ月のかかる電気代を教えて下... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1414810899

 

こちらの計算方法で電気代を最大値で計算してみると、

Celeron 400 : 0.5円/h → 360円/月

Celeron D 336 : 1.8円/h → 1296円/月

続きを読む

ApacheBenchを使ってWordpressで公開しているページのパフォーマンス測定

今回はwordpressとさほど関連はないですが、wordpressで構築して公開しているサイトについてApacheBenchを使って、パフォーマンスをチェックしてみいと思います。

というわけで、いきなりコマンドを打って、実行してみました。URLは架空のものです。

$ ab -c 1 -n 1 http://siteA.net/

でうまくいったので、数字を増やしてやろうと

$ ab -c 2 -n 1 http://siteA.net/
ab: Cannot use concurrency level greater than total number of requests
Usage: ab [options] [http[s]://]hostname[:port]/path

とやってみるとエラーが(・ω・;)?Apacheの設定で同時接続数もしくは、同IPからアクセスに制限がかかってるものだと勘違いしていましたが、コマンドを正しく打ってませんでした。というか、エラーにその旨が書いてありますが。。

ad -c [同時アクセス数] -n [連続アクセス数] http://[アクセス先]

要するに、同時アクセス数 > 連続アクセス数をどうやって実現するんだ!?って話ですね。上記だと1アクセスするのに2端末使いますよって話です。1端末は用無し。。

そういうわけでミニ失敗談はさておき、気を取り直してパフォーマンスチェックします。

パフォーマンスチェック結果の見方

Document Path アクセス先htmlファイル
Document Length アクセス先ファイル容量
Concurrency Level 送信リクエスト数
Time taken for tests リクエスト完了までの所要時間
Complete requests 総リクエスト数
Failed requests 取りこぼしたリクエスト数。取りこぼしの発生は、同時接続数にサーバの処理能力が追い付いていないことが原因と考えられます
Requests per second 1秒あたりに処理されたリクエスト数。パフォーマンスの尺度として利用します。この値が高くなるように、サーバの最適化を行います
Time per request 1秒あたりに処理された所要時間
Transfer rate 1秒あたりに受信された容量
Connnection Times (ms) 上から順に接続(Connect)、処理(Processing)、待ち時間(Wait)を集計し、最小値(min)、平均値と標準偏差(mean[+/-sd])、中央値(median)、最大値(max)で表している
Percentage of the requests served within a certain time (ms) 処理時間の推移

この中でとりあえず気になるのは、Time taken for tests(リクエスト完了までの所要時間)ですかね。これが速ければ速い方がいいのは当たり前ですが、1ページ当たりどれくらいのストレスを感じるかの目安にしやすいと思います。実際はRequests per second(1秒あたりに処理されたリクエスト数)を基準とするようです。では実験結果は下記に。

続きを読む

LAN内から自宅サーバへのHTTPアクセスに対する問題

光回線にしてから、PR-S300NEルータが我が家に来て、以下のようなネットワーク構成になっています。

kateinailan


以前のADSL時の構成の場合は、特に問題はなかったのですが、このPR-S300NEルータが来てから、LAN内で自宅サーバへのhttpアクセスができなくなりました。外部から(例えばこの図だと携帯から携帯回線で)httpサーバへはアクセスできます。正確に言えば、独自ドメイン(例としてhogehoge.comとする)のWebページにアクセスできません。なのでhttp://192.16.1.11/等のLAN内のIPアドレスを指定すればアクセスはできます。どうやら、LAN内のマシンからブラウザでhogehoge.comへアクセスを試みると、

クライアントマシン→PR-S300NE→プロバイダ→お名前.com(hogehoge.com)→プロバイダ→PR-S300NE→ × →hogehoge.comサーバ

となっているようです。回り回ってPR-S300NEルータに対してhttpアクセスしているように見えます。この問題の解決方法は2パターンあると思います。

  • hostsファイルを編集
  • DNSサーバを構築

hostsファイルを編集する場合の特徴は、LinuxでもWindowsでもhostsファイルに

192.168.1.22 hogehoge.com

※192.168.1.22は自宅サーバのLAN内IPアドレス

と記述するだけのお手軽対応です。その変わりデメリットとして、LAN内でhogehoge.comへアクセスしたいクライアントマシン全てに対してhostsファイルを編集する必要があり、LAN内にクライアントマシンをたくさん抱えている場合は現実的ではありません。

 

DNSサーバを構築する場合の特徴は、PR-S300NEルータにきたアクセスを一旦自宅サーバのDNSサーバで引き取り、振り分けるようにルーティングするはずなので、上記のデメリットであるhostsファイルの存在を気にする必要がありません。そのかわり、hostsを編集するほどお手軽とは言えません。


[参考]

・内部向けDNSサーバー構築(BIND) - CentOSで自宅サーバー構築
http://centossrv.com/bind-lan.shtml

 

上記リンクを参考に、内部向けだけでも構築しようと思いましたが、面倒なので あまり理解していないDNSサーバでせっかく繋がっているWebサーバにいらんことしてアクセスできなくなり、時間を割かれそうな予感がしたので、今回は見送りました。まぁでも、将来的にサーバを増やしたらやらなきゃいけない課題ではあります。

WordpressとPHP、MySQLのバージョン一覧とインストール

以前はMovable Typeを使っていましたが、最近はもっぱらWordPressです。ググってるとどうも、wordpressの記事が多いなとか、記事の動的構築に魅力を感じて変更しました。って今更感の話ですが、このブログに書いてなかったし、テスト環境を構築するので書き留めておきます。まず、wordpressを動かす環境をしらべなければなりませんね。もちろん、CentOS + apache環境ですが、PHPとMySQLのバージョンを。

バージョンを調べる

PHPの場合は、

$ php -version
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

-varsionオプションですぐに出てきます。この場合、5.1.6というこで。現時点で最新のWordpress3.3.1の動作環境がPHP5.2.4以上なので、最新のバージョンを使えない事がわかります。

MySQLの場合は、

$ mysql --version
mysql  Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (i686) using readline 5.0

“Ver”と書いてあるので、14.12だと思いそうになりますが、見るべくは5.0.22の方です。もしくは、ログインして、

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.22    |
+-----------+

調べる事も可能です。MySQLの方はほとんどが5以下で変動もないので特に気にする事もないかもしれません。

とりあえず、PHPから最新のWordpressを利用できない事はわかりましたが、どのバージョンなら良いのか?

・WordPress | 日本語 リリース
http://ja.wordpress.org/releases/

 

過去のバージョンがダウンロードできるページに特に書いてないので、調べてみました。

続きを読む

プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。