2011年10月5日水曜日

apache 2.2.21のインストール

テスト環境でapacheをバージョンアップする。

apache 2.2.21のRPMを作ってみた。
ほぼ、ここの通り。

1,最新版のtar.gzをダウンロード
# wget http://archive.apache.org/dist/httpd/httpd-2.2.21.tar.gz

2,SPECファイルを移動。
SPECファイル : /usr/src/redhat/SPECS/ に移動。
tar.gzファイル : /usr/src/redhat/SOURCES/ に移動。

3,必要なパッケージのアップデート
# yum -y install apr-devel apr-util-devel openldap-devel db4-devel \
expat-devel pcre-devel openssl-devel rpm-build distcache-devel libtool

4,SPECファイルの編集
arpやarp-util等のバージョンをインストールされている
バージョンに書き換える。
# rpm -qa | grep apr
apr : 1.3.12
apr-util : 1.3.9
apr-devel : 1.3.12
apr-util : 1.3.9

sedコマンド


5,rpmbuildの実行
rpmbuild -bb /usr/src/redhat/SPECS/httpd.spec

※rootでやったら,/root/rpm/~ってとこ見に行ったので、
パンピーでやった。
そしたら、BUILDとRPMSに書き込み権限が無いって言われたので、
chmod 777をやってしまった。

6,rpmのインストール
# sudo rpm -e mod_ssl
# sudo rpm -Uvh httpd-2.2.21-1.i386.rpm httpd-devel-2.2.21-1.i386.rpm httpd-manual-2.2.21-1.i386.rpm mod_ssl-2.2.21-1.i386.rpm

したら、「エラー:依存性の欠如:/usr/local/bin/perl は httpd-devel-2.2.21-1.i386に必要とされています」と出た。
/usr/local/bin/perl はあるけど。。
--nodeps(依存関係を無視して)をつけてインストール。いいのか?
rpmの使い方

7,バージョン確認
# httpd -v
上がってたw。

8,起動確認
# /etc/init.d/httpd start
失敗・・・。
※ モジュールが読み込めない。とりあえずコメントアウト。
mod_cache.so
mod_disk_cache.so
mod_file_cache.so
mod_mem_cache.so

# /etc/init.d/httpd start
失敗・・・。
※ 
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

[Sat Oct 01 03:36:45 2011] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.11.3 (check DNS) -- or specify an explicit ServerName

[Sat Oct 01 03:36:45 2011] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.11.3 (check DNS) -- or specify an explicit ServerName

[Sat Oct 01 03:36:45 2011] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.11.3 (check DNS) -- or specify an explicit ServerName

(98)Address already in use: make_sock: could not bind to address [::]:80

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80

no listening sockets available, shutting down
Unable to open logs


192.168.11.3が逆引き出来ないって言ってるのかな。。
192.168.11.3て成っている所を試しに、localhostに変えてみた。
これなら、/etc/hostsに記載されているが。。今度はこちら。。

[Sat Oct 01 03:44:54 2011] [error] VirtualHost localhost:0 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

いや。そこじゃない。
(98)Address already in use: make_sock: could not bind to address [::]:80

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80

no listening sockets available, shutting down
Unable to open logs
ここだ。

# netstat -lanput

確かに,ポート80番がListenしたままに成っている。。
httpd止めずにやったのが悪かったのかな。

ポート80番を使っているプロセスを特定
ここ
# fuser -n tcp 80
80/tcp: 5392 5393 5394 5395 5396 5397 5398 5399 14883

全部殺してみた。
なんかすぐ復活するんだけど。。
root 14883 0.0 1.8 31020 13936 ? Ss Sep19 0:00 /usr/sbin/httpd
先にこいつを殺したら全員消せた。
親プロセスが子を復活させてたのか。

改めて、httpd start.
いけた!

※ その後、なぜかhttpd stopが失敗する現象を確認。
親プロセス殺したらいいんだけど。。
なんで、httpdから殺せないんだろう。


本番環境でapacheをバージョンアップする。

更に本番環境でやろうとしたら、
arpのバージョンが異なるようで、
面倒だけど、本番でrpmを作りなおすことにした。
その際、distcacheが無い的なことを言われた。
yumにもない。。
ここにも書いてある。

configureしたら、
「configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details.」って言われた。

調べたら、こんなのあった。
みんなこういうの、どうやって気がつくんだろう。。

さらに、configureはうまく言ったが、makeがうまくいかない。
「proto_fd.c:162: error: 'LONG_MIN' undeclared (first use in this function)
proto_fd.c:162: error: (Each undeclared identifier is reported only once
proto_fd.c:162: error: for each function it appears in.)
proto_fd.c:162: error: 'LONG_MAX' undeclared (first use in this function)」
って言われた。

ここにある
だから、なんでこんな事が分かるんだ?。make通った。
chkinstallでrpm作成。
distcacheをインストール。
# rpm -ivh distcache-1.5.1-1.x86_64
したら、
「installing package distcache-1.5.1-1.x86_64 needs 4KB on the /selinux filesystem」って出た。。

/selinux に4KB以上の容量必要。
ないの?
# du -h /selinux
ゼロ!!

selinux無効にしてるからかな。
# setenforce 1
# getenforce
 Enforcing
でやってみたけどだめだった。
戻す。
# setenforce 0

調べてみるとどうやら、checkinstallrcに以下を追加する。
EXCLUDE="/selinux" もしくはオプションをつける「--exclude=/selinux」 と
できるようになるらしい。

ここ、とかこことか。
特に2つ目の人は、ちゃんと自分で内容を理解しようと勤めている。

distcacheをインストールできた!


やっと、httpのインストール。
# rpm -Uvh httpd-2.2.21-1.x86_64.rpm httpd-devel-2.2.21-1.x86_64.rpm httpd-manual-2.2.21-1.x86_64.rpm mod_ssl-2.2.21-1.x86_64.rpm



ファイル /usr/share/man/man1/htdbm.1.gz (パッケージ httpd-2.2.21-1.x86_64 から) は、パッケージ httpd-tools-2.2.15-5.el6.centos.x86_64 からのファイルと競合しています。
ファイル /usr/share/man/man1/htdigest.1.gz (パッケージ httpd-2.2.21-1.x86_64 から) は、パッケージ httpd-tools-2.2.15-5.el6.centos.x86_64 からのファイルと競合しています。
ファイル /usr/share/man/man1/htpasswd.1.gz (パッケージ httpd-2.2.21-1.x86_64 から) は、パッケージ httpd-tools-2.2.15-5.el6.centos.x86_64 からのファイルと競合しています。

ふぅ。やになってきた。

manのページが、2-2-15では、httpd-tools-2.2.15からきているが、
2-2-21では(自分で入れたやり方では)、httpd-2.2.21-1.x85_64からきている模様。
manだしな。

httpd-tools-2.2.15を削除・・・。
いや、toolsにman以外も含まれているだろう。
探したらhttpd-tools-2.2.15のrpmあった。。
http-tools

# wget http://centos.alt.ru/repository/centos/6/x86_64/httpd-tools-2.2.21-2.el6.x86_64.rpm
# rpm -Uvh
   httpd-2.2.21-1.x86_64.rpm
   httpd-devel-2.2.21-1.x86_64.rpm
   httpd-manual-2.2.21-1.x86_64.rpm
   httpd-tools-2.2.21-2.el6.x86_64.rpm
   mod_ssl-2.2.21-1.x86_64.rpm



ファイル /usr/share/man/man1/htdbm.1.gz は httpd-tools-2.2.21-2.el6.x86_64 と httpd-2.2.21-1.x86_64 のインストールで競合しています。
ファイル /usr/share/man/man1/htdigest.1.gz は httpd-tools-2.2.21-2.el6.x86_64 と httpd-2.2.21-1.x86_64 のインストールで競合しています。
ファイル /usr/share/man/man1/htpasswd.1.gz は httpd-tools-2.2.21-2.el6.x86_64 と httpd-2.2.21-1.x86_64 のインストールで競合しています。

まぁそうでしょうね。
どうしますかね。。

依存関係を無視してインストール

# rpm -Uvh -–force -–nodepes (パッケージ)

やってみた。
--nodepesなんかしらないって言われた。

--forceだけでやってみた。
できた。

# httpd -v
Server version: Apache/2.2.21 (Unix)
Server built:   Oct  6 2011 18:06:22

お。

# /etc/init.d/httpd start
httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
                                                           [  OK  ]
おお。

Paymoで接続・・・、できた。

0 件のコメント:

コメントを投稿