apache2.2 + php5.3_rpm +
はじめに +
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.key Enter 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]:JP State 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.net Email Address []:
PHPの設定 +
php.iniの編集 +
- php.iniでPHPの設定を行います。セキュリティ関連と文字コードの設定がほとんどです。
尚、文字コードはUTF-8のスクリプトをUTF-8表示する設定です。(文字コード設定についてはこちら)# vi /etc/php.ini ;; 出力のバッファリングを無効とする output_buffering = Off ;; HTTP charsetヘッダを設定 default_charset = "UTF-8" ;; 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-prohibited COMMIT
動作確認 +
PHPの動作確認 +
- 動作確認用のphpスクリプトを用意します。
# echo "<?php phpinfo(); ?>" >/var/www/html/index.php
- ブラウザで以下にアクセスします。
http://www.oss-d.net
- www.oss-d.netの部分は、環境に合わせて変更して下さい。
- www.oss-d.netの部分は、環境に合わせて変更して下さい。
- 下記ページが表示されればPHPが動作しています。
