PHP 5.3/インストール


Table of Contents

↑

はじめに

CentOS5.6からパッケージ追加されたPHP5.3をインストールします。

↑

インストール

↑

環境

  • OS
    • CentOS 5.6 (2.6.18-238.9.1.el5)
  • パッケージ
    • httpd-2.2.3-45.el5
    • mod_ssl-2.2.3-45.el5
    • php53-5.3.3-1.el5_6.1
    • php53-pgsql-5.3.3-1.el5_6.1
    • php53-mbstring-5.3.3-1.el5_6.1
↑

パッケージのインストール

  • apacheのインストール
    # yum install httpd

  • SSLモジュールのインストール
    # yum install mod_ssl

  • PHP53のインストール
    # yum install php53

  • PHPモジュールの追加
  • PostgreSQL関数を利用するためモジュールを追加します。
    libpqが古い(バージョン8.1.22)ため、利用できないPostgreSQL関数があるかもしれません。
    # yum install php53-pgsql

  • マルチバイト文字列関数用のモジュールを追加します。
    # yum install php53-mbstring

これでインストールは完了です。

↑

apacheの設定

↑

httpd.confの編集

  • apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を編集します
    # vi /etc/httpd/conf/httpd.conf#44行目 ヘッダ情報にapacheのパージョンなどを含めないよう制限しますServerTokens Prod#265行目 サーバ名を設定しますServerName www.oss-d.net:80#327行目「/var/www/html」以下のディレクトリでhtaccessを有効にしますAllowOverride All#391行目 インデックスファイルの指定 (index.phpを追加)DirectoryIndex index.html index.html.var index.php#524行目 エラーページの設定(サーバのバージョンやホスト名を出力しない)ServerSignature Off#747行目 デフォルトの文字コードを指定しますAddDefaultCharset UTF-8
↑

ssl.confの編集

  • apacheのSSL設定ファイル「/etc/httpd/conf.d/ssl.conf」を編集します
    # vi /etc/httpd/conf.d/ssl.conf#112行目 httpsdの使用する公開鍵の場所(デフォルト値)SSLCertificateFile /etc/pki/tls/certs/localhost.crt#119行目 httpsd の使用する秘密鍵の場所(デフォルト値)SSLCertificateKeyFile /etc/pki/tls/private/localhost.key#134行目 中間証明書の場所を指定します。利用するCAによっては設定が必要になります。#        今回はCAを利用せず、自己証明書を利用するため設定しません。#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt#225行目 ログの出力形式CustomLog logs/ssl_access_log combined
↑

秘密鍵と証明書の作成

秘密鍵「localhost.key」と自己署名証明書「localhost.crt」を作成します。

  • 自己署名証明書は商用サービスなどの第三者がアクセスする環境で利用しないで下さい。
  • 第三者がアクセスする場合は、CAから発行された証明書を利用して下さい。


  • カレントディレクトリを変更します。
    # cd /etc/pki/tls

  • 秘密鍵を生成します。
    # openssl genrsa -des3 2048 -rand /var/log/ > private/localhost.key
    「Enter PEM pass phrase:」と表示されるので、パスフレーズを入力すると暗号化のための秘密鍵(localhost.key)が生成されます。

  • 秘密鍵からパスフレーズを削除します。
    「Enter pass phrase for private/localhost.key:」と表示されるので、先ほどのパスフレーズを入力します。
    # openssl rsa -in private/localhost.key -out private/localhost.keyEnter pass phrase for private/localhost.key:writing RSA key

  • 生成された秘密鍵を使って自己署名証明書を発行します(Common NameはURLでのホスト名を入力)
    # openssl req -new -x509 -key private/localhost.key \-out certs/localhost.crt -days 3650-----Country Name (2 letter code) [AU]:JPState or Province Name (full name) [Some-State]:Locality Name (eg, city) []:Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (eg, YOUR name) []:www.oss-d.netEmail Address []:
↑

PHPの設定

↑

php.iniの編集

  • php.iniでPHPの設定を行います。セキュリティ関連と文字コードの設定が中心です。
    尚、文字コードはUTF-8のスクリプトをUTF-8表示する設定です。(文字コード設定については こちら )
    # vi /etc/php.ini;; 出力バッファリングを無効とする;; ファイルエンコードとブラウザへ出力するエンコードが異なる場合はonにします。output_buffering = Off;; httpヘッダでPHPに関する情報を出力しないexpose_php = Off;; ブラウザにエラーを表示しない(デフォルト)display_errors = Off;;  エラーログを記録するlog_errors = On;;  エラーログの記録先error_log = syslog;; 変数(Environment, GET, POST, Cookie, Server)をグローバル変数に登録しない(デフォルト)register_globals = Off ;; $HTTP_*_VARS のような古い長い 定義済みの変数 を登録しない(デフォルト)register_long_arrays = Off;; GET,POST,COOKIEの値を自動的にエスケープしない(デフォルト)magic_quotes_gpc = Off;; デフォルトの文字コードを指定default_charset = “UTF-8″;; 動的モジュールのロードしない(デフォルト)enable_dl = Off;; 外部ファイルを読み込まないallow_url_fopen = Off;;  外部のPHPを読み込まない(デフォルト)allow_url_include = Off;; セッションの処理を Cookie のみに限定 (デフォルト)session.use_only_cookies = 1;; セッションIDにMD5(128bit)でなくSHA-1(160bit)を利用する。session.hash_function = 1;; デフォルトの内部エンコーディングを設定mbstring.language = Japanese;; デフォルトの内部エンコーディングを設定mbstring.internal_encoding = UTF-8;; デフォルトのHTTP入力文字エンコーディングを設定mbstring.http_input = auto;; デフォルトのHTTP出力文字エンコーディングを設定mbstring.http_output = UTF-8;; HTTP入力エンコーディング変換を有効にするmbstring.encoding_translation = On;; デフォルトの文字エンコーディング検出順序を設定mbstring.detect_order = auto;; 代替文字のデフォルト値を設定mbstring.substitute_character = none;
↑

起動設定

↑

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig  httpd on
↑

起動

  • apacheを起動します。
    # /etc/init.d/httpd start


  • psコマンドでプロセスの確認します。/usr/sbin/httpdがあれば問題ありません。
    # ps ax|grep http 1747 ?        S      0:00 /usr/sbin/httpd 1900 ?        S      0:00 /usr/sbin/httpd 1923 ?        Ss     0:00 /usr/sbin/httpd
↑

ファイアウォールの設定

  • WANから接続可能にするにはファイアウォールを下記のように変更します。
    # vi /etc/sysconfig/iptables*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]           :        (省略)           :-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#http,httpsの通信を許可 ■次の2行を追加-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT-A RH-Firewall-1-INPUT -j LOG --log-level info --log-prefix "[iptables] "-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibitedCOMMIT
↑

動作確認

↑

PHPの動作確認

  • 動作確認用のphpスクリプトを用意します。
    # echo "" >/var/www/html/index.php

  • ブラウザで以下にアクセスします。
    http://www.oss-d.net
    • www.oss-d.netの部分は、環境に合わせて変更して下さい。


  • 下記ページが表示されればPHPが動作しています。
    phpinfo.jpg
このエントリーをはてなブックマークに追加
Last-modified: 2011-05-12 (木) 03:12:53   最終更新のRSS