PHP4.3.xインストールガイド


PHP4.3.x インストールガイド (2004.06.16 更新)

ユーザーディレクトリのソースファイル用へ移動

$ cd /home/[UserName]/src  

PHPのWebサイトよりソースファイルを取得
ここではバージョン4.3.7を選択してます。
最新バージョンを確認して相応に置き換えてください
PHPのWebページ http://www.php.net/
事前に手元へダウンロードを済ませて置いてください。

DLしたファイルを解凍

$ tar xfz php_4.3.7.tar.gz  

解凍したファイルのディレクトリへ

$ cd php-4.3.7  

pgsqlモジュール組み込み およびAPACHEへの組み込みオプションを指定してコンフィグレーション

$ ./configure --with-pgsql \
	--with-apxs=/usr/local/apache/bin/apxs \
	--enable-mbstring \
	--enable-mbstr-enc-trans \
	--enable-mbregex  

apache2を利用する場合

$ ./configure --with-pgsql \
	--with-apxs2=/usr/local/apache2/bin/apxs \
	--enable-mbstring \
	--enable-mbstr-enc-trans \
	--enable-mbregex  

ここで下記の表示が出ていればコンフィグレーションはOKです

+--------------------------------------------------------------------+
|                        *** WARNING ***                             |
|                                                                    |
| You chose to compile PHP with the built-in MySQL support.  If you  |
| are compiling a server module, and intend to use other server      |
| modules that also use MySQL (e.g, mod_auth_mysql, PHP 3.0,         |
| mod_perl) you must NOT rely on PHP's built-in MySQL support, and   |
| instead build it with your local MySQL support files, by adding    |
| --with-mysql=/path/to/mysql to your configure line.                |
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+
|                          *** NOTE ***                              |
|            The default for register_globals is now OFF!            |
|                                                                    |
| If your application relies on register_globals being ON, you       |
| should explicitly set it to on in your php.ini file.               |
| Note that you are strongly encouraged to read                      |
| http://www.php.net/manual/en/security.registerglobals.php          |
| about the implications of having register_globals set to on, and   |
| avoid using it if possible.                                        |
+--------------------------------------------------------------------+



Thank you for using PHP.

標準のmake作業(APACHEに比べて時間がかかります)

$ make  

※この時、古いバージョンのgccおよびbinutils を使用していますとmkstempに関係するエラーが発生することがあります。
make cleanで失敗したmakeデータをクリアして、新しいgcc、binutils に入れ替えて再度makeを行ってください。
(参考:gcc,binutilsインストールについて)
rootになりインストールを実施

$ su -  
$ [root Password]  
$ cd /home/[UserName]/src/php-4.3.7  
$ make install  

以上でPHP4の標準インストール完了です。
引き続きAPACHEの環境設定とAPACHEへPHP4を有効にするための設定を行います

APACHEの設定ファイル(httpd.conf)の編集

上記の方法でインストールを行った場合はインストールディレクトリは
/usr/local/apache
になっています。
/usr/local/apache/conf
にあるhttpd.confのファイルが設定ファイルです。
これを必要に応じて編集します。
ここでは
○主のWWW用ディレクトリの設定
○ユーザディレクトリの設定
○基本認証の有効設定
○CGIディレクトリの設定と動作設定
をまず行います。
PHP4をインストールした後、PHP4を有効にするための設定を後述します

rootになりapacheの設定ディレクトリへ移動

$ su -  
$ [root Password]  
$ cd /usr/local/apache/conf  

テキストエディタで修正を開始します

$ vi httpd.conf  

PostgreSQL用のライブラリを組み込みます
LoadModule 項目の前に下記の行を追記します。

	LoadFile /usr/local/pgsql/lib/libpq.so

デフォルトで使用するポートは8080になっていますので80に変更します

#
# Port: The port to which the standalone server listens. For
# ports < 1023, you will need httpd to be run as root initially.
#
Port 8080
  ↓
Port 80

ServerNameがコメントアウトされてますので有効にして任意の名前をつけます

#
# ServerName allows you to set a host name which is sent back to clients for
# your server if it's different than the one the program would get (i.e., use
# "www" instead of the host's real name).
#
# Note: You cannot just invent host names and hope they work. The name you
# define here must be a valid DNS name for your host. If you don't understand
# this, ask your network administrator.
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
# machine always knows itself by this address. If you use Apache strictly for
# local testing and development, you may use 127.0.0.1 as the server name.
#
#ServerName LinuxVSV
  ↓
ServerName LinuxServer

