○ httpd/phpのインストール

・WEBサーバを構築します
・httpd-2.2.20をソースからインストールし、設定します
・php-5.3.8をソースからインストールし、設定します
・charsetはhttpd、php共にUTF-8で運営します
・suexecオプションを有効にしています
・運営・管理は各自の考えを元にお願いします
・make はメンテナンスマシンで行っています

PHP 5.2.x から PHP 5.3.x への移行を参照してください

・新規インストールした openssl を使います
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:httpd-2.2.20.tar.bz2 (http://httpd.apache.org/)
:php-5.3.8.tar.bz2 (http://www.php.net/)
:re2c-0.13.5-1.src.rpm  (http://sourceforge.net/projects/re2c/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 5.6
:selinux disabled or permissive
:インストール先  httpd: /usr/local/apache2  /home/www
:  php: /usr/local/lib /usr/local/include
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスは一般ユーザから行います

○仮設定
:User apache
:Group apache
:DocumentRoot  /home/www/htdocs
:管理ユーザ sola



○httpd-2.2.20

○httpdユーザ (apache) を登録します

uid/gid情報を参照
・/home/wwwディレクトリを作ります

[root@jupiter:~]
# useradd -M -u 48 -d /home/www -s /sbin/nologin apache
# mkdir -p /home/www/myhome/{cgi-bin,linux,hobby,archi}
# chown -R apache:apache /home/www

○ソースの展開・インストール

・configureオプションで指定がない場合、preforkモードでインストールされます
・OSの指定がない場合、config.layoutの<Layout Apache>を読み込みます
・オプションの設定を間違えないようにスクリプトを作り、configureを実行します
・既存のファイルがある場合、DSO関連ファイルがコンパイルされない場合があります
・既存のコンフィグファイルは上書きされない場合があります
・完全コンパイルする場合は、バックアップして再構築します
・必要なファイルをバックアップからコピーします

[root@jupiter:~]
# service httpd stop
# mv /etc/httpd /etc/httpd2218
# mv /usr/local/apache2 /usr/local/apache2218
# cd /usr/src
[root@jupiter:/usr/src]
# tar jxvf httpd-2.2.20.tar.bz2
# chown -R root:root httpd-2.2.20
# cd httpd-2.2.20
[root@jupiter:/usr/src/httpd-2.2.20]

・config.layoutを一部修正します (下記)

# vi config.layout

・コンフィグシェルスクリプトの実行
・同じディレクトリで実行します
httpd22cfg.sh (詳細別記)

# source httpd22cfg.sh
# make
# make install

・起動ファイルなどのコピー

# cp build/rpm/httpd.init /etc/init.d/httpd
# cp build/rpm/httpd.logrotate /etc/logrotate.d/httpd
# cd /usr/src
[root@jupiter:/usr/src]
# tar jcvf httpd-2.2.20-110901.tar.bz2 httpd-2.2.20/

:config.layout

・OSの再インストールに備えてdatadirを/home/wwwに移します
・installbuilddirをprefix指定のディレクトリに移します

<Layout Apache>
    prefix:        /usr/local/apache2
    exec_prefix:   ${prefix}
    bindir:        ${exec_prefix}/bin
    sbindir:       ${exec_prefix}/bin
    libdir:        ${exec_prefix}/lib
    libexecdir:    ${exec_prefix}/modules
    mandir:        ${prefix}/man
    sysconfdir:    /etc/httpd/conf
    datadir:       /home/www
    installbuilddir: ${prefix}/build
    errordir:      ${datadir}/error
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${datadir}/htdocs
    manualdir:     ${datadir}/manual
    cgidir:        ${datadir}/cgi-bin
    includedir:    ${prefix}/include
    localstatedir: /var
    runtimedir:    ${localstatedir}/run
    logfiledir:    ${localstatedir}/log/httpd
    proxycachedir: ${localstatedir}/cache/httpd
</Layout>

○シンボリックリンクの作成

・静的リンクされたrewriteモデュールでlogの絶対パス指定ができない
・ServerRootの設定を基準にするようなのでシンボリックリンクをつくります
・httpd.confでは、RewriteLog "logs/rewrite_log" のように設定します

# cd /usr/local/apache2
[root@jupiter:/usr/local/apache2]
# ln -s /var/log/httpd logs



○php-5.3.8

○re2cのインストール

・phpのconfigureで警告がでるので念の為入れておく

# cd /usr/src
[root@jupiter:/usr/src]
# mkdir re2c
# rpm -ivh re2c-0.13.5-1.src.rpm
# cd redhat/SPECS
[root@jupiter:/usr/src/redhat/SPECS]

# vi re2c.spec

・specファイルの修正
 release: 1.C56

# rpmbuild -bb --clean --rmsource re2c.spec
# mv re2c.spec /usr/src/re2c
# cd /usr/src/redhat/RPMS/i386
[root@jupiter:/usr/src/redhat/RPMS/i386]

・作成されたパッケージ
 re2c-0.13.5-1.C56.i386.rpm

# rm *debuginfo*
# mv *.rpm /usr/src/re2c

・インストール

# cd /usr/src/re2c
[root@jupiter:/usr/src/re2c]
# rpm -Uvh re2c-0.13.5-1.C56.i386.rpm

○ソースの展開・インストール

・オプションの設定を間違えないようにスクリプトを作り、configureを実行します
・上書きインストールの場合、httpd.confに再度書き込まれるので修正します

# cd /usr/src
[root@jupiter:/usr/src]
# tar jxvf php-5.3.8.tar.bz2
# chown -R root:root php-5.3.8
# cd php-5.3.8
[root@jupiter:/usr/src/php-5.3.8]
# make distclean

・コンフィグシェルスクリプトの実行
・同じディレクトリで実行します
php5cfg.sh (詳細別記)

# source php5cfg.sh
# make
# make test
# make install

・ファイルをコピーします

# cp php.ini-production /etc/php.ini

・ディレクトリ・ログファイルの作成

# mkdir /etc/php.d
# touch /var/log/httpd/php_log
# chown apache:apache /var/log/httpd/php_log
# cd /usr/src
[root@jupiter:/usr/src]
# tar jcvf php-5.3.8-110901.tar.bz2 php-5.3.8/



○configファイルの設定

○httpd.conf

/étc/httpd/conf/httpd.conf
/étc/httpd/conf/extra/httpd-mpm.conf
/étc/httpd/conf/extra/httpd-default.conf
/étc/httpd/conf/extra/httpd-info.conf
/étc/httpd/conf/extra/httpd-personal.conf

○php.ini

/étc/php.ini

○/home/wwwのユーザ・グループ・アクセス権を変更

# cd ~
[root@jupiter:~]
# chown -R apache:apache /home/www
# find /home/www -type f | xargs chmod g-w,o-rwx
# find /home/www -type d | xargs chmod g-rw,o-rw

○httpd起動スクリプトの修正

/étc/rc.d/init.d/httpd (詳細別記)

○selinuxヘの対応 (selinuxが有効の場合)

・新規インストールファイルのselinuxラベルを修正

[root@jupiter:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -FRv /home/www
# restorecon -Rv /var

○自動起動登録をonにし、httpdを起動します

[root@jupiter:~]
# chkconfig --add httpd

・startする前にhttpd.confのチェックしておきます

# service httpd configtest
# service httpd start

○iptablesの設定

Netfilter (iptables) で制御している場合、ポートを開けてください

Netfilter (iptables) の設定参照

・外へのポートは公開するときに開けます

○apacheの起動確認

・2ndマシンからサーバにアクセスします
 URL http://192.168.0.21:80

○phpの起動確認

・test.phpを作りドキュメントルートに置いて実行します

<?php phpinfo(); ?>

○ Copyright(c) 528p.com All Rights Reserved.