Aynı web sitesinin / etki alanının hem yerel hem de uzak sürümlerini nasıl yapılandırabilir ve erişebilirim?


0

Şu anda harici bir uzak sunucuda barındırılan bir müşterinin web sitesinde çalışıyorum. Sitenin bir kopyasını, geliştirme sürümü olarak kullanmak üzere Arch Linux'ta kurulmuş bir 'LAMP yığını' çalıştıran yerel bilgisayarıma yükledim.

Site WordPress ile inşa edilmiştir, bu nedenle sitenin etki alanı veritabanında depolanır ve bu sitede linkler oluşturulduğunda kullanılır. Böylece, veritabanını düzenlemekten tasarruf etmek için, siteyi Apache'de sanal bir ana bilgisayarla yapılandırdım ve sunucunun alan adını 'canlı' siteyle aynı olacak şekilde ayarladım, örneğin 'vhosts.conf' dosyamda ...

ServerName    live-domain-name.co.uk
ServerAlias   *.live-domain-name.co.uk


Etki alanını yerel 'ana bilgisayar' dosyama şu şekilde ekledim:

127.0.0.1    live-domain-name.co.uk


Ne yapmak mümkün istiyorum erişmek olduğunu hem en azından bu yüzden Apache çalışan varsa sitenin benim yerel kopyasını almak olduğunu, benim tarayıcıdan siteleri, fakat Apache eğer değil o zaman çalışan ben 'gerçek' sürümü almak Sitenin!


127.0.0.1Dosyama ilk “ad sunucusu” girişi ekledim /etc/resolv.conf, ikincisi internet yönlendiricimin IP adresi ve ayrıca Goolge'nin genel DNS sunucularından birine üçüncü olarak sahip oldum. Ancak Apache çalışmıyorken $ ping ...bile etki alanı için IP 127.0.0.1 olarak gösteriliyor!


Öncelikle yerel ana bilgisayarımı kontrol edecek bir tür DNS çözümleyicisine ihtiyacım olduğunu tahmin ediyorum, ancak site bulunmazsa (yani Apache çalışmıyorsa), diğer DNS sunucularından birini kullanmaya geri dönecek! - yalnızca bir DNS sunucusu / iletici yükleme ve yapılandırma hakkında hiçbir fikrim yok ...

Biri bana yardım edebilir mi?


Dürüst olmak gerekirse, bunun 'basit' olacağını / olması gerektiğini düşündüm ... Yani "önce buraya bak, sonra buraya bakılmazsa" ... Ama sanırım DNS'nin nasıl çalıştığını anlamada başarısız oldum! :(
Chris

Yanıtlar:


2

@PiercedRichard tarafından önerilen yöntemin (yani, apache kapalıyken / etc / hosts dosyasındaki girişi sil) uygulanabilir olduğunu düşünüyorum ...

ancak live-domain-name.co.uk adresinin ip adresini localhost'a yönlendirmek için bükülmüş bir yol (iptables kullanarak) da düşünebilirim. Bunun çok daha güçlü olacağını düşünüyorum - çünkü DNS çözünürlüğü önbelleğe alınacak ve sabitleme dışında / etc / hosts dosyasının yanı sıra işletim sistemi katmanında ve bazı tarayıcılarda (örneğin firefox) dns önbelleklerini temizlemeniz gerekecek. Iptables'taki değişiklikler anında yapılmalı ...

belki bir şey (yerel yönlendirme):

iptables -t nat -A OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

kural sil (yönlendirmeyi durdur):

iptables -t nat -D OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

Apache'nin bulunup bulunmadığının tespit edilmesiyle - ya iptables kurallarını /etc/init.d/apache2 dosyasına yerleştirin -
ya da localhost'a bağlanmayı deneyen bir komut dosyası yazın: 80, tamam ise, sonra başka bir kural oluşturun. kural...


Güzel düşünce. Kullanmayı hiç düşünmezdim iptables.
Mat Carlson,

Yerel ve canlı siteler arasında değiştirmek istediğimde bir şeyi düzenlememi gerektirmeyen bir çözüm bulmayı umuyordum, yalnızca 'işe yarayan' bir şey olacak: D - Ancak bir şeyi düzenlemek zorunda kalacağım her defasında el ile '/ etc / hosts' dosyasındaki uygun satırı yorumlayıp / yorumumdan çıkarabilirim, çünkü kuşkusuz önemsiz. - Bununla birlikte, çözümünüz gerçekten bazı avantajlar sunuyor ve sadece teknik yararı için + 1'ledi! :)
Chris

0

Çoğu işletim sistemi, hostsbir DNS sunucusu bulmayı denemeden önce dosyalarından çözümlenir . Bu satırı kaldırır (veya yorum yaparsanız) hosts, DNS sunucusunu sorgular ve bunun uzak bir IP olduğunu bulur.

Ayrıca değiştirmeniz gerekebilir hostnameaynı şekilde ayarlanmış sanki, hostname(en azından Linux bazı sistemler tarafından) yanı IP'leri çözmek için kullanılabilir.

hosts.conf man page - orderDirektif hakkında daha fazla bilgi edinin .


DNSmasq config dosyasında 'ana bilgisayar' dosyasını ("ana bilgisayar yok") okumasını engelleyen bir seçenek var, bu kesinlikle ilk önce DNS'nin işlendiğine işaret ediyor? - Bununla birlikte, 'host.conf'umda' hosts, bind 'olarak yapılandırılmış sipariş yönergesi var!
Chris

1
Alternatif cevabım live-domain-name.co.uk.intbunun yerine ayrı bir sunucu takma adı kullanmaktır - Yani test siteniz genel olmayan alandır ve canlı siteniz değişmeden kalır. Ayrıca test.live-domain-name.co.uk, test sunucunuzun IP’si olan bir DNS A kaydına sahip olan da oluşturabilirsiniz - Daha sonra, sunucuya erişebileceğiniz herhangi bir yere erişebilirsiniz. Çoğu şirket test için birkaç alt etki alanı çalıştırır - Bazen halka açık web'de, ancak parola isteminin arkasında bulunur.
Mat Carlson,

1
DNSMasqDNS sunucusu Bindolarak çalışır , oysa sisteminizde bir DNS istemcisi olarak çalışır (sunucu bileşenini kurup / etkinleştirmediyseniz). Bilgisayarınız muhtemelen ana bilgisayarları ve ardından Bağları okumak üzere ayarlanmıştır. Bind, daha sonra, birincil DNS sunucunuz olan DNSMasq'ı kendisiyle kontrol eder; bu, isteği iletmeden önce girişlerinizi okur (ana bilgisayarlarda bulunmazsa).
Mat Carlson,
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.