http://www.XXXX.YY.ZZ/で使用するhtmlの設置ディレクトリを変更します。
私はユーザと同じようにFTPからアップが行いやすいように/home以下にwwwディレクトリを作ってそこを基本ディレクトリにしています。
各自管理・運営のしやすい方法・場所に設置してください。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache/htdocs"
  ↓
DocumentRoot "/home/www/htdocs"

ここからは基本ディレクトリに対しての変更です。
先ほど変更したディレクトリに合わせて書き直します

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/apache/htdocs">
  ↓
<Directory "/home/www/htdocs">

基本認証を有効にしますのでAuthConfig もしくは Allに変更します

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride None
  ↓
    AllowOverride All

ここまでは基本ディレクトリの設定です。
次にユーザーディレクトリの設定を変更します
デフォルトではコメントアウトされていますので http://www.XXXX.YY.ZZ/~username/ のように各ユーザーに対してディレクトリを用意する場合はこの変更を行ってください。
ユーザー管理レベルに応じて設定を変更してください。

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>
  ↓
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#       Order deny,allow
#        Deny from all
#    </LimitExcept>
 </Directory>

ここまでがユーザーディレクトリの設定です。

次にhttp://www.XXXX.YY.ZZ/ のようにファイル名を指定しない場合に呼び出すDirectory Indexの設定を行います。
私はPHP4もDirectory Indexとして利用しますので下記のように変更しました。
各自運用形態に合わせて追加・修正してください。
記載した順序が優先順位になりますので注意してください

#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>
  ↓
<IfModule mod_dir.c>
    DirectoryIndex index.html index.htm index.php
</IfModule>

アクセスログについてです。
アクセスログ内にIPアドレスでアクセス元を記録するかドメインで記録するか設定を行います
デフォルトではIPアドレスでの記録になっています
管理の厳密さから言えばIPアドレスでの記録が望ましいのですが、どうしてもドメインがいいという方はこの修正を行ってください。
ただし処理に若干の負担がかかります。
アクセスが多く見込まれるサーバーに対しては不向きです。

#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
  ↓
HostnameLookups On

アクセスログの記録にいくつか種類があり、一番詳細に記録してくれる方法がcombined です。
不正アクセスの検知、アクセス元、アクセスブラウザなど詳細に知りたい場合はこの方法を有効にしてください。
各自管理レベルに合わせて変更を行ってください。

#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here.  Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
CustomLog /usr/local/apache/logs/access_log common

#
# If you would like to have agent and referer logfiles, uncomment the
# following directives.
#
#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent

#
# If you prefer a single logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
#CustomLog /usr/local/apache/logs/access_log combined
  ↓
#CustomLog /usr/local/apache/logs/access_log common

#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent

CustomLog /usr/local/apache/logs/access_log combined

次にCGIディレクトリについての設定です
デフォルトではCGIの動作は有効になっていません。
.cgi を使用する場合はこの修正を行ってください。

    <Directory "/usr/local/apache/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
  ↓
    <Directory "/usr/local/apache/cgi-bin">
        AllowOverride None
        Options ExecCGI
    </Directory>

CGIの動作を有効にした場合、拡張子cgiがCGIスクリプトとして認識するようにHandlerの設定を有効にします。

    #AddHandler cgi-script .cgi
  ↓
    AddHandler cgi-script .cgi

PHP4を有効にするための拡張子を設定します。
記述があってコメントアウトされている場合、記述がない場合があります。
各自確認して必要に応じて修正してください

AddType application/x-httpd-php .php

現時点でのAPACHEの稼動状況を見る事が出来ます。
利用する場合はこの設定を修正してください。
ただし、利用できるIPアドレスの制限をかけることを忘れないでください。
ここではローカルIP(192.168.0.0~192.168.0.255)からのみ利用可能にしてあります

#
# Allow server status reports, with the URL of http://servername/server-status
# Change the ".your-domain.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .your-domain.com
#</Location>

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 192.168.0.
</Location>

この他にAPACHEでのPROXY設定、VirtualHostの設定が可能です。
ここで説明するには奥が深く専門的になりますので、他のサイトを検索して参照ください(^^;
APACHEにはもっと専門的、詳細な設定ができます
徐々に使用して行き自分に合った設定を見つけてください
ここでは、基本的な設定方法だけとさせてもらいます
ここまでで設定ファイルの修正が完了です。
APACHEを起動してみましょう

$ /usr/local/apache/bin/apachectl start  

ここで下記の表示が出ていれば設定OKです

$ /usr/local/apache/bin/apachectl start: httpd started  

以上でAPACHE + PHP4 + Postgresのインストール設定は終了です。

APACHEの起動確認・自動起動設定

APACHEとPHP4が有効になっているか確認してみましょう。
先に設定した基本ディレクトリに移動してPHP4の情報表示用のスクリプトを作ってみます。

$ cd /home/www/htdocs  
$ vi test.php  
<?
	phpinfo();
?>

これでブラウザから

http://www.XXXX.YY.ZZ/test.php

にアクセスして”PHP Version 4.2.3”とかかれた表が表示されれば組み込みOKです。
次にAPACHEを自動起動する設定を行います
今、自分がどのユーザになっているか確認してください。

$ whoami  

rootであればそのまま作業を続行します。
他のユーザであればrootになります。

$ su -  
$ [root Password]  

自動起動のスクリプトは/etc/rc.d/init.dに配下に記述します

$ cd /etc/rc.d/init.d  

テキストエディタでAPACHE用のスクリプトを入力します

$ vi httpd  

入力する内容は下記の通りです。
APACHEのインストールディレクトリなどを変更した方は、それに合わせて修正してください。

#!/bin/sh
# startup/shutdown/restart script for Apache (/usr/local/apache/bin/httpd)

APACHE_HOME=/usr/local/apache CONF_FILE=/usr/local/apache/conf/httpd.conf
PIDFILE=/usr/local/apache/logs/httpd.pid

if [ ! -f ${CONF_FILE} ]; then
exit 0
fi

case "$1" in
'start')
        /bin/rm -f ${PIDFILE}
        cmdtext="starting"
        cmdarg="start"
        ;;

'stop')
        cmdtext="stopping"
        cmdarg="stop"
        ;;

'restart')
        cmdtext="restarting"
        cmdarg="restart"
        ;;

*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

echo "httpd $cmdtext."

status=`${APACHE_HOME}/bin/apachectl $cmdarg 2>&1`

if [ $? != 0 ]; then
        echo "$status"
        exit 1
fi
exit 0

実行用のパーミッションを立てます

$ chmod +x httpd  

各起動レベルにリンクをはります /etc/rc.d/rc3.d/S85httpd
/etc/rc.d/rc4.d/S85httpd
/etc/rc.d/rc5.d/S85httpd

$ cd ../rc3.d/  
$ ln -s ../init.d/httpd S85httpd  
$ cd ../rc4.d/  
$ ln -s ../init.d/httpd S85httpd  
$ cd ../rc5.d/  
$ ln -s ../init.d/httpd S85httpd  

以上で自動起動の設定が完了です。
ps -aef でAPACHEのタスクが起動しているか確認します
起動している場合は終了させてください。
正常に終了しているのを確認しましたら新しく設定した自動起動の確認を行います

$ /etc/rc.d/init.d/httpd start  

ここで下記の表示が出ていれば設定OKです

httpd starting.

以上でAPACHEの自動起動設定は終了です。

APACHEのログローテーション設定

ログはほっておくとどんどん肥大化しますので定期的に分割するように設定をしてみましょう。
大きく分けて2種類の方法があります。
システムに任せる方法(logrotateを使用する方法)
apache自体に任せる方法(httpd.conf内にrotatelogsを指定する方法)が、あります。どちらも一長一短です。
ここでは、システムに任せる方法(logrotateを使用する方法)について記載します。

今、自分がどのユーザになっているか確認してください。

$ whoami  

rootであればそのまま作業を続行します。
他のユーザであればrootになります。

$ su -  
$ [root Password]  

スクリプトは/etc/logrotate.dの配下に作成します

$ cd /etc/logrotate.d  

テキストエディタでスクリプトを入力します

$ vi httpd  

入力する内容は下記の通りです。
APACHEのインストールディレクトリなどを変更した方は、それに合わせて修正してください。

/usr/local/apache/logs/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
       /bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

これで下記の様に定期的にログが更新されます。

-rw-r--r--    1 root     root      9458585  8月  5 18:09 access_log
-rw-r--r--    1 root     root     26748184  8月  3 03:51 access_log.1
-rw-r--r--    1 root     root     13505870  7月 27 03:50 access_log.2
-rw-r--r--    1 root     root     12059340  7月 20 04:01 access_log.3
-rw-r--r--    1 root     root     13312735  7月 13 03:49 access_log.4
-rw-r--r--    1 root     root       138553  8月  5 18:09 error_log
-rw-r--r--    1 root     root      1484005  8月  3 04:02 error_log.1
-rw-r--r--    1 root     root       889145  7月 27 04:02 error_log.2
-rw-r--r--    1 root     root       758212  7月 20 04:02 error_log.3
-rw-r--r--    1 root     root      1037422  7月 13 04:02 error_log.4


Last-modified: 2015-04-23 (木) 15:13:47 (946d)