Category Archives: サーバー管理

PHP 5.2.12 + GD

Mac OSX Server 10.5.8のアップデートをしたらPHPのバージョンが5.2.12にアップされていて、またGDが入っていなかったので再コンパイル。

GDぐらい一緒にコンパイルしておいて欲しいのですが…今回つかったライブラリのバージョンは以下の通り。

  • libpng 1.4.1
  • libjpeg jpeg-8a
  • gd 2.0.35
  • php 5.2.12

今回は前回のMacにおけるiconv関係バグに加え、DNS関係のバグ(Bug #50508)が有り、php-5.2.12/ext/standard/dns.c の58行目からを以下のように修正しました。前回のiconvについての修正も行う必要があります。

#if HAVE_ARPA_NAMESER_COMPAT_H
#include
#endif

#if HAVE_ARPA_NAMESER_COMPAT_H
#ifndef HAVE_ARPA_NAMESER_H
#include
#endif
#endif

に変更してから以下のようにコンパイルしました。

$ cd ~/Downloads/src/libpng-1.2.40
$ CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ CFLAGS="-arch x86_64" ./configure
$ cp libtool ../jpeg-8a/
$ cd ../jpeg-8a/
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --enable-shared
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
$ make
$ sudo make install

$ cd ~/Downloads/src/php-5.2.12
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/X11R6 --with-gd=/usr/local
$ make
$ make test
$ sudo make install

Mac OS X Leopard Server で WordPress の自動アップデート

以前の記事で、WordPressでの自動アップデートを成功させるためには、FTP_BASEやFTP_CONTENT_DIRやFTP_PLUGIN_DIRを定義すればよいと記事に書きました。

が、その記事に書いた通りLinux(Debian)では正しく動作していたのにLeopard Serverにしてからうまく行かなくなっていました。

しかも「ディレクトリが見つかりません」というようなわかりやすいエラーではなく「ファイルをコピーできませんでした」というエラー…
表示されるパスには間違いはないし、パーミッションも777にしてみても(すでになっている)駄目。

ちなみに「ファイルをコピーできませんでした」というエラーはPHPがセーフモードで動いている場合によく出るそうですが、今回はセーフモードで動かしてはいません。

で、諦めていたのですが、いっそのことFTP_BASEやFTP_CONTENT_DIRやFTP_PLUGIN_DIRの定義をコメントアウト(削除)してみるとなんとすんなり成功。

(下部の追記参照)

ということで、セーフモードでもないのに「ファイルをコピーできませんでした」と言われた時は一度FTPのディレクトリ設定を削除してみるのも手かもしれません。

追記

どうやらCodexのFTP_BASE等の説明には「インストールした WordPress のベースフォルダへのフルパス。」と書いてあるので”サーバー内でのフルパス”だと思っていたのですが、少なくともOSXでは”FTPでアクセスした時のパス”が正しいようです。(OSの問題では無いようなな気もしますが)

Codexにも「FTPユーザとしてサーバ上にある各フォルダへのパスが分かっていれば…」とあるので”FTPでアクセスした時のパス”が正しいようです。

つまり「/Users/name/Sites/wp-content/」ではなくFTPから見た時のパスなので「/Sites/wp-content/」とするとFTP_BASE等を定義しても自動アップデートできました。

OSX Server 10.5.8 で PHP+GD

アップデートしたときにPHPのバージョンも変更(5.2.10)されていたことに気づかず、GDが入っていないPHPに置き換えられていたので再度PHPをGD付きでコンパイルしたのでメモ。

各ライブラリの今回利用したバージョンは以下の通り。

  • libpng 1.2.40
  • libjpeg jpeg-7
  • gd 2.0.35
  • php 5.2.10

PHPをMacでコンパイルするとlibiconv関係でリンク時にエラーが出る問題があるそうなのでext/iconv/iconv.cの196行目あたりを以下のように書き換えてからコンパイルに移ります。(参照:PHP Bugs: #49267: Linking fails for iconv: “Undefined symbols: _libiconv”)
Before

#ifdef HAVE_LIBICONV
#define iconv libiconv
#endif

After

#ifdef HAVE_LIBICONV
#define iconv iconv
#endif

実行した手順だけを載せます。

<code>
$ cd ~/Downloads/src/libpng-1.2.40
$ CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ CFLAGS="-arch x86_64" ./configure
$ cp libtool ../jpeg-7/
$ cd ../jpeg-7/
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --enable-shared
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
$ make
$ sudo make install

$ cd ~/Downloads/src/php-5.2.10
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/X11R6 --with-gd=/usr/local
$ make
$ make test
$ sudo make install
</code>

OSX Server 10.5.7 で PHP+GD

先日Mac OSX Server Leopard を更新してからWordPressでサムネイルが作成されなくなったなぁと思っていたのですが、アップデートの際に以前GDをServerにインストールしたときからPHPのバージョンが5.2.8に変更されていたのでまたGDのついていないPHPのバイナリに交換されてしまったようです。ということで、以前と同様にGDをインストールしました。方法は以前の「OSX Server 10.5 (64bit)でPHP+GD」を参照していただくとして、今回利用した各ライブラリのバージョンは以下の通りです。それをメモするだけなので日記ということで、適当な更新です。

  • PHP 5.2.8
  • libgd 2.0.35
  • libpng 1.2.37
  • libjpeg(jpeg v7)

コンパイル時にはいくつか注意点が…

Read more …

ImageMagicのインストール

MediaWikiでサムネイルを作成するためにImageMagic(convertコマンド)が必要だったのでインストールします。環境はOSX Server 10.5.6 x86(64bit)です。

ImageMagicのページにはMacOSX用のバイナリも用意されているのですが、インストールの方法がまずかったのか利用できなかったのでソースからコンパイルします。

利用できなかった理由は
$ convert -list format
で対応フォーマットが表示できるのですが、一つもありませんでした。

一つ前の記事でlibjpegとlibpngがインストールされていることが必要です。
適当な場所にソースをダウンロードして解凍しておきます。この記事では「ImageMagick-6.5.1-0.tar.gz」を利用しました。i386でもいいのですが、せっかくコンパイルするので64bitにしてみます。

ではコンパイルしていきます。x86_64でなくi386であればconfigureのオプションは全て外してください。
$ cd ImageMagick-6.5.1-0
$ CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure
$ make
$ sudo make install

これで終了です。
$ convert -list format
を実行するとずらずらと対応フォーマット一覧が出てきたので成功です。

OSX Server 10.5 (64bit)でPHP+GD

OSX Server 10.5を導入したのですが、PHPにGDが入ってないのでlibpng,libjpeg,libgdをコンパイルし、phpを再コンパイルします。
が、apacheが64bitで動いていたので少し難儀したのでメモを。

基本的にはこちらのサイトに従うのですが、アーキテクチャーの指定はこちらのサイトを参考に進めていきます。
ただし、失敗しても良いように既存の「/usr/libexec/apache2/libphp5.so」はバックアップしておいてください。
Read more …

WordPressの自動アップデートエラーについて

WordPressにはプラグインや本体をFTP経由で自動でアップデートする機能がありますが、だいたいは「ディレクトリが見つかりません」といわれてしまいます。

そんな場合は「wp-config.php」に以下の三行を追加するだけで直ります。
上から順番に「FTPのルートディレクトリ」「wp-contentディレクトリ」「pluginsディレクトリ」へのパスです。

define('FTP_BASE', '/path/to/wordpress/');
define('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/');
define('FTP_PLUGIN_DIR', '/path/to/wordpress/wp-content/plugins/');

長いことあきらめていたのですが公式サイトの「wp-config.php_の編集」に説明がありました。

明日は前期入試です

追記(2010年1月11日)
どうやらFTP_BASE等でのフルパスというのはFTPから見た時のパスのような気がします。
Codexの説明には「インストールした WordPress のベースフォルダへのフルパス。」としか書いてないのでどちらかわかりませんが、試してダメならFTPで接続したときのパスを入れてみてください。

Codexにも「FTPユーザとしてサーバ上にある各フォルダへのパスが分かっていれば…」とあるのでこれで正しいと思われます。

CAcertから証明書をもらおう!(その0:紹介)

CAcertとはこちらの記事が詳しいですが簡単に言うと無料でX.509セキュリティ証明書を発行してくれる認証機関です。
CAcertロゴマーク
本来証明書は「Verisign」や「セコム」などに多くの費用を払わないともらえず、どうしてもその費用を払ってでもセキュリティを必要とするサーバー(本社と支店を接続したり、Amazonなどのネットショッピングサイト、あるいは銀行のネットバンキングなど)にしか導入できないものですが、CAcertボランティアによってすすめられている無料の認証局です。

もちろん上記のような本当にセキュアな通信が必要な場面では使えませんが、以前この投稿でApacheでSSLを有効にする際には「個人で勝手に作った認証局」から発行された(発行した?)「えせ証明書」を利用しましたが、それとは比較してはいけないぐらい十分すぎる証明書が頂け、利用できます。
Read more …

同一タイトルでの新規投稿不可問題

なぜか、他のWordPressの動作テストをしていたら「公開」ができなくなったので(詳細は割愛)こっちのも確認。

「保存」は動作確認。
「公開」も動作確認。
あれ?

追記
原因
同じタイトルの記事を新規投稿(保存ではなく公開)すると発生するらしい。
だから「新規投稿テスト」とテストしたときは問題なかったのだ。
こちらに報告も発見。

対処
今後新規記事を作る際に投稿できない場合はタイトルを変更して投稿。
どうしてもそのタイトルにしたい場合は一度公開してから変更。

ProFTPDの導入

自分だけがサーバーのファイルをいじるだけならSSH、SFTPやnetatalkのみで十分だったのですが、後輩たちがクラブのページを作成する場所をつくるにあたってFTPを導入しようと思ったのです。が、なかなかPassiveモードが利用できず、ルーター越えでの接続ができませんでした。
で、ProFTPDの再インストールからはじめ、やっと今回成功したのでメモしておきます。
構成としてはxinetd経由で起動し、ファイルによる仮想ユーザーということで。
(仮想ユーザーについてはまた今度…)

内容は2点です。
1.ProFTPDとxinetdの設定ファイル
2.iptablesのためにモジュールの読み込み

Read more …