タグ・アーカイブ: php

WordPressでラグインやテーマをインストールするときに、通常、FTPサーバへのログインを求められます。WordPressを動かしているサーバでFTPサーバが動いていて、FTPのポートをListenしていればよいのですが、そうもいかない環境だったらどうするのだろう?これも先人の知恵がありました。

ココを参考というかまるっと手順を踏襲させていただいたのでメモします。
1) FS_METHOD定数を設定する
wp-config.php に以下を追記する
define('FS_METHOD','direct');
2) WordPressインストールディレクトリ以下のオーナー、パーミッションを変更する
$ WPDIR=/path/to/public_html ← WordPressインストールディレクトリを環境変数に指定する(皆さんの環境に適宜読み替えてください)
$ cd ${WPDIR} ← WordPressインストールディレクトリへ移動する
$ sudo chgrp -R apache * ← すべてのファイル、ディレクトリのグループをapacheにする
$ sudo chmod -R g+rwX * ← すべてのファイル、ディレクトリのグループに読み書きの権限を付与する
$ sudo chmod 666 .htaccess
.htaccess以外のファイルはパーミッション664、ディレクトリのパーミッションが775になっていれば設定はOK。管理者ログイン後、テーマのインストールやプラグインのインストールを行う際に、FTPサーバの接続設定画面が出てこなければOKです。
しかし、パーミッションやオーナー、グループのチェックにFTPサーバのアカウントを使ってチェックするってどうなんだろう。。。(ぶつぶつ

Movable Typeでこんな記事書いてるけど気にしないでください(;´Д`)

人に頼まれてWordPressをインストールすることがたまにあって、あー楽ちん楽ちんとか思いながら手を動かすのですが、ちょっとだけハマったのがリバースプロキシ配下のWEBサーバにインストールするとき。
リバースプロキシから背後のWEBサーバへはプライベートIPアドレスで繋がっているのですが、WordPressインストール後に更新系の処理を行おうとすると、モロにプライベートIPアドレスへつなぎに行こうとして接続に失敗します。
ココを参考にというかそのまんまの手順で環境変数を設定したら、あっさり解決。wp-config.phpに
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

と書くだけ。環境変数2つであっさり解決なんて楽ちん楽ちん。

通常、apacheを何も考えずにインストールすると、preforkで動作します。小規模サイトであればそのままでも構わないのですが、大規模サイトでスレッドによる処理の引渡しが要件に入ってくると、workerで適切なパラメータを投入して動かしたほうがパフォーマンスがよくなります。
※ ただしマシンスペックが低いとあんまり恩恵にあずかれないかも・・・

ちなみに、rpmからインストールしたapacheの動作をpreforkからworkerに変えるのは簡単。
/etc/sysconfig/httpd ファイルの
#HTTPD=/usr/sbin/httpd.worker ← ココのコメントを外し、apacheを再起動するだけ。

しかし問題が1つあって、CentOS付属のPHPはスレッドによる処理の引渡に対応していないので、どノーマルなhttpdとphpをインストールした後にworkerで動作させようとすると、apacheの起動時に以下のようなエラーを吐くのです。。。対処法はココを参考にしました。

$ sudo /etc/init.d/httpd start
Starting httpd: [Fri Jan 02 18:13:43 2009] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
Pre-configuration failed
                                                           [FAILED]

■■ PHPのソースRPM入手とインストール

■ ソースRPMの入手

CentOSのミラーサイトには、大抵SRPMのディレクトリがあります。今回は理研さまのサイトからもってきました。
[oresama@sorachi ~]$ wget http://ftp.riken.jp/Linux/centos/5/os/SRPMS/php-5.1.6-20.el5.src.rpm

■ ソースrpmを展開する
[oresama@sorachi ~]$ rpm -ivh php-5.1.6-20.el5.src.rpm

■ SPECファイルを編集する
[oresama@sorachi ~]$ cd rpm/SPECS/
[oresama@sorachi SPECS]$ cp -p php.spec php.spec.orig
[oresama@sorachi SPECS]$ vi php.spec

ここを
%configure
        --cache-file=../config.cache
・・・

こうする
%configure
        --with-tsm-pthreads
        --enable-maintainer-zts
        --cache-file=../config.cache

tsm-pthreadsとmaintainer-ztsを有効にしてやるってことです。

■ 必要なパッケージをインストールする

その他、configureオプションを意図的に削除しない限りは、最低限以下のパッケージが必要になります。

apr-devel apr-util-devel aspell-devel autoconf automake beecrypt-devel bzip2-devel curl-devel cyrus-sasl-devel db4-devel e2fsprogs-devel elfutils-devel elfutils-devel-static elfutils-libelf-devel elfutils-libelf-devel-static expat-devel fontconfig-devel freetype-devel gcc-c++ gd gd-devel gmp-devel httpd-devel imake keyutils-libs-devel krb5-devel libc-client libc-client-devel libgcrypt-devel libgpg-error-devel libidn-devel libjpeg-devel libpng-devel libselinux-devel libsepol-devel libstdc++-devel libtool libX11-devel libXau-devel libXdmcp-devel libxml2-devel libXpm libXpm-devel libxslt libxslt-devel lm_sensors mesa-libGL-devel mysql mysql-devel ncurses-devel net-snmp net-snmp-devel net-snmp-libs openldap-devel openssl-devel pam-devel pcre-devel perl-DBI pkgconfig postgresql postgresql-devel rpm-devel sqlite-devel unixODBC unixODBC-devel xorg-x11-proto-devel zlib-devel

■ rpmbuildコマンドでビルドする

[oresama@sorachi SPECS]$ rpmbuild -bb php.spec

■ パッケージをインストールする

[oresama@sorachi SPECS]$ cd ../RPMS/i386
[oresama@sorachi i386]$ rpm --test -ivh php-5.1.6-20.i386.rpm php-cli-5.1.6-20.i386.rpm php-common-5.1.6-20.i386.rpm
[oresama@sorachi i386]$ sudo rpm -ivh php-5.1.6-20.i386.rpm php-cli-5.1.6-20.i386.rpm php-common-5.1.6-20.i386.rpm

■ apacheを再起動して反映
[oresama@sorachi i386]$ sudo /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

※ yumでパッケージをアップデートする際に、phpの上書きインストールがされないよう、yum.confでexcludeしましょう。

[oresama@sorachi ~]$ cd /etc/
[oresama@sorachi etc]$ sudo cp -p yum.conf yum.conf.orig
[oresama@sorachi etc]$ sudo vi yum.conf

この行を追加
exclude=php*

あとは、phpのテストページが正常に表示されればOKです。
ね、簡単でしょ?