Selamlar;
Önsöz : Genelde Virtualbox üzerinde kurduğumuz Ubuntu’lar ile ilgili dosya işlemlerini macosx’imde bulunan kod editörleri ile yapmak istiyordum. Bu sebeple kendime böyle bir ortam kurmam gerekti. Bu işlemi yaparken virtualboxımda 2 adet ethernet interface tanımlıyorum. İlk interface’i NAT olarak ayarlıyorum, 2. ethernet interface’ini ise, ipsi hiç değişmeyecek olan (ve değişmesine ihtiyaç da olmayan) host only adapter ile yapıyorum. Böylece İlgili NFS paylaşımını sadece host-only yapmış oluyorum ve networkte güvende oluyorum. ilgili virtualbox internete NAT üzerinden çıkıyor ve benim 2. interface’im sadece bana özel olmuş oluyor. Bu kısımda siz ihtiyacınıza göre bir ayar yapabilirsiniz.
Neden NFS? Klasör paylaşımı olmaz mı?
Aslında olur. Ancak ben web uygulaması için performans kaybı veya yavaşlık yaşamak istemiyorum ve ortak klasörde bu sefer ubuntu tarafında yavaşlıklar yaşıyorum ve bunu gerçekten istemeyeceğim boyutta yaşamaktaydım.
Haydi Başlayalım ;
Öncelikle Bu işlemleri yaptığım işletim sistemlerini belirteyim
Host : MacOsx 10.11.4 (El Capitan)
Client : Ubuntu 14.04.4 LTS
1- Client için Ubuntu üzerinde gerekli programın kurulması:
Aşağıdaki komut ile bu işlemi yapıyoruz.
apt-get install nfs-common
2- Macosx üzerinde export işleminin yapılması
sudo nano /etc/exports
ile açtığımız dosyaya aşağıdaki (veya benzer) bir satır ekliyoruz. Benim örneğimde /usr/local/share/web/custom adlı dizini NFS üzerinden yayına açıyoruz.
/usr/local/share/web/custom -alldirs -mapall=emre:admin -network 192.168.56.0 -mask 255.255.255.0
Burada, -mappall parametresinde benim macosx üzerindeki user ve grubum yer almakta. -network ile belirttiğim parametrede host-only adaptörümüzün ilgili IP range’i yer almakta.
Son olarak, macosx te default olarak var olan Nfsd uygulamasını restart ediyoruz.
sudo nfsd disable
sudo nfsd enable
3- Ubuntu üzerinde ilgili ayarların yapılması
1. maddede gerekli olan nfs-common paketini kurduktan sonra
İlgili klasörü ubuntuda nereye map etmek istiyorsak, buraya bir klasör oluşturuyoruz. Ben /home/web/custom adlı bir yere oluşturacağım.
mkdir -p /home/web/custom
sudo nano /etc/fstab
ile ilgili dosyayı açıyoruz ve içerisine yukarıdaki ayarlara istinaden şu satırı ekliyoruz.
192.168.56.1:/usr/local/share/web/custom /home/web/custom nfs defaults 0 0
ve daha sonra
mount -a
komutu ile mount işlemini tamamladım.
4- Deneyelim
Şimdi macosx üzerinde bir dosya oluşturalım ve ubuntu üzerinde de görebildiğinizden emin olalım.
5- User eşleşmesi (Opsiyonel)
Ben bir web uygulaması çalıştıracağım için yetkilerle ilgili problem yaşamak istemediğimden dolayı, macostaki dosyalarımın hepsini, ubuntudaki www-data user’ına map etmek istiyordum. Bunu normalde parametrelerle yapabileceğimiz gibi, ben yaşadığım birkaç problemden sonra şöyle bir trick buldum.
Ubuntu üzerinde denemek için oluşturduğumuz ilgili dosyanın user ve grubuna bakalım. ls -l komutu ile baktığımızda ilglii user ve grup idlerini görebiliriz.
Ubuntu üzerinde önceden apt-get install nginx ile nginx kurunca kendiliğinden oluşan www-data user ve grubu olduğundan dolayı, /etc/passwd dosyasına gittim ve www-data ya ait id yi bu id ile değiştirdim. Aynı şeyi /etc/group dosyasında www-data user’ının grubunu da değiştirerek tamamladım.
Artık macosxte oluşturduğum yeni bir dosyanın, ubuntu tarafında www-data user ve grubuyla oluştuğunu görüyorum.
Sonuç
Böylece artık editör üzerinde taklalar atmaktan (remote sunucu ayarları vb..) kurtarıp, doğru düzgün bir ayar ile workbench imizi güzelce kurabiliyoruz. Veyahut da versiyon kontrol sistemleri üzerinden sürekli git push – pull lar beklemek zorunda kalmıyoruz. Güle güle kullanıyoruz.