Server Apache tidak memulai secara otomatis

11

Saya menginstal Apache sejak lama sebagai bagian dari pengaturan lingkungan pengembangan di laptop saya.

Namun, karena saya menghentikannya beberapa bulan lalu, itu tidak lagi mulai secara otomatis saat boot. Saya memiliki masalah ini di laptop saya di rumah DAN di laptop saya di tempat kerja.

Saya kedua kasus, saya menginstal Apache di Ubuntu 10,10 beberapa bulan yang lalu, menggunakannya selama beberapa minggu tanpa kesalahan, tetapi kemudian suatu hari saya menghentikannya dan sekarang tidak lagi mulai secara otomatis. Saya mencoba menjalankan pembaruan rc untuk itu secara manual, tetapi diberitahu bahwa skrip init sudah digunakan.

Namun, memulai / memulai ulang secara manual dengan

sudo service apache2 start/restart

bekerja dengan baik. Dalam kedua kasus, saya membiarkannya sampai setelah upgrade ke 11,04, karena saya berharap itu akan diselesaikan oleh versi baru. Tapi ternyata tidak! Saya akan berterima kasih jika seseorang dapat memberi tahu saya cara membuat Apache mulai secara otomatis sekali lagi.

Carsten Agger
sumber

Jawaban:

10

Coba lari

update-rc.d apache2 enable [list of run levels]

sebagai root.

Anda mungkin tertarik membaca

man update-rc.d
abaikan
sumber
1
Terima kasih banyak, saya menjalankan perintah (tanpa daftar runlevel, hanya standarnya), dan sepertinya berhasil. Tahukah Anda mengapa tampaknya berhenti bekerja? Saya tidak bermain-main dengan skrip init, saya pikir saya baru saja menghentikan Apache dari baris perintah - tetapi saya tidak punya niat untuk menghentikannya secara permanen . :-)
Carsten Agger
Saya tidak punya pendapat mengapa itu berhenti bekerja :) Mungkin setelah memperbarui sesuatu mulai bekerja tidak benar.
ignar
Terima kasih, tetapi itu tidak membantu. Tidak peduli bagaimana saya mengaktifkan pembaruan-rc.d apache2, apache berhenti berjalan secara otomatis lagi. Saya selalu harus memulainya secara manual. Tampaknya tidak ada masalah aktual, karena selalu dimulai dengan benar ketika saya melakukannya secara manual.
Carsten Agger
9

Saya menambahkan jawaban ini berdasarkan masalah terkini yang saya temui dengan gejala yang sama.

Pertama beberapa data latar belakang:

  • Ubuntu menggunakan skrip dalam /etc/init.d/folder untuk memulai / menghentikan layanan.
  • Ubuntu menggunakan symlink ke /etc/init.d/skrip - skrip tersebut, disimpan di /etc/rc#.d/folder, untuk memulai / menghentikan layanan berdasarkan "runlevel".
  • Symlink yang dimulai dengan "S" menunjukkan bahwa layanan harus dimulai.
  • Symlink yang dimulai dengan "K" menunjukkan bahwa layanan harus dihentikan (dibunuh).
  • Runlevel 1 mengeksekusi skrip yang disinkronkan /etc/rc1.d/, runlevel 2 menggunakan /etc/rc2.d/, dan sebagainya.
  • Runlevel default untuk Ubuntu adalah 2.
  • Instalasi Apache pada dasarnya berjalan sudo update-rc.d apache2 defaultsyang menciptakan symlink yang sesuai di /etc/rc#.d/folder.

Jadi sepertinya di server saya ada sesuatu, atau seseorang, pada suatu titik berlari sudo update-rc.d apache2 disableyang menghapus semua symlink "S" dan menggantinya dengan symlink "K". Dengan demikian membunuh, atau hanya tidak memulai, Apache ketika menginisialisasi runlevel.

Solusi saya hanyalah mengaktifkan kembali Apache:

sudo update-rc.d apache2 enable

Sekarang Apache mulai / berhenti seperti yang diharapkan saat memulai atau mengganti runlevel.

NB:

Perlu dicatat bahwa hanya menjalankan sudo update-rc.d apache2 defaultslagi tidak cukup karena ia melihat bahwa symlink ada dan menganggap bahwa itulah yang diinginkan. Itu hanya menanggapi dengan:

