Tworząc strony internetowe praca na zdalnych plikach jest praktycznie koniecznością. Owszem – najlepiej jest pracować lokalnie (dodając do tego system kontroli wersji), a dopiero gotową wersję projektu wrzucać na serwer. W praktyce drobne poprawki bezpośrednio na serwerze są nieuniknione przy wielu witrynach. Pracując pod windows, moim niedoścignionym marzeniem była praca na plikach zdalnych dokładnie tak samo, jakby to były lokalne. Niestety, pomimo wielu prób i poszukiwań, nie udało mi się tego osiągnąć. Pod linuxem również, opcji jest kilka. Jednak już ta najbardziej standardowa, wbudowana w system, jest o niebo wygodniejsza niż to, co udało mi się uzyskać pod okienkami.
Co mamy na starcie
W domyślnej instalacji ubuntu menedżerem plików jest nautilus. Pozwala on na nawiązywanie połączeń FTP – udziały serwera są podmontowywane jak lokalne katalogi. Obsługuje on także systemowe przechowywanie haseł do serwerów – nie trzeba za każdym razem od nowa wprowadzać danych logowania. I wszystko byłoby ładnie i pięknie, gdyby nie dwa minusy
- Webdeveloper to człowiek z natury leniwy. Dlaczego za każdym razem mam wprowadzać adres serwera przed połączeniem?
- Jak to z FTPami bywa – połączenie jest zamykane po określonym czasie braku aktywności. Przy pracy na zdalnych plikach jest to nieco denerwujące.
Z problemem pierwszym jakoś się pogodziłem. Na problem drugi recepta jest następująca – skrypt podtrzymujący połączenie. Tworzymy sobie nowy plik tekstowy (u mnie jest to [cci].keepalive[/cci] w katalogu domowym) i piszemy w nim:
[code]
#!/bin/bash
while true
do
#10.10 and earlier
ls ~/.gvfs/ftp* &> /dev/null
#11.04+
ls ~/.gvfs/FTP* &> /dev/null
sleep 15
done
[/code]. Następnie nadajemy plikowi prawa do wykonywania
[code]sudo chmod +x ~/.keepalive[/code]
i dodajemy go do autostartu (programy startowe w Panelu Głównym Unity). Od tej chwili połączenie nam się nie będzie zrywało.
Dla bardziej ambitnych (leniwych)
Ostatnio trafiłem jednak na jeszcze jeden sposób. Dzięki niemu często używane serwery FTP mam dodane do listy urządzeń (jak np. zewnętrzne dyski twarde czy partycje windows) i montowane jednym kliknięciem. Potrzebujesz do tego [cci]curlftpfs[/cci]. U mnie był już zainstalowany, jeżeli go nie masz, to pobierz go [code]sudo apt-get install curlftpfs[/code]. Po zainstalowaniu edytuj plik [cci]/etc/fuse.conf[/cci] odkomentowując w nim ostatnią linijkę [code]user_allow_other[/code]. Następnie utwórz katalog, w którym będziesz montował udział FTP i nadaj mu prawa dostępu dla użytkownika.
[code]
sudo mkdir /media/ftp_mojserwer
sudo chmod 777 /media/ftp_mojserwer
[/code]
Teraz otwierają się przed tobą dwie drogi:
Hasła przechowywane w fstab
Niestety nie da się z niej skorzystać z tej opcji, jeżeli Twoje hasło składa się ze znaków innych niż litery i cyfry. Pamiętaj także, że wyświetlić plik [cci]/etc/fstab[/cci] może każdy użytkownik komputera. Jeżeli jesteś w stanie z tym żyć, dodaj na końcu swojego pliku [cci]fstab[/cci] poniższą linijkę, zmieniając dane serwera:
[code]curlftpfs#login:[email protected] /media/ftp_mojserwer fuse rw,allow_other,noauto,user 0 0[/code]
Hasła przechowywane w osobnym pliku
Ta opcja jest odrobinę bezpieczniejsza, nadal jednak ten plik musi być udostępniony dla użytkowników, więc bym nie ryzykował na współdzielonej maszynie. Jeżeli masz w haśle dziwne znaczki – to jest to opcja dla Ciebie. Tworzymy plik [cci]/root/.netrc[/cci] według schematu:
[code]
machine ftp.mojserwer.pl
login mojlogin
password mojehaslo
[/code]
i udostępniamy ten plik
[code]
sudo chmod o-rw /root/.netrc
[/code]
Teraz dodajemy do [cci]/etc/fstab[/cci] dane serwera do połączenia:
[code]curlftpfs#ftp.serwer.pl /media/ftp_mojserwer fuse rw,allow_other,noauto,user 0 0[/code]
Kończymy montowanie
Każemy systemowi ponownie odczytać plik [cci]/etc/fstab[/cci]
[code]sudo mount -a[/code]
I cieszymy się listą serwerów montowanych na jedno kliknięcie. Można oczywiście zamienić [cci]noauto[/cci] na [cci]auto[/cci] w [cci]/etc/fstab[/cci] i kazać systemowi montować serwery automatycznie, jednak nie zawsze laptop ma dostęp do internetu i czasami znacząco spowolni to system.
Dla ceniących bezpieczeństwo
i pracujących na współdzielonej maszynie jest jeszcze jedno rozwiązanie. Tworzymy według schematu powyżej plik [cci]~/.netrc[/cci] – zapisany w naszym katalogu domowym będzie bezpieczny. Następnie tworzymy skrypcik, który będzie po uruchomieniu montował nasze serwerki, podając w każdej linijce osobny serwer:
[code]
sudo curlftpfs -o allow_other ftp.mojserwer.pl /media/ftp_mojserwer
[/code]
Zapisujemy skrypcik (np. na pulpicie) i nadajemy mu prawa do wykonywania
[code]sudo chmod +x ~/Pulpit/ftps[/code]
Dwukrotne kliknięcie tego pliku zapyta o hasło (trzeba mieć uprawnienia roota, żeby montować zasoby spoza [cci]/etc/fstab[/cci] i podmontuje nasze serwerki. Nie polecam korzystania ze skróconej formy montowania:
[code]sudo curlftpfs -o allow_other login:[email protected] /media/ftp_mojserwer[/code]
bez udziału pliku [cci]~/.netrc[/cci], ponieważ wówczas listując aktywne procesy można w jawny sposób odczytać dane logowania (gdy kilka osób naraz korzysta z komputera):
[code]ps aux | grep curlftpfs[/code]
Leave a Reply