Apache trong linux-vserver sẽ không khởi động, không thể tạo socket


8

Trong quá trình nghiên cứu và thử nghiệm rộng rãi để viết một câu hỏi thích hợp xứng đáng với stackexchange tôi đã tìm thấy một giải pháp: xây dựng lại libapr1gói bên trong khách.
Tôi nghĩ rằng tôi vẫn đăng thông tin này vì nó có thể hữu ích cho người khác.

Vấn đề

Khi tôi cài đặt libapache2-mod-php5bên trong khách Wheezy và nó cố gắng khởi động, tôi nhận được những điều sau:

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

Đây là cài đặt gói nguyên sơ không thay đổi mà theo mặc định không quản lý để khởi động.

Thử nghiệm của tôi

Theo tài liệu chính thức, Nghe 80 thực sự tốt . Biến nó thành Listen 127.0.0.1:80cho tôi:

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

Vậy tại sao Apache không có được một ổ cắm? Tôi đã chạy các deamon khác (tức là nginx trên bản cài đặt Wheezy khác; exim4 nghe trên cổng 25 trên cùng bản cài đặt) mà không gặp vấn đề gì.

Môi trường

Tổ chức

Debian Lenny trên 2.6,26-2-vserver-amd64

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

Khách mời

Debian Wheezy, được xây dựng với 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/

Nghiên cứu cho đến nay

Các internets đã chứng minh cho tôi với những điều sau đây cho đến nay:

Nỗi sợ hãi lớn nhất của tôi, và đây là kết luận hiện tại của tôi, đó là apache bên trong máy chủ ảo phụ thuộc vào một số tính năng hạt nhân mới hơn mà máy chủ của tôi không cung cấp. Xét cho cùng, kernel mặc định Wheezy chắc chắn không cũ bằng 2.6,26 của tôi.

Tôi muốn tránh nâng cấp kernel host bằng mọi giá.

Tại sao?

  • Thiếu thời gian và kiến ​​thức (phần cứng là máy chủ HP, không biết phải đề phòng điều gì)
  • Wheezy không hỗ trợ vserver nữa (ngoài hộp; để tự cài đặt, xem 1) ...)
  • Đã chạy các trình so sánh được yêu cầu khả dụng 24/7 (toàn bộ hệ thống là nội bộ của công ty và không được tiếp xúc với internet)
  • Không có phần cứng thứ hai để thực hiện kiểm tra

Tôi sẵn sàng vá Apache

Nếu có thể tìm ra vấn đề là gì, tôi sẽ sẵn sàng xây dựng gói gỡ lỗi tùy chỉnh cho các nhiệm vụ Wheezy của mình.

Câu trả lời:


16

Giải pháp

Như tôi đã nói trong câu đầu tiên, tôi đã tìm thấy giải pháp: Tôi xây dựng lại libapr1gói bên trong khách .

Tôi đã tìm ra giải pháp bằng cách googling cho "Đối số không hợp lệ: alloc_listener: không nhận được socket cho (null)" , lần truy cập thứ 5 là crap đối số không hợp lệ trong đó đề cập đến nâng cấp kernel và đề cập đến một blogger khác nói về các vấn đề httpd của Fedora 11 :

Vấn đề liên quan đến ba lệnh gọi kernel được sử dụng trong apr-1.3.8-1: accept4 (), dup3 () và epoll_create1 (). Không có những cuộc gọi này, apache không thể bắt đầu.

Anh ấy đã đề cập đến nhóm Fedora đã sửa lỗi nên tôi đã kiểm tra báo cáo lỗi: https://ormszilla.redhat.com/show_orms.cgi?id=516331 , cụ thể là nhận xét thứ hai :

.. nếu bạn xây dựng APR của riêng bạn trên cá thể Xen đó, nó sẽ chọn chính xác các chức năng cũ hơn và hoạt động ..

Tiếng chuông đó vang lên. Tất cả những gì tôi phải làm là xây dựng lại libapr1gói vì tập lệnh cấu hình sẽ tự động chỉ ra rằng accept4nó không có sẵn và sẽ hoàn nguyên accept. Đó là cách tôi đã làm:

  • 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
    Điều này thất bại lúc đầu vì thiếu phụ thuộc: apt-get install debhelper autoconf autotools-dev uuid-dev doxygen libtool
  • Sau một thời gian, nó tạo ra một gói debian bên ngoài thư mục mà tôi đã cài đặt:
    dpkg -i libapr1_1.4.6-3_amd64.deb
  • Sau đó, tôi chỉ bắt đầu apache và nó đã làm việc!
    /etc/init.d/apache2 start

Trên một hệ thống bị bỏ đói đĩa, bạn có thể muốn xóa doxygen sau khi biên dịch: trên hệ thống của tôi, nó cần hơn 600 MB cùng với các phụ thuộc của nó.


+1 Cảm ơn, rất hữu ích và nó cũng đã khắc phục vấn đề của tôi trong serverfault.com/questions/506238/NH Bạn nên đánh dấu câu trả lời của chính mình là câu trả lời được chấp nhận.
aseq

không có gói nào như vậy
Flash Thunder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.