init.d 아래의 Apache 데몬 파일이 ​​비어 있습니다


1

/etc/init.d/apache2며칠 전에 Apache2 데몬 이 어떻게 비 었는지 , 지난 몇 일 동안 로그 회전 프로세스에 영향을 미치는 것으로 나타났습니다.

apache버전은Apache/2.2.12 (Ubuntu)

아파치를 다시 설치하지 않고 안전한 방법으로 해당 스크립트를 다시 복원하고 현재 구성 + 모든 가상 호스트를 변경하지 않고 유지하려면 어떻게해야합니까?


Ubuntu 버전으로 태그를 추가하십시오.
AB

완료, 우분투 9.10
MohammedSimba

와우, 거의 6 년이 지난 비 LTS 릴리즈. 왜 릴리스를 업그레이드하지 않습니까? 적어도에 LTS의 하나. 시스템 및 해당 패키지에 대한 6 년의 보안 및 버그 수정이있었습니다.
Dan

답변:


1

폴더를 열고 /var/cache/apt/archives아파치 deb 파일 ( apache2-common...)을 찾으십시오 .

다음을 사용하여 파일을 추출하십시오.

dpkg -x <your_deb> /tmp/apache2

당신의 빈 /etc/init.d/apache2을 교체/tmp/apache2/etc/init.d/apache2

파일을 찾을 수 없으면 여기 에서 deb 파일을 다운로드 할 수 있습니다 .

이전 버전의 경우 여기 또는 여기 . 가장 적합한 버전을 선택하십시오.

또는 우분투 9.10을 위해 이것을 가져 가라 from apache2-common_2.0.55-4ubuntu2.13_amd64.deb.

#!/bin/bash -e
#
# apache2       This init.d script is used to start apache2.
#           It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
    HAVE_APACHE2=1
else
    exit 0
fi

. /lib/lsb/init-functions

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then 
        [ "$VERBOSE" != "no" ] && log_warning_msg "Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.";
        exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
    PID=""
    PIDFILE=""
    AP_CONF=/etc/apache2/apache2.conf

    # apache2 allows more than PidFile entry in the config but only the
    # last found in the config is used; we attempt to follow includes
    # here, but only first-level includes are supported, not nested ones

    for i in $AP_CONF `awk '$1 ~ /^\s*[Ii]nclude$/ && $2 ~ /^\// {print $2}' $AP_CONF`; do
        PIDFILE=`grep -i ^PidFile $i | tail -n 1 | awk '{print $2}'`
        if [ -e "$PIDFILE" ]; then
            PID=`cat $PIDFILE`
        fi
    done

    errors=`$APACHE2 -t 2>&1`
    if [ $? = 0 ]; then
        # if the config is ok than we just stop normaly

        if [ -n "$PID" ]
        then
            $APACHE2CTL stop

            CNT=0
            while [ 1 ]
            do
                CNT=$(expr $CNT + 1)

                [ ! -d /proc/$PID ] && break

                if [ $CNT -gt 60 ]
                then
                    if [ "$VERBOSE" != "no" ]; then
                        echo " ... failed!"
                        echo "Apache2 failed to honor the stop command, please investigate the situation by hand."
                    fi
                    return 1
                fi

                sleep 1
            done
        else
            if [ "$VERBOSE" != "no" ]; then
                echo -n " ... no pidfile found! not running?"
            fi
        fi

    else
        [ "$VERBOSE" != "no" ] && echo "$errors"

        # if we are here something is broken and we need to try
        # to exit as nice and clean as possible

        # if pidof is null for some reasons the script exits automagically
        # classified as good/unknown feature
        PIDS=`pidof apache2` || true

        REALPID=0
        # if there is a pid we need to verify that belongs to apache2
        # for real
        for i in $PIDS; do
            if [ "$i" = "$PID" ]; then
                # in this case the pid stored in the
                # pidfile matches one of the pidof apache
                # so a simple kill will make it
                REALPID=1
            fi
        done

        if [ $REALPID = 1 ]; then
            # in this case everything is nice and dandy
            # and we kill apache2
            kill $PID
        else
            # this is the worst situation... just kill all of them
            #for i in $PIDS; do
            #   kill $i
            #done
            # Except, we can't do that, because it's very, very bad
            if [ "$PIDS" ] && [ "$VERBOSE" != "no" ]; then
                                echo " ... failed!"
                    echo "You may still have some apache2 processes running.  There are"
                    echo "processes named 'apache2' which do not match your pid file,"
                    echo "and in the name of safety, we've left them alone.  Please review"
                    echo "the situation by hand."
                        fi
                        return 1
        fi
    fi
}

# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
    start)
        [ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
        # ssl_scache shouldn't be here if we're just starting up.
        [ -f /var/run/apache2/ssl_scache ] && rm -f /var/run/apache2/*ssl_scache*
        # /var/run and /var/lock could be on a tmpfs
        [ ! -d /var/run/apache2 ] && mkdir /var/run/apache2
        [ ! -d /var/lock/apache2 ] && mkdir /var/lock/apache2
        # Make sure /var/lock/apache2 has the correct permissions
        chown www-data /var/lock/apache2

        log_begin_msg "Starting apache 2.0 web server..."
        if $APACHE2CTL startssl; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    stop)
        log_begin_msg "Stopping apache 2.0 web server..."
        if apache_stop; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    reload)
        log_begin_msg "Reloading apache 2.0 configuration..."
        if $APACHE2CTL graceful $2 ; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    restart | force-reload)
        log_begin_msg "Forcing reload of apache 2.0 web server..."
        if ! apache_stop; then
                        log_end_msg 1
                fi
        if $APACHE2CTL startssl; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    status)
        exit 4
    ;;
    *)
        echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload" >&2
        exit 2
    ;;
esac

그것을 찾지 못했습니다 :(awstats_6.9~dfsg-1ubuntu3.9.10.1_all.deb libc6_2.10.1-0ubuntu19_amd64.deb libc6-dev_2.10.1-0ubuntu19_amd64.deb libc6-i386_2.10.1-0ubuntu19_amd64.deb libc-bin_2.10.1-0ubuntu19_amd64.deb libc-dev-bin_2.10.1-0ubuntu19_amd64.deb libnet-xwhois-perl_0.90-3_all.deb libopie-dev_2.40~dfsg-0ubuntu1.9.10.1_amd64.deb lock partial rsync_3.0.6-1ubuntu1.1_amd64.deb vsftpd_2.2.0-1ubuntu2.1_amd64.deb
MohammedSimba

OMG Ubuntu 9.10 : \
AB

역사적 버전 : :) 불행히도 나는 그것을 가지고 있지 않습니다.
MohammedSimba

서버 이름에서 다른 데몬을 apache2.2로 찾았지만 동일한 버전인지 확실하지 않습니다 !!
MohammedSimba

1
나는 파일을 교체하고, 많은 덕분에들 시간에 대한 AB, muru 및 지원 : 일
MohammedSimba을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.