○ httpd-2.2/php-5.4のインストール

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

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

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

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

○関連サイト

:httpd-2.2.31.tar.bz2 (http://httpd.apache.org/)
:php-5.4.45.tar.bz2 (http://www.php.net/)
:re2c-0.14.3.tar.gz  (http://sourceforge.net/projects/re2c/)

○参照ファイル

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

○インストール環境

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

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

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



○httpd-2.2.31

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

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

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

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

・configureオプションで指定がない場合、preforkモードでインストールされます
・OSの指定がない場合、config.layoutの<Layout Apache>を読み込みます
・オプションの設定を間違えないようにスクリプトを作り、configureを実行します

# cd ~/src
[root@jupiter:~/src]
# tar jxvf httpd-2.2.31.tar.bz2
# chown -R root:root httpd-2.2.31
# cd httpd-2.2.31
[root@jupiter:~/src/httpd-2.2.31]

・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 ~/src
[root@jupiter:~/src]
# tar jcvf httpd-2.2.31-150812.tar.bz2 httpd-2.2.31/

○アップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・設定ファイル(旧)を保存します

# cp -a /etc/httpd ~/src/httpd2229

・アップデート

# cd ~/src/httpd-2.2.31
[root@jupiter:~/src/httpd-2.2.31]
# make install

・新旧の設定ファイルの差分を取り、必要があれば設定ファイルを修正します
・(アップデートではoriginal部分のみ修正されます)

# cd ~/src
[root@jupiter:~/src]
# cp -a /etc/httpd httpd2231
# diff -urp httpd2229 httpd2231

・設定ファイルを検査し、再起動します

# service httpd configtest
# service httpd restart

: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.4.45

○re2cのインストール

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

# cd ~/src
[root@jupiter:~/src]
# mkdir re2c
# tar zxf re2c-0.14.3.tar.gz
# cp re2c-0.14.3.tar.gz ~/rpmbuild/SOURCES
# cp re2c-0.14.3/re2c.spec ~/rpmbuild/SPECS
# rm -rf re2c-0.14.2
# cd ~/rpmbuild/SPECS
[root@jupiter:~/rpmbuild/SPECS]
# chown root:root re2c.spec

# vi re2c.spec

・specファイルの修正
 release: 1%{dist}

# rpmbuild -ba --clean --rmsource --define 'dist .C67' re2c.spec
# mv re2c.spec ~/src/re2c
# cd ../RPMS/i686
[root@jupiter:~/rpmbuild/RPMS/i686]

・作成されたパッケージ
 re2c-0.14.2-1.C67.i686.rpm

# rm *debuginfo*
# mv *.rpm ~/src/re2c
# cd ../../SRPMS
[root@jupiter:~/rpmbuild/SRPMS]

・作成されたパッケージ
 re2c-0.14.3-1.C67.src.rpm

# mv *.rpm ~/src/re2c

・インストール

# cd ~/src/re2c
[root@jupiter:~/src/re2c]
# rpm -Uvh re2c-0.14.3-1.C67.i686.rpm

・または

# yum localinstall re2c-0.14.3-1.C67.i686.rpm

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

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

# cd ~/src
[root@jupiter:~/src]
# tar jxvf php-5.4.45.tar.bz2
# chown -R root:root php-5.4.45
# cd php-5.4.45
[root@jupiter:~/src/php-5.4.45]
# 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

・デフォルト設定ファイルを保存しておきます

# mkdir ~/src/php5445
# cp -a {php.ini-development,php.ini-production} ~/src/php5445

# cd ~/src
[root@jupiter:~/src]
# tar jcvf php-5.4.45-150905.tar.bz2 php-5.4.45/

○アップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・testの実行の前に、既存のphp.iniファイルがあるなら、リネームしておく

# mv /etc/php.ini /etc/php.ini.bak

・テスト&アップデート

# cd ~/src/php-5.4.45
[root@jupiter:~/src/php-5.4.45]
# make test
# make install

・新旧のデフォルト設定ファイルの差分を取り、必要があれば設定ファイルを修正します

# mkdir ~/src/php5445
# cp -a {php.ini-development,php.ini-production} ~/src/php5445
# cd ~/src
[root@jupiter:~/src]
# diff -urp php5444 php5445

・httpdの再起動

# mv /etc/php.ini.bak /etc/php.ini
# service httpd configtest
# service httpd restart



○configファイルの設定

○httpd.conf

/etc/httpd/conf/httpd.conf
/etc/httpd/conf/extra/httpd-mpm.conf
/etc/httpd/conf/extra/httpd-default.conf
/etc/httpd/conf/extra/httpd-info.conf
/etc/httpd/conf/extra/httpd-personal.conf

○php.ini

/etc/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起動スクリプトの修正

・省略

#
# httpd        Startup script for the Apache Web Server
#
# chkconfig: 235 85 15
# description: The Apache HTTP Server is an efficient and extensible  \
#             server implementing the current HTTP standards.
# processname: httpd

・省略

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

httpd=${HTTPD-/usr/local/apache2/bin/httpd}
pidfile=${PIDFILE-/var/run/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0

・省略


○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.