Apache'nin Linux'ta bootime açılışını nasıl yapabilirim?


32

Apache 2'yi Linux kutumdaki kaynaktan kurdum. apachectl -k startgayet iyi çalışıyor ancak Apache'nin açılışta nasıl başlamasına neden olur?

Bu Red Hat Linux dağıtımında:

Linux <hostname> 2.6.9-55.ELsmp # 1 SMP Cum 20 Nisan 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
Hangi dağıtım?
ayaz

Yanıtlar:


46

İnit betiğini uygun çalışma seviyesine eklemek istiyorsun. İnit betiği tipik olarak onu başlatmak için /etc/init.d/apache2el ile çalıştırabileceğiniz yerdir /etc/init.d/apache2 start.

Gentoo’da şunları yazarsınız:

rc-update add apache2 default

Ubuntu / Debian'da şöyle çalışır:

sudo update-rc.d apache2 defaults

Red Hat Linux / Fedora / CentOS'ta küçük bir googling bunu gösteriyor:

chkconfig --add httpd

Dağıtımdan dağıtıma biraz değişiyor, ancak fikir genellikle aynı. Temel olarak, bu komutların tümü /etc/init.d/, içindeki uygun çalışma düzeyi klasörüne sembolik bir bağ oluşturur /etc/.


1
Cevabınız için teşekkürler, doğru yöne işaret etti. Aşağıda yaptıklarımı özetledim.
üzülmek

Eğer apache kaynağından inşa ettiyseniz, herhangi bir init betiği olmayacaksa, ele aldığınız kısım, /etc/init.d/ içinde doğru bir şekilde ayarlanmış bir init betiğine sahip olduğunuzda sadece bir servis olarak yapılandırmadır ve bu tam olarak ne değildir gerçekten apache 2 için belgelendi
Jaime Hablutzel

26

İşte sonunda benim için çalıştı. Bu sizin kök kullanıcı olduğunuzu varsayar.

  1. vi /etc/init.d/apache2 (aşağıda gösterildiği gibi düzenleyin)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig - add apache2
  4. chkconfig --list apache2 (çalıştığını doğrulamak için)

/Etc/init.d/apache2 içeriği:

#! / Bin / bash
#
# apache2 Apache HTTP Sunucusu için başlangıç ​​betiği
#
# chkconfig: 3 85 15
# Description: Apache bir World Wide Web sunucusudur. Hizmet etmek için kullanılır \
# HTML dosyaları ve CGI.

/ usr / yerel / apache2 / bin / apachectl $ @

Benim durumumda 3 olan / sbin / runlevel komutunu çalıştırarak runlevel'i elde edebilirsiniz, ve benim durumumda / usr / local / apache2 / bin / apachectl olan apachectl sürümünüzü çağırmanız gerekir.

Aşağıdakilere teşekkürler:


Kendi cevabımı kabul etmekten gerçekten nefret ediyorum ama bu işe yaradı.
yas

Bu tam ihtiyacım olan şeydi! (/ usr / local / apache2 içine bir 2.2.27 Apache derlemek ve kurmak zorunda kaldım). Çok teşekkürler.
Christophe Muller,

"/ usr / local / apache2 / bin / apachectl $ @" satırı gerçekten httpd'yi başlatır mı? yayınlamanız gerekiyor mu: sudo chkconfig apache2 başlat veya sudo chkconfig apache2 açılsın mı?
olala

8

httpdDizinde init betiğinin olup olmadığını kontrol edin /etc/rc.d. Evetse, httpd hizmetinin önyükleme sırasında başlamasını sağlayan aşağıdaki komutu çalıştırabilirsiniz .

chkconfig --level 345 httpd on

Eğer init betiğiniz yoksa, /etc/rc.localdosyayı ekleyiniz apachectl -k start(Apache'yi başlatma komutu).


4

Kaynak tarafından yüklediğiniz için, /etc/init.d/ dizininde kurulu bir init betiği olmayacaktır. Apachectl binary standart init script seçenekleriyle uyumlu olacak şekilde tasarlanmıştır, böylece bir sarmalayıcı betiği oluşturmak yerine basitçe işaretleyebilirsiniz (örn. Ln -s / usr / local / sbin / apachectl /etc/init.d/ apache)

Doğru çalışma seviyelerinde init betiğini çağırmak için link eklemek için diğer yayınlarda belirtilen prosedürleri takip edebilirsiniz.

Alıntılama: Apache Belgeleri http://httpd.apache.org/docs/2.2/invoking.html

Boot-Time'da Başlama

Sunucunuzun sistem yeniden başlatıldıktan sonra çalışmaya devam etmesini istiyorsanız, sistem başlangıç ​​dosyalarınıza apachectl'e bir çağrı eklemelisiniz (genellikle rc.local veya bir rc.N dizinindeki bir dosya). Bu Apache'yi root olarak başlatacak. Bunu yapmadan önce, sunucunuzun güvenlik ve erişim kısıtlamaları için uygun şekilde yapılandırıldığından emin olun.

Apachectl betiği, standart bir SysV init betiği gibi davranacak şekilde tasarlanmıştır; argümanları başlatabilir, yeniden başlatabilir ve durdurabilir ve bunları httpd'ye uygun sinyallere çevirebilir. Böylece apachectl'i genellikle uygun init dizinine bağlayabilirsiniz. Ancak sisteminizin tam gereksinimlerini kontrol ettiğinizden emin olun.


Cevabınız için teşekkürler, doğru yöne işaret etti. Aşağıda yaptıklarımı özetledim.
üzülmek

1

chkconfig - seviyeleri 345 httpd

httpd 3,4,5 çalışma seviyelerinde başlayacaktır.

chkconfig --list tüm servisleri ve mevcut başlangıç ​​çalışma seviyelerini gösterir. 345 bir şebeke servisi için tipiktir.


1
Bu, CentOS 6'da benimle şu hatayı oluşturuyor: "chkconfig sorgusu için yalnızca bir çalışma seviyesi belirtilebilir". Ancak, komutun sonuna "on" ("chkconfig --levels 345 httpd on") eklenmesi bir cazibe gibi çalıştı.
akame

1

Red Hat Linux'ta, mevcut çalışma seviyenizde hangi servisleri başlatmak istediğinizi seçmenize izin veren ntsysv adında kullanışlı bir yardımcı program vardır. Ayrıca, yardımcı programı kullanmaya başladığınızda hangi çalışma seviyesini düzenlemek istediğinizi de belirlersiniz --level.

Httpd aşağı kaydırın ve tuşuna basın, Spaceböylece sol kutuda bir yıldız belirir. Sonra TabTamam'a. ReturnKaydetmek ve kabuğa geri dönmek için düğmesine basın .

Varsayılan olarak hemen hemen yüklendiğini buldum. Asla kurulmadığı bir konumda olmadım.

Hizmet betiğini /etc/init.d dizinine kopyalayıp daha sonra çalıştırıyor olsanız da hizmeti yüklemeniz gerekir:

chkconfig --add <script name>

1

Bu Linux lezzetinize bağlıdır. /Etc/init.d/apache2 dosyasının oluşturulduğunu varsayarak, şunu deneyin:

chkconfig -a apache2

veya

update-rc.d apache2 defaults

Bunlardan biri çalışmalı.


1
Chkconfig cevabı Red-Hat benzeri sistemler (yani CentOS) ve update-rc.d Debian benzeri sistemler içindir (örn. Ubuntu)
Kyle Brandt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.