Onlangs kwam ik het probleem tegen dat ik niet met FTP op een bepaalde server kon komen. Dat is vervelend, want dat betekende dat ik
Zend Studio niet kon gebruiken. Ik had wel toegang via SSH, dus leek mij de enige manier om bestanden te bewerken joe of vi of iets degelijks te gebruiken. Niet erg als je even iets moet aanpassen, maar ik denk dat iedereen het er over eens is dat ontwikkelen of bugfixen heel wat makkelijker gaat als je een grafische omgeving tot je beschikking hebt. Daarom ging ik op zoek naar een oplossing: is het mogelijk een map op die server te mounten via SSH?
De oplossing in mijn geval was SHFS (SHell FileSystem Linux kernel module), een project dat ooit door iemand is gestart in opdracht van een universiteit in Praag. Een uit de hand gelopen afstudeeropdrachtje dus. Voor meer info zie:
http://shfs.sourceforge.net/
Hoewel ik linux (
Ubuntu edgy) op mijn werkstation heb geïnstalleerd ben ik geen linux kenner in hart en nieren. Ik kan de eenvoudige dingen maar als het te ingewikkeld word haak ik af. Toen ik 'kernel module' alleen nog maar las had ik de moed eigenlijk al bijna opgegeven. Dingen met kernels zijn over het algemeen ingewikkeld en tot op zekere hoogte risicovol. Toch maar eens geprobeerd, en wat bleek? Het is super makkelijk om SHFS aan de praat te krijgen onder Ubuntu! Onderstaand verhaal geldt waarschijnlijk trouwens ook voor andere linux installaties, zeker als ze
debian-achtig zijn. Hieronder staat hoe ik het gedaan heb:
Stap 1:
Eerst de broncode van SHFS ophalen:
sudo apt-get install shfs-source
Stap 2:
Vervolgens nog wat opgehaald. Dit package bevat libraries die door shfs gebruikt worden - zoals SSH ondersteuning:
sudo apt-get install shfs-utils
Stap 3:
Vervolgens kun je shfs laten builden en installeren door de module-assistant. Als je nog nooit met de module-assistant hebt gewerkt moet je eerst het volgende commando uit te voeren:
sudo module-assistant prepare
Als je dit niet doet zul je onderstaande commando's niet uit kunnen voeren. Weet je niet zeker of je deze stap moet uitvoeren? Ga dan gewoon verder met stap 4; de module-assistant zal het je vertellen als je eerst module-assistant prepare moet doen.
Stap 4:
Nu de module-assitant klaar is voor actie kunnen we de sourcecode die we zojuist hebben opgehaald builden. Niks moeilijks met configure en make en make-install ofzo, maar gewoon zo:
sudo module-assistant build shfs
Stap 5:
Tenslotte het installeren, op een vergelijkbare manier:
sudo module-assistant install shfs
En klaar! Nu kun je SSH mounts maken op de volgende manier:
sudo shfsmount <user>@<server>:/map/op/de/server/ /mnt/mijnmount -o rmode=777
De laatste optie is overigens nodig om iets met de mount te kunnen doen; je kunt shfsmount alleen als root uitvoeren, wat inhoud dat er standaard een mount wordt aangemaakt met als owner 'root' en rechten 700. Niet erg handig als je er als 'gewone' gebruiker in wilt. Misschien is er een andere manier, bijvoorbeeld door met een bepaalde optie de user te veranderen - maar rmode=777 werkt voor mij. Er komt tenslotte toch niemand anders op mijn werkstation dus ik hoef me niet echt heel erg druk te maken over security issues. Als je dit gebruikt op een server waar meer mensen komen wil je dit waarschijnlijk anders hebben. Je zou in dat geval even wat dieper in de handleiding moeten duiken. Na het installeren kun je uiteraard typen 'man shfsmount' voor de manual met alle mogelijkheden die er zijn (en dat zijn er heeeel veeeel).
En wat heb je nu dan?
Ik heb een mapje op mijn werkstation met daarin de bestanden van de remote server. Als ik daar iets in verander dan veranderd het op de server, kortom: het lijkt net of ik lokaal aan het werk ben maar dat is niet zo. Bovendien ziet Zend Studio een project dat ik aanmaak via deze mount ook als lokaal project, en biedt dus dezelfde voordelen (autocompletion, CTRL+click enzovoorts). Het enige nadeel is dat ik 'controleer geopende bestanden voor lokale wijzigingen' uit heb moeten zetten, omdat deze om een of andere reden heel vaak aangaf dat er bestanden verdwenen of verwijderd waren terwijl dit niet zo was.
Ik heb Microsoft Windows. Kan ik dit nou ook?
Ik weet niet of er vergelijkbare software is voor windows, maar ik weet wel een andere
oplossing 