nginx direktori situs-tersedia hilang

190

Saya menginstal Nginx pada Centos 6 dan saya mencoba mengatur host virtual. Masalah yang saya alami adalah sepertinya saya tidak dapat menemukan /etc/nginx/sites-availabledirektori.

Apakah ada sesuatu yang perlu saya lakukan untuk membuatnya? Saya tahu Nginx aktif dan berjalan karena saya bisa menjelajahinya.

Fr0ntSight
sumber
Jika Anda ingin membagi satu file konfigurasi besar menjadi yang lebih kecil, Anda dapat menggunakan skrip saya untuk membaginya: stackoverflow.com/a/38635284/1069083
rubo77

Jawaban:

354

Yah, saya pikir nginx dengan sendirinya tidak memiliki itu dalam pengaturannya, karena paket yang dikelola Ubuntu melakukannya sebagai konvensi untuk meniru pengaturan apache Debian. Anda dapat membuatnya sendiri jika Anda ingin meniru pengaturan yang sama.

Buat /etc/nginx/sites-availabledan /etc/nginx/sites-enabledkemudian edit httpblok di dalamnya /etc/nginx/nginx.confdan tambahkan baris ini

include /etc/nginx/sites-enabled/*;

Tentu saja, semua file akan ada di dalam sites-available, dan Anda akan membuat symlink untuk mereka di dalamnya sites-enableduntuk yang ingin Anda aktifkan.

Mohammad AbuShady
sumber
23
Kerabat RedHat (yaitu Fedora dan Centos) tidak memiliki fitur ini di luar kotak seperti Debian / Ubuntu. Mudah untuk menyalin, seperti yang dikatakan @Mohammad, namun tidak memiliki standar yang bagus membingungkan bagi pendatang baru.
MGP
36
Ya Tuhan, saya tidak bisa mengatakan berapa banyak pencarian yang saya lakukan untuk mencari tahu ini. Saya menggunakan rilis Amazon Linux AMI 2014.03. Direktori ini tidak dibuat secara otomatis jika Anda menginstal nginx dari file rpm (apakah nginx 1.6.2 atau nginx 1.7.5) tetapi banyak contoh konfigurasi nginx merujuk ini ... membuat Anda bertanya-tanya apakah nginx Anda terinstal dengan benar atau tidak.
so_mv
1
Keren terima kasih, bagaimana dengan symlink? Apakah sintaksis saya benar? Tampaknya tidak ditemukan oleh pernyataan include.
nol-dan-yang
7
Saya memperbaikinya, memulai tautan sym baru dan dibuat seperti ini: sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conftidak yakin mengapa jalur penuh membuat perbedaan: /
nol-dan-yang
1
Terima kasih banyak. Dibangun nginx dari sumber dan tidak menyadari ubuntu melakukan ini.
Sean Norwood
66

Jika Anda lebih suka pendekatan yang lebih langsung, pendekatan yang TIDAK mengacaukan hubungan antara /etc/nginx/sites-availabledan /etc/nginx/sites-enabled, lakukan hal berikut:

  1. Temukan file nginx.conf Anda. Mungkin di/etc/nginx/nginx.conf
  2. Temukan blok http.
  3. Di suatu tempat di blok http, tulis include /etc/nginx/conf.d/*.conf;ini memberitahu nginx untuk menarik semua file dalam conf.ddirektori yang berakhiran .conf. (Saya tahu: aneh bahwa direktori dapat memiliki .di dalamnya.)
  4. Buat conf.ddirektori jika belum ada (per jalur di langkah 3). Pastikan untuk memberikan izin / kepemilikan yang tepat. Kemungkinan root atau www-data.
  5. Pindahkan atau salin file konfigurasi terpisah Anda (seperti yang Anda miliki /etc/nginx/sites-available) ke dalam direktori conf.d.
  6. Muat ulang atau mulai ulang nginx.
  7. Makanlah es krim.

Setiap .conffile yang Anda dimasukkan ke dalam conf.ddirektori pada keluar dari sini akan menjadi aktif selama Anda isi ulang / restart nginx setelah.

Catatan: Anda dapat menggunakan metode conf.ddan sites-enabled+ sites-availablesecara bersamaan jika diinginkan. Saya suka menguji pada kotak dev saya menggunakan conf.d. Terasa lebih cepat dari symlinking dan unsymlinking.

elbowlobstercowstand
sumber
13
Inti dari "mess" yang terhubung adalah Anda dapat menyimpan file konfigurasi dan tetap menonaktifkan host virtual dengan sangat mudah. Jika Anda menggunakan pendekatan Anda, Anda harus memindahkan file dari conf.d ketika Anda ingin menonaktifkan situs yang saya pikir tidak kurang berantakan daripada dengan mudah menghapus symlink.
bviktor
@ Bviktor saya dengar ya. Saya sebenarnya menggunakan kedua cara itu. Saya baru saja merasa lebih membosankan [ketika menguji konfigurasi] untuk bangkit bolak-balik antara situs-situs yang tersedia dan direktori-situs yang diaktifkan. Dalam produksi saya, saya berencana menggunakan symlinking.
elbowlobstercowstand
1
Ya, saya setuju, mengetik ln -s ../sites-available/...agak membosankan ketika dengan cepat menguji barang-barang, tetapi dalam jangka panjang ini berguna dan lebih mudah untuk dikelola :)
bviktor
@ Bviktor Sangat berterima kasih atas kemampuan untuk dapat menekan tab di terminal saat menulis nama jalur dan menonton lengkapi-otomatis melakukannya. Tidak tahu tentang itu selama beberapa saat sampai saya menonton video dengan seseorang yang menggunakannya. Saya pikir mereka mengetik 300 wpm! Lalu aku menangkap. :)
elbowlobstercowstand
12
@bvktor Hanya situs dengan ekstensi .conf yang disertakan. Jika Anda tidak ingin situs diaktifkan, cukup tambahkan ekstensi .disabled ke file konfigurasi situs. Itulah konvensi standar di CentOS / Apache dan itu akan berlaku untuk Nginx juga.
SenG
0

Saya mencoba sudo apt install nginx-full. Anda akan mendapatkan semua paket yang dibutuhkan.

Amit Shrestha
sumber