OSX bagaimana cara menunjukkan status apache di terminal?

11

Saya perhatikan bahwa di server linux saya ketika saya mengetik apachectl restart itu memberi saya sedikit tetapi umpan balik yang bermanfaat seperti restartingdan kemudian [ok]atau [fail]pada akhir baris. Tidak banyak, tetapi setidaknya saya tahu apa yang sedang terjadi, dan saya dapat memeriksa log.

Pada OS X saya, saya tidak mendapatkan apa-apa. langsung saja baris berikutnya:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

Bagaimana saya bisa mengaktifkan fitur 'debug' itu?

mgPePe
sumber
Saya tidak terbiasa dengan OS X, tetapi Anda dapat mengedit skrip init untuk menambahkan echobaris.
quanta
dimana skrip itu? dan baris apa yang harus saya tambahkan echo? Maaf, saya baru berkeliling dan membutuhkan detail: \
mgPePe
Saya bukan orang OS X, tapi mungkin itu hanya mengikuti filosofi Unix "tidak ada berita adalah kabar baik", dan mulai mengomel Anda hanya jika ada sesuatu yang salah?
Janne Pikkarainen
hmm kesalahan diam tidak membantu, jadi saya bukan penggemar benar-benar
mgPePe
Silakan kirim konten /usr/sbin/apachectl.
quanta

Jawaban:

5

Bagaimana kalau dalam skrip apachectl wrapper Anda menempelkan sesuatu seperti ini di akhir.

tail -5 /var/log/httpd/error_log

Anda akan melihat sesuatu seperti ini di startup biasa

  • [Jumat 22 Apr 23:39:20 2011] [pemberitahuan] Intisari: menghasilkan rahasia untuk
    otentikasi intisari ...
  • [Jumat 22 Apr 23:39:20 2011] [pemberitahuan] Intisari: selesai
  • [Jumat 22 Apr 23:39:20 2011] [memperingatkan] file pid
    /mlk/apache/pid/httpd.pid ditimpa - Pematian yang tidak bersih dari menjalankan Apache sebelumnya?
  • [Jumat 22 Apr 23:39:20 2011] [pemberitahuan] Apache / 2.0.63 (Unix) DAV / 2 dikonfigurasi - melanjutkan operasi normal

Kalau tidak, setiap kesalahan setidaknya sebagian ditunjukkan di sini. Ungkapan kuncinya ada di atas.

Tambahan: / usr / sbin / apachectl dimiliki oleh root, Anda harus menjadi pengguna istimewa untuk melakukan ini. sudo vi / usr / sbin / apachectl

pindahkan ke akhir file dan masukkan ini di antara baris "esac" dan "keluar $ ERROR". yaitu.

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

Perhatikan ini akan mencetak beberapa baris terakhir apa pun tindakan yang Anda lakukan dengan skrip, berhenti mulai, mulai ulang. Anda mungkin hanya ingin meletakkannya di bagian awal pernyataan kasus.

Michael Henry
sumber
Itu terdengar seperti solusi yang mungkin. Dan bagaimana saya bisa melampirkannya sehingga secara otomatis dieksekusi dengan setiap perintah restart?
mgPePe
Harus ssh ke server macos saya di rumah untuk melihat / usr / bin / apachectl Lihat jawaban di atas saya telah menambahkan perintah untuk mengedit file.
Michael Henry
30

Saya memiliki masalah yang sama pada mac saya. Ketika saya mencoba memulai apache dan tidak ada yang terjadi, saya langsung menjalankan perintah ini. Dalam kasus saya masalahnya sepertinya selalu ada di file konfigurasi apache.

apachectl configtest
Randy Findley
sumber
Terima kasih untuk ini. Saya mengalami masalah ini sendiri, dan ternyata pembaruan ke homebrew SQLite menyebabkan PHP homebrew menendang kesalahan Apache yang tidak muncul di mana pun kecuali di configtest.
AlexMax
Terima kasih terima kasih terima kasih!!! Ini baru saja menyelamatkan kewarasanku !!!
Dan Akhirnya
1
versi singkat dari perintah ini adalahapachectl -t
equiman
Perintah ini akan memberi tahu Anda jika konfigurasi Apache httpd (httpd.conf) bebas dari kesalahan sintaksis. Untuk melihat apakah proses sedang berjalan, Anda bisa menjalankan "htop" dan kemudian F4 untuk memfilter pada "httpd" untuk melihat semua proses yang dihasilkan oleh httpd.
Puneet Lamba
8

apachectlpada Mac adalah pembungkus beberapa launchctlperintah (lihat saja ke dalam file). Sayangnya, launchctl tidak keluar dengan kode kesalahan ketika ada yang salah dengan memulai httpd, jadi skrip tidak memiliki cara mudah untuk menampilkan apa pun, bahkan jika itu mencoba.

Pemeriksaan dasar yang dapat Anda lakukan sendiri adalah untuk memeriksa keberadaan proses Apache setelah apachectl startperintah.

ps aux | grep httpd
Sven
sumber
Di satu sisi, Anda mengatakan, "tidak ada info debug yang dapat Anda atur di macosx, tetapi ini adalah bagaimana Anda dapat memeriksa apakah server apache sedang berjalan" apakah itu benar?
mgPePe
Ya, itu saja.
Sven
0

Pada macOS dengan netstatperintah menampilkan semua koneksi jaringan. Anda hanya dapat memfilter koneksi 'dengarkan' dan lihat server http.

Anda dapat membuat file bash dengan kode ini:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

Hasil ketika server dihentikan sudo apachectl -k stopadalah:

Apache server is not running

Hasil ketika server sedang berjalan sudo apachectl -k stopadalah:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

Dalam contoh ini saya memiliki dua server berjalan, satu dengan https dan yang lain dengan http.

Equiman
sumber