ページ「メインページ」と「Apache 2.2.21」の間の差分

提供:あべたけの覚書
(ページ間の差分)
ナビゲーションに移動 検索に移動
編集の要約なし
 
(ページの作成:「==準備== <ul> <li>[https://httpd.apache.org/ Apache HTTP Server] </li> <li>[http://www.apache.org/ Apacheソフトウェア財団] </li> </ul> <br> ==インストール== <ol> <li>ソースの取得<br> <syntaxhighlight lang="bash"> [root@XXXXX ~]# wget -P /usr/local/src http://www.ring.gr.jp/archives/net/apache/httpd/httpd-2.2.21.tar.gz </syntaxhighlight> /usr/local/srcにhttpd-2.2.21.tar.gzを取得。 <br><br> </li> <li>ソースの解凍<br> <syntaxhighlight l…」)
 
1行目: 1行目:
{{DISPLAYTITLE:<span style="display: none">{{FULLPAGENAME}}</span>}}
==準備==
<ul>
<li>[https://httpd.apache.org/ Apache HTTP Server]
</li>
<li>[http://www.apache.org/ Apacheソフトウェア財団]
</li>
</ul>
<br>
==インストール==
<ol>
<li>ソースの取得<br>
<syntaxhighlight lang="bash">
[root@XXXXX ~]# wget -P /usr/local/src http://www.ring.gr.jp/archives/net/apache/httpd/httpd-2.2.21.tar.gz
</syntaxhighlight>
/usr/local/srcにhttpd-2.2.21.tar.gzを取得。
<br><br>
</li>
<li>ソースの解凍<br>
<syntaxhighlight lang="bash">
[root@XXXXX ~]# cd /usr/local/src
[root@XXXXX ~]# tar zxvf httpd-2.2.21.tar.gz
</syntaxhighlight>
/usr/local/srcにhttpd-2.2.21フォルダが作成される。
<br><br>
</li>
<li>APR(Apache Portable Runtime)のインストール
<ol type="i">
<li>apr(1.4.5)<br>
([[apr-1.4.5のconfigureヘルプ|configureのヘルプ]])
<syntaxhighlight lang="bash">
[root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr
[root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr
[root@XXXXX ~]# make
[root@XXXXX ~]# make install
</syntaxhighlight>
<br>
</li>
<li>apr-util(1.3.12)<br>
([[apr-util-1.3.12のconfigureヘルプ|configureのヘルプ]])
<syntaxhighlight lang="bash">
[root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr-util
[root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr-util --with-apr=/usr/local/httpd-2.2.21/apr
[root@XXXXX ~]# make
[root@XXXXX ~]# make install
</syntaxhighlight>
<br>
</li>
</ol>
<li>コンパイル設定<br>
([[Apache 2.2.21のconfigureヘルプ|configureのヘルプ]])
<syntaxhighlight lang="bash">
[root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21
[root@XXXXX ~]# ./configure \
> --prefix=/usr/local/httpd-2.2.21 \
> --enable-so \
> --enable-rewrite=shared \
> --enable-dav=shared \
> --enable-dav-fs=shared \
> --enable-dav-lock=shared \
> --enable-ssl=shared \
> --with-ssl=/usr/local/ssl/ \
> --with-apr=/usr/local/httpd-2.2.21/apr \
> --with-apr-util=/usr/local/httpd-2.2.21/apr-util
</syntaxhighlight>
<br>
</li>
<li>インストール
<syntaxhighlight lang="bash">
[root@XXXXX ~]# make
[root@XXXXX ~]# make install
</syntaxhighlight>
<br>
</li>
<li>シンボリックリンクの作成
<syntaxhighlight lang="bash">
[root@XXXXX ~]# ln -s /usr/local/httpd-2.2.21 /usr/local/apache2
</syntaxhighlight>
<br>
</li>
</ol>


{| style="width:100%; margin-bottom:2px;"
==初期設定==
| class="globegris" style="background-repeat:no-repeat; background-position:-40px -15px; width:100%; border:1px solid #a7d7f9; vertical-align:top; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius:10px;" |
{|  style="width:100%; margin-bottom:2px; vertical-align:top; font-size:100%; background:transparent;"
|-
|
| style="height:3em; padding-left:155px" | <div style="font-size:170%; line-height:1.05em;"><span style="white-space:nowrap;">あべたけの覚え書き
| style="padding:1em; text-align:right; " | <br><span style="white-space:nowrap;">[[Help:記事とは何か|記事]]数:'''[[Special:Statistics|{{NUMBEROFARTICLES}}]]'''</span>
|}
|}


<br/>
====apacheユーザーの作成====
<br/>
apache専用のユーザーを作成する。ユーザー名はapache。
<br/>
<syntaxhighlight lang="bash">
'''個人的なメモ帳ページです。'''
[root@XXXXX ~]# groupadd apache
<br/>
[root@XXXXX ~]# useradd -g apache apache
<br/>
</syntaxhighlight>
細かいところの解説は他に任せ、とりあえず動くようにするのが目的なので<br/>
<br>
参照の際にはくれぐれも<u style="color: red">'''自己責任で'''</u>お願いします。


====httpd.confの設定====
<syntaxhighlight lang="bash">
[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf
</syntaxhighlight>
<br>
<ul>
<li>ユーザーとグループの変更
<syntaxhighlight lang="bash">
User daemon
Group daemon
User apache
Group apache
</syntaxhighlight>
<br>
</li>
<li>サーバー名の設定
<syntaxhighlight lang="bash">
ServerName www.example.com:80
ServerName XXXXXXXXXXX:80
</syntaxhighlight>
<br>
</li>
</ul>


==起動==
下記のコマンドで起動、停止、再起動を行う
<syntaxhighlight lang="bash">
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl start    ← 起動
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl stop    ← 停止
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl restart  ← 再起動
</syntaxhighlight>
<br>
==動作確認==
http,httpsでそれぞれアクセスし「It works!」が表示されればOK。
<br>
==自動起動設定==
<ol>
<li>起動スクリプトのコピー
<syntaxhighlight lang="bash">
[root@XXXXX ~]# cp /usr/local/src/httpd-2.2.21/build/rpm/httpd.init /etc/rc.d/init.d/httpd
</syntaxhighlight>
<br>
</li>
<li>起動スクリプトの編集
<syntaxhighlight lang="bash">
[root@XXXXX ~]# vi /etc/rc.d/init.d/httpd
</syntaxhighlight>
<br>
パスの変更
<syntaxhighlight lang="vim">
httpd=${HTTPD-/usr/sbin/httpd}
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
</syntaxhighlight>
<br>
(~check13()の中~)
<syntaxhighlight lang="vim">
CONFFILE=/etc/httpd/conf/httpd.conf
CONFFILE=/usr/local/apache2/conf/httpd.conf
</syntaxhighlight>
<br>
</li>
<li>実行権限を与えて自動起動設定
<syntaxhighlight lang="bash">
[root@XXXXX ~]# chmod 755 /etc/rc.d/init.d/httpd
[root@XXXXX ~]# chkconfig --add httpd
[root@XXXXX ~]# chkconfig httpd on
[root@XXXXX ~]# chkconfig --list httpd
httpd          0:off  1:off  2:on    3:on    4:on    5:on    6:off
</syntaxhighlight>
<br>
</li>
</ol>
<br>


==他==
====STOPに失敗する====
上記の手順でインストールするとhttpdスクリプトでstopさせる時に失敗してしまう。
<syntaxhighlight lang="bash">
[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [失敗]
</syntaxhighlight>
pidファイルの位置が違っているのが原因みたい。
<syntaxhighlight lang="bash">
[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]


[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/messagebus.pid
/var/run/haldaemon.pid
/usr/local/httpd-2.2.21/logs/httpd.pid    ← ここにpidファイルが作成されている
</syntaxhighlight>
httpd起動スクリプトでは、
<syntaxhighlight lang="vim">
pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}
</syntaxhighlight>
と記述されている。<br>
[http://httpd.apache.org/docs/2.2/ Apache HTTP サーバ バージョン 2.2 ドキュメント]によるとpid作成先を設定するディレクティブは'''PidFile'''でデフォルトは'''logs/httpd.pid'''になるみたい。<br>
httpd.confには記述が無いので追加する。
<syntaxhighlight lang="bash">
[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf


PidFile /var/run/httpd.pid                      ← ServerRootの次ぐらいの行に追加
</syntaxhighlight>
httpd起動スクリプトも修正する。
<syntaxhighlight lang="bash">
[root@XXXXX ~]# vi /etc/rc.d/init.d/httpd
</syntaxhighlight>
<syntaxhighlight lang="vim">
# pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}  ← コメントアウト
pidfile=${PIDFILE-/var/run/httpd.pid}          ← 追加
</syntaxhighlight>
テスト
<syntaxhighlight lang="bash">
[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/httpd.pid  ←
/var/run/messagebus.pid
/var/run/haldaemon.pid


[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [  OK  ]
</syntaxhighlight>
<br>


====STOPに失敗する その2====
conf/extra/httpd-mpm.confにPidFileディレクティブの記述があるがソースからコンパイルするとhttpd.confでextra/httpd-mpm.confがincludeされない(?)ようである。httpd-mpm.confでPidFileのパスを修正し、httpd.confでextra/httpd-mpm.confをincludeさせてもOKかと。
<syntaxhighlight lang="bash">
[root@XXXXX ~]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
</syntaxhighlight>
<syntaxhighlight lang="vim">
#PidFile "logs/httpd.pid"
PidFile "/var/run/httpd.pid"


 
#LockFile "logs/httpd/accept.lock"
 
 
LockFile "/var/lock/subsys/httpd"
 
</syntaxhighlight>
ウィキソフトウェアの使い方に関する情報は[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 利用者案内]を参照してください。
<syntaxhighlight lang="bash">
 
[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf
== はじめましょう ==
</syntaxhighlight>
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings/ja 設定の一覧]
<syntaxhighlight lang="vim">
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/ja MediaWiki よくある質問]
# Server-pool management (MPM specific)
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki リリース情報メーリングリスト]
#Include conf/extra/httpd-mpm.conf
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation/ja MediaWiki をご使用の言語へ翻訳]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam ご使用のウィキでスパムと戦う方法を学ぶ]
Include conf/extra/httpd-mpm.conf        ← コメント外す
</syntaxhighlight>
httpd起動スクリプトの修正は同じ。

2023年5月11日 (木) 09:27時点における最新版

準備


インストール

  1. ソースの取得
    [root@XXXXX ~]# wget -P /usr/local/src http://www.ring.gr.jp/archives/net/apache/httpd/httpd-2.2.21.tar.gz

    /usr/local/srcにhttpd-2.2.21.tar.gzを取得。

  2. ソースの解凍
    [root@XXXXX ~]# cd /usr/local/src
    [root@XXXXX ~]# tar zxvf httpd-2.2.21.tar.gz

    /usr/local/srcにhttpd-2.2.21フォルダが作成される。

  3. APR(Apache Portable Runtime)のインストール
    1. apr(1.4.5)
      configureのヘルプ
      [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr
      [root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr
      [root@XXXXX ~]# make
      [root@XXXXX ~]# make install


    2. apr-util(1.3.12)
      configureのヘルプ
      [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr-util
      [root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr-util --with-apr=/usr/local/httpd-2.2.21/apr
      [root@XXXXX ~]# make
      [root@XXXXX ~]# make install


  4. コンパイル設定
    configureのヘルプ
    [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21
    [root@XXXXX ~]# ./configure \
    > --prefix=/usr/local/httpd-2.2.21 \
    > --enable-so \
    > --enable-rewrite=shared \
    > --enable-dav=shared \
    > --enable-dav-fs=shared \
    > --enable-dav-lock=shared \
    > --enable-ssl=shared \
    > --with-ssl=/usr/local/ssl/ \
    > --with-apr=/usr/local/httpd-2.2.21/apr \
    > --with-apr-util=/usr/local/httpd-2.2.21/apr-util


  5. インストール
    [root@XXXXX ~]# make
    [root@XXXXX ~]# make install


  6. シンボリックリンクの作成
    [root@XXXXX ~]# ln -s /usr/local/httpd-2.2.21 /usr/local/apache2


初期設定

apacheユーザーの作成

apache専用のユーザーを作成する。ユーザー名はapache。

[root@XXXXX ~]# groupadd apache
[root@XXXXX ~]# useradd -g apache apache


httpd.confの設定

[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf


  • ユーザーとグループの変更
    User daemon
    Group daemon
    ↓
    User apache
    Group apache


  • サーバー名の設定
    ServerName www.example.com:80
    ↓
    ServerName XXXXXXXXXXX:80


起動

下記のコマンドで起動、停止、再起動を行う

[root@XXXXX ~]# /usr/local/apache2/bin/apachectl start    ← 起動
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl stop     ← 停止
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl restart  ← 再起動


動作確認

http,httpsでそれぞれアクセスし「It works!」が表示されればOK。

自動起動設定

  1. 起動スクリプトのコピー
    [root@XXXXX ~]# cp /usr/local/src/httpd-2.2.21/build/rpm/httpd.init /etc/rc.d/init.d/httpd


  2. 起動スクリプトの編集
    [root@XXXXX ~]# vi /etc/rc.d/init.d/httpd


    パスの変更

    httpd=${HTTPD-/usr/sbin/httpd}
    ↓
    httpd=${HTTPD-/usr/local/apache2/bin/httpd}


    (~check13()の中~)

    CONFFILE=/etc/httpd/conf/httpd.conf
    ↓
    CONFFILE=/usr/local/apache2/conf/httpd.conf


  3. 実行権限を与えて自動起動設定
    [root@XXXXX ~]# chmod 755 /etc/rc.d/init.d/httpd
    [root@XXXXX ~]# chkconfig --add httpd
    [root@XXXXX ~]# chkconfig httpd on
    [root@XXXXX ~]# chkconfig --list httpd
    httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off



STOPに失敗する

上記の手順でインストールするとhttpdスクリプトでstopさせる時に失敗してしまう。

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [失敗]

pidファイルの位置が違っているのが原因みたい。

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]

[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/messagebus.pid
/var/run/haldaemon.pid
/usr/local/httpd-2.2.21/logs/httpd.pid    ← ここにpidファイルが作成されている

httpd起動スクリプトでは、

pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}

と記述されている。
Apache HTTP サーバ バージョン 2.2 ドキュメントによるとpid作成先を設定するディレクティブはPidFileでデフォルトはlogs/httpd.pidになるみたい。
httpd.confには記述が無いので追加する。

[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf

PidFile /var/run/httpd.pid                      ← ServerRootの次ぐらいの行に追加

httpd起動スクリプトも修正する。

[root@XXXXX ~]# vi /etc/rc.d/init.d/httpd
# pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}  ← コメントアウト
pidfile=${PIDFILE-/var/run/httpd.pid}           ← 追加

テスト

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/httpd.pid   ←
/var/run/messagebus.pid
/var/run/haldaemon.pid

[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [  OK  ]


STOPに失敗する その2

conf/extra/httpd-mpm.confにPidFileディレクティブの記述があるがソースからコンパイルするとhttpd.confでextra/httpd-mpm.confがincludeされない(?)ようである。httpd-mpm.confでPidFileのパスを修正し、httpd.confでextra/httpd-mpm.confをincludeさせてもOKかと。

[root@XXXXX ~]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
#PidFile "logs/httpd.pid"
↓
PidFile "/var/run/httpd.pid"

#LockFile "logs/httpd/accept.lock"
↓
LockFile "/var/lock/subsys/httpd"
[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf
# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf
↓
Include conf/extra/httpd-mpm.conf        ← コメント外す

httpd起動スクリプトの修正は同じ。