linux-vserverのApacheが起動せず、ソケットを作成できません


8

stackexchangeにふさわしい適切な質問を書くための広範な調査とテスト中に、私は解決策を見つけました:libapr1ゲスト内でパッケージを再構築します。
それでも他の人に役立つので、私はこの情報を投稿したいと思いました。

問題

libapache2-mod-php5Wheezyゲスト内にインストールして起動しようとすると、次のようになります。

root@test01:~# /usr/sbin/apache2ctl start
[crit] (22)Invalid argument: alloc_listener: failed to get a socket for (null)
Syntax error on line 9 of /etc/apache2/ports.conf:
Listen setup failed
Action 'start' failed.
The Apache error log may have more information.
root@test01:~# tail /var/log/apache2/error.log
root@test01:~#
root@test01:~# head -n 9 /etc/apache2/ports.conf|tail -n 1
Listen 80

これは変更されていない初期のパッケージのインストールで、デフォルトでは起動できません。

私のテスト

公式ドキュメントによると、Listen 80は実際には問題ありません。それListen 127.0.0.1:80を私に変えると私に与えられます:

[crit] (22)Invalid argument: alloc_listener: failed to get a socket for 127.0.0.1
Syntax error on line 9 of /etc/apache2/ports.conf:
Listen setup failed
Action 'start' failed.

では、なぜApacheはソケットを取得できないのでしょうか?他のデーモン(つまり、他のWheezyインストールではnginx、同じインストールではポート25で待機するexim4)を問題なく実行しています。

環境

ホスト

2.6.26-2-vserver-amd64上のDebian Lenny

# vserver-info
Versions:
                   Kernel: 2.6.26-2-vserver-amd64
                   VS-API: 0x00020303
             util-vserver: 0.30.216-pre2772; Dec 13 2008, 04:56:19

Features:
                       CC: gcc, gcc (Debian 4.3.2-1) 4.3.2
                      CXX: g++, g++ (Debian 4.3.2-1) 4.3.2
                 CPPFLAGS: ''
                   CFLAGS: '-Wall -g  -O2 -std=c99 -Wall -pedantic -W -funit-at-a-time'
                 CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W -fmessage-length=0 -funit-at-a-time'
               build/host: x86_64-pc-linux-gnu/x86_64-pc-linux-gnu
             Use dietlibc: yes
       Build C++ programs: yes
       Build C99 programs: yes
           Available APIs: v13,net,v21,v22,v23,netv2
            ext2fs Source: e2fsprogs
    syscall(2) invocation: alternative
      vserver(2) syscall#: 236/glibc
               crypto api: beecrypt
   use library versioning: yes

Paths:
                   prefix: /usr
        sysconf-Directory: /etc
            cfg-Directory: /etc/vservers
         initrd-Directory: $(sysconfdir)/init.d
       pkgstate-Directory: /var/run/vservers
          vserver-Rootdir: /var/lib/vservers


Assumed 'SYSINFO' as no other option given; try '--help' for more information.

ゲスト

Debian Wheezy、で構築 vserver $VSERVER build -m debootstrap --hostname $VSERVER --netdev eth0 --context $CONTEXT --interface v$CONTEXT=x.y.z.$CONTEXT/zz -- -d wheezy -m http://apt-proxy:9999/debian/

これまでの研究

これまでのところ、インターネットによって次のことが実現されました。

私の最大の恐れは、これが私の現在の結論です。仮想サーバー内のApacheは、ホストが提供していない新しいカーネル機能に依存しているということです。結局のところ、Wheezyのデフォルトのカーネルは、私の2.6.26ほど古いものではありません。

ホストカーネルのアップグレードは絶対に避けたいです。

どうして?

  • 時間と知識の欠如(ハードウェアはHPサーバーであり、何に注意すべきかわからない)
  • Wheezyはvserverをサポートしていません(そのままの状態で、自己インストールについては1を参照してください)...)
  • 24時間年中無休で利用できる必要のあるvserverを既に実行している(システム全体が社内でインターネットに公開されていない)
  • テストを実行する2番目の同じハードウェアはありません

Apacheにパッチを適用します

問題が何であるかを理解できる場合は、Wheezyクエスト用のカスタムdebパッケージをビルドしようとしています。

回答:


16

解決

最初の文で述べたように、私はすでに解決策を見つけました:libapr1はゲスト内でパッケージを再構築しました

私はで解決策を見つけたためグーグル「:alloc_listenerを:無効な引数(ヌル)用のソケットを取得できませんでした」、5位のヒットとなった無効な引数のがらくたアップグレードカーネル言及し、他を参照する11点のhttpdのFedoraの話ブロガーの問題:

この問題は、apr-1.3.8-1で使用される3つのカーネルコール、accept4()、dup3()、epoll_create1()に関連しています。これらの呼び出しがないと、Apacheを起動できません。

彼は修正されたFedoraチームについて言及しているので、バグレポートをチェックアウトしました:https : //bugzilla.redhat.com/show_bug.cgi?id=516331、特に2番目のコメント

..そのXenインスタンスで独自のAPRを構築すると、古い機能が正しく取得され、動作します。

それはベルを鳴らした。私がしなければならなかったのは、libapr1パッケージを再構築することだけでした。というのは、configureスクリプトaccept4は、利用できないものを自動的に見つけて、に戻るからacceptです。それが私がやった方法です:

  • apt-get source libapr1
  • tar -xf apr_1.4.6.orig.tar.gz
  • cd apr-1.4.6
  • tar -xf ../apr_1.4.6-3.debian.tar.gz
  • dpkg-buildpackage
    依存関係がないため、これは最初は失敗しました: apt-get install debhelper autoconf autotools-dev uuid-dev doxygen libtool
  • しばらくすると、これは私がインストールしたディレクトリの外にdebianパッケージを生成しました:
    dpkg -i libapr1_1.4.6-3_amd64.deb
  • それから私はちょうどapacheを始めて、それはうまくいきました!
    /etc/init.d/apache2 start

ディスク不足のシステムでは、コンパイル後にdoxygenを削除することができます。私のシステムでは、依存関係とともに600 MB以上が必要でした。


+1ありがとう、非常に役に立ち、serverfault.com / questions / 506238 /…でも私の問題を修正しました。自分の回答を承認済みとしてマークする必要があります。
aseq 2013年

そのようなパッケージはありません
Flash Thunder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.