• Apache2.2+PHP5.2 完全インストール – part2 – PHPインストール

    今回は PHP5.2 系列のインストールです。

    対象OS : CentOS, RH*, Fedora, FreeBSD, NetBSD, OpenBSD

    ※)途中 yum コマンドを使います。*BSD系OSの場合は yumの変わりにPortsツリーを使いインストールしてください。

    Apacheのインストール は 前回で済んでいるものとします。

    ■準備

    # cd /usr/local/src/web
    # tar zxvf php-5.2.8.tar.gz
    ...
    ...
    ...
    # cd php-5.2.8
    

    ■インストール

    # ./configure \
    --prefix=/usr/local/php5 \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --without-sqlite \
    --enable-mbstring \
    --enable-zend-multibyte \
    --enable-ftp \
    --enable-sockets \
    --with-mysql=/usr/local/mysql5 \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-zlib \
    --with-openssl
    

    ===============configureオプションの解説===============
    –prefix=/usr/local/php5 : インストール場所を指定
    –with-apxs2=/usr/local/apache2/bin/apxs :インストール済みのApacheと連動させる。
    (DSOもジュールを作成する)
    –without-sqlite :SQLiteを使わない
    –enable-mbstring :マルチバイト関数をインストールする
    –enable-zend-multibyte :Zendのマルチバイトエンジンを有効にする
    –enable-ftp :FTPプロトコルをサポートする
    –enable-sockets :socketをサポートする(HTTPとか)
    –with-mysql=/usr/local/mysql5 :MySQLをサポートする
    –with-gd :DBエンジンをサポートする
    –with-jpeg-dir :Jpegライブラリをサポートする
    –with-png-dir :pngライブラリをサポートする
    –with-freetype-dir :FreeTypeをサポートする
    –with-zlib :zLibをサポートする
    –with-openssl :SSLをサポートする (HTTPSとか)
    ==============================

    ■エラー:その1

    ...
    checkig libxml2 install dir... no
    checking for xml2-config path...
    configure: error: xml2-config not found. Please check your libxml2 installation.
    #
    

    PHP5のインストールには xml2ライブラリが必要です。 libxml2のライブラリとソースファイルをインストールします。

    # yum install -y libxml2 libxml2-devel
    

    ■エラー:その2

    ...
    checking for fabsf... yes
    checking for floorf... yes
    configure: error: libjpeg.(a|so) not found.
    #
    

    libjpegライブラリが見つかりません。インストールします。

    # yum install -y libjpeg libjpeg-devel
    

    ■エラー:その3

    ...
    checking for floorf... yes
    checking for jpeg_read_header in -ljpeg... yes
    configure: error: libpng.(a|so) not found.
    #
    

    libpngライブラリが見つかりません。インストールします。

    # yum install -y libpng libpng-devel
    

    ■エラー:その4

    ...
    checking for jpeg_read_header in -ljpeg... yes
    checking for png_write_image in -lpng... yes
    If configure fails try --with-xpm-dir=<DIR>
    configure: error: freetype.h not found.
    #
    

    freetype.h が見つかりません、FreeTypeのライブラリ+ヘッダファイルをインストールします。

    # yum install -y freetype freetype-devel
    
    ...
    checking for MySQL support... yes
    checking for specified location of the MySQL UNIX socket... no
    checking for MySQL UNIX socket location... no
    configure: error: Cannot find MySQL header files under /usr/local/mysql5.
    Note that the MySQL client library is not bundled anymore!
    #
    

    MySQL clientのヘッダファイルが見つかりません。–with-mysql で指定したディレクトリにMySQLがインストールされていない可能性があります。

    ※)MySQL は、内容が複雑ですので ソースからインストールする事が多くなっています。ソースからインストールされた場合は、MySQLのconfigureに指定した –prefix を –with-mysql= に指定してください。

    一応 yum からインストールする方法を記載します。

    # yum install mysql mysql-server mysql-devel
    

    ■コンパイル/インストール

    # make
    # make test
    # make install
    

    ・設定ファイルを設置

    # cp php.ini-dist /usr/local/php5/lib/php.ini
    

    ■設定

    ・AddTypeの追記

    インストールが完了すると、Apacheの httpd.conf に一行の記述が追加されます。

    ・httpd.conf

    LoadModule php5_module modules/libphp5.so
    

    ↓手動で1行追加

    LoadModule php5_module modules/libphp5.so
    AddType application/x-httpd-php .php .phtml
    

    この AddType では、どのような拡張子をPHPとして扱うかを指定します。
    .php という拡張子のファイルを PHPで処理させたければ、ここに .php と指定します。

    ・SELinux の設定

    そのままでは、Apache が libphp5.so を読み込む処理が SELinux によって抑制されてしまい、起動できません。

    # service httpd start
    
    httpd を起動中: httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
    [失敗]
    #
    

    libphp5.so に対してのアクセスを許可します。

    # chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache2/modules/libphp5.so
    

    後は、サーバー固有の設定になりますので、 httpd.conf や php.ini などを用途に見合った設定にすれば終了です。
    お疲れ様でした。

    << | 1 | 2 |


  • Apache2.2+PHP5.2 完全インストール – part1 – Apacheインストール

    さて今回は、サーバー構築のメジャーどころ。ウェブサーバーを構築します。

    対象OS : CentOS, RH*, Fedora, FreeBSD, NetBSD, OpenBSD

    ※)途中 yum コマンドを使います。*BSD系OSの場合は yumの変わりにPortsツリーを使いインストールしてください。

    ウェブサーバーの構築には、Apache 2.2 系列と、今をときめく PHP 5.2 系列を導入します。

    ■準備

    ・作業ディレクトリ作成

    # mkdir -p /usr/local/src/web
    # cd /usr/local/src/web
    

    ・httpd-2.2.11.tar.gz をダウンロード

    # wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.11.tar.gz
    

    ・php-5.2.8.tar.gz をダウンロード

    # wget http://jp.php.net/get/php-5.2.8.tar.gz/from/jp2.php.net/mirror
    

    ■Apache2.2.*のインストール

    ・Apacheを展開

    # tar zxvf httpd-2.2.11.tar.gz
    # cd httpd-2.2.11
    

    ・コンフィギュア

    # ./configure --prefix=/usr/local/apache2/ --enable-so --enable-rewrite --enable-ssl
    

    =====configure オプション詳細=====
    –prefix=/usr/local/apache2/ : インストール場所を /usr/local/apache2
    –enable-so : DSOモジュールを有効化
    –enable-rewrite : Rewriteを有効化。(リダイレクトなど)
    –enable-ssl : SSLを有効にする。
    ======================

    ■エラーがでたら・その1

    ...
    ...
    configure: error: in `/usr/local/src/web/httpd-2.2.11/srclib/apr':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details.
    configure failed for srclib/apr
    #
    

    このエラーが出たら Cコンパイラが見当たらないという事なので、C コンパイラがインストールされていない可能性があります。CentOSを含む RHのクローンOS であれば、次のようにして Cコンパイラをインストールします。

    # yum install -y gcc gcc-c++
    

    インストールが完了したら、再度 configure。

    ■エラーがでたら・その2

    ...
    ...
    checking for openssl/ssl.h... no
    no OpenSSL headers found
    checking for SSL-C version... checking sslc.h usability... no
    checking sslc.h presence... no
    checking for sslc.h... no
    no SSL-C headers found
    configure: error: ...No recognized SSL/TLS toolkit detected
    #
    

    このエラーは、OpenSSLのヘッダファイルが見つからない事を意味します。OpenSSLのヘッダファイルをインストールします。

    # yum install -y openssl-devel
    

    インストールが完了したら、再度 configure。

    では、コンパイルします。

    ・コンパイル

    # make
    

    ・インストール

    # make install
    

    ■設定

    ・iptablesで80番ポートを開放 (RHのクローンの場合のみ)

    # vi /etc/sysconfig/iptables
    

    ・/etc/sysconfig/iptables

    # vi /etc/sysconfig/iptables
    
    ...
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    ...
    

    ↓追加

    ...
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    ...
    

    ・iptables を再起動

    # service iptables restart
    

    ここまで進んだら、一度動作確認を行っておきます。
    ・Apacheの動作確認。

    # /usr/local/apache2/bin/apachectl start
    

    ブラウザを使い、http://IPアドレス/ にアクセスしてください。
    Apacheが正常に動作している事を示す「It works!」と表示されるハズです。

    確認できたらプロセスを一度終了させておきます。

    # /usr/local/apache2/bin/apachectl stop
    

    ・自動起動設定 – RHクローンの場合

    # cp build/rpm/httpd.init /etc/rc.d/init.d/httpd
    # chkconfig --add httpd
    # chkconfig httpd on
    

    そして、この httpd というファイルですが、$PREFIXを指定した構成でインストールした場合、httpd.conf のパスがデフォルトではなくなっているので、httpd内に記述された httpd.conf のパスがずれてしまいます。
    そのせいで、「設定ファイルがありません」などとエラーを吐きますので、正確なパスへと修正してください。

    このサイトページ通りにインストールした場合、httpd.conf のパスは /usr/local/apache2/conf/httpd.conf となります。

    同じように httpd コマンドへのパスも修正します。
    /usr/local/apache2/bin/httpd

    ・自動起動設定 – FreeBSD、NetBSD、OpenBSDの場合
    /etc/rc.local に次の行を追加します。

    # vi /etc/rc.local
    

    ========== /etc/rc.local (SSLなし) ==========

    # Apache
    if [ -x /usr/local/apache2/bin/apachectl ]; then
    echo -n ' Apache start\n';
    /usr/local/apache2/bin/apachectl start
    fi
    

    ========== /etc/rc.local (SSLあり) ==========

    # Apache
    if [ -x /usr/local/apache2/bin/apachectl ]; then
    echo -n ' Apache start\n';
    /usr/local/apache2/bin/apachectl startssl
    fi
    

    ■Apacheサーバー設定

    Apache2.2から設定ファイルの配置が変わりました。
    ベースの設定ファイルが $PREFIX/conf/httpd.conf というファイルで、種別ごとの詳細設定は $PREFIX/conf/extra/httpd-*.conf といったように、分割されました。

    ■Apacheサーバー設定 – CGIの利用
    CGIを利用する場合は、httpd.conf にあります。
    ・httpd.conf

    #AddHandler cgi-script .cgi
    

    という行の先頭のコメントアウトを外し、有効にします。

    ※)この場合、Perl以外にも /bin/sh や C言語で作成したCGIも実行されます。
    Perlのみに抑制したい場合は、mod_perl や File ディレクティブなどで制御してください。

    ■Apacheサーバー設定 – 最低限のセキュア設定。

    ・conf/extra/httpd-default.conf

    ServerSignature Off
    

    conf/extra/httpd-default.conf にあります、ServerSignature ディレクティブを On から Off に設定します。この ServerSignature では、404やディレクトリのインデックスを表示するページで、ApacheやOSのバージョンを出力するかを設定できます。Off とすることで出力を抑制できます。

    ServerTokens ProductOnly
    

    conf/extra/httpd-default.conf にあります、ServerTokens ディレクティブを Full から ProductOnly に設定します。 ServerTokens では、HTTPヘッダにApacheのバージョン番号を含めるかを指定します。Apacheのバージョンはセキュリティの為に、公開しない方が望ましいでしょう。

    次回は、PHPをインストールします。

    | 1 | 2 | >>