System start/stop links for /etc/init.d/apache2 already exist.
Karl Wilbur
sumber
1
Terima kasih! Ini sangat berharga dalam memecahkan masalah konfigurasi saya.
reor
1
Saya mengalami masalah ini tetapi secara mengejutkan solusi ini tidak berhasil. Ketika saya menjalankannya sudo update-rc.d apache2 enable defaultsmenghapus apa yang saya miliki dan kemudian meletakkannya kembali. Saya miliki K09apache2di rc0, 1, dan 6, dan saya punya S91apache2di rc2, rc3, rc4, rc5. service apache2 startberfungsi dengan baik, tetapi saya harus melakukannya setelah setiap restart karena itu tidak akan mulai secara otomatis. mysql, di sisi lain, selalu dimulai dengan baik.
Buttle Butkus
1
Itu terlihat benar. Anda mungkin ingin membuka pertanyaan baru dengan perincian masalah spesifik Anda dan pastikan untuk memasukkan baris yang relevan dari Anda /var/log/syslogdan /var/log/apache2/error.log. Kirimi saya pesan dengan tautan ke pertanyaan dan saya akan melihat apakah saya dapat membantu.
Karl Wilbur
3

Dalam hal ini, saya mencari tahu mengapa Apache tidak memulai. Saya tidak dapat menemukan jejak ini di log startup, hanya dalam output yang dicetak ke layar saat bootup.

Tapi ini dia: Baris terakhir dalam skrip /etc/apache2/apache2.confgagal.

Mengapa?

Ia mengatakan:

Include sites-enabled/

Namun, dua situs yang saya siapkan terletak di direktori home saya sendiri - yang dienkripsi!

Jadi, saat boot (saat startup Apache) situs-situs ini tidak ada, dan Apache gagal dan menolak untuk berjalan.

Larutan?

Saya telah membuat skrip kecil bernama "disable_sites" dan menghubungkannya dengan /etc/rc0.ddan /etc/rc6.d(shutdown dan reboot):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Saya juga membuat skrip untuk mengaktifkan kembali situs setiap kali saya masuk dan menambahkannya sebagai program startup di Pengaturan Sistem saya. Jadi sekarang berhasil!

Jadi, saya kira pelajaran di sini adalah bahwa ketika Apache secara misterius gagal memuat saat bootup dan Anda tidak dapat menemukan kesalahan dalam log atau ketika memulai server secara manual, periksa apakah semua direktori yang dibutuhkan tersedia. Ini mungkin juga bisa diselesaikan dengan cara lain.

Carsten Agger
sumber
Saya terkejut Anda tidak menemukan kesalahan di log. Saya telah di masa lalu menemukan bahwa beberapa kesalahan startup Apache tidak dalam file log yang saya harapkan, tetapi dalam file log untuk salah satu dari host virtual saya. Mungkinkah ini masalahnya?
Marius Gedminas
apachectl configtestakan memberi tahu Anda tentang kurangnya izin untuk mengakses file, saat berjalan sebagai daemon.
Anuga
1

Untuk orang lain yang mencari (googling) untuk masalah ini periksa apakah Anda menjalankan:

chkconfig |grep httpd

Anda mendapatkan

httpd 0: off 1: off 2: on 3: on 4: on 5: on 6: off

lain lakukan:

chkconfig httpd on

(maaf pada ubuntu chkconfig setara adalah update-rc.d lihat alternatif Chkconfig untuk Server Ubuntu? )

dfliess
sumber
0

Saya memiliki masalah yang sama, dan saya menjalankan Ubuntu 14 pada pengaturan Vagrant lokal. Saya menghapus /etc/apache2/sites-enableddirektori dan menambahkan tautan ke direktori rumah saya, yang tentu saja dipasang ke drive lokal saya sesuai dengan konfigurasi Vagrant.

Ternyata apache tidak melihat direktori karena sumber dayanya belum terpasang. Saya menulis ulang provisi saya di Vagrant untuk hanya menyalin sites-enableddirektori alih-alih menambahkan symlink.

Saya juga melakukan sudo update-rc.d apache2 enableseperti yang disarankan oleh Karl Wilburuntuk memastikan apache init diaktifkan.

pengguna288900
sumber