Moje konto

Podstawy SSH dla Webdeveloperów

16 maja, 2015
Podstawy SSH dla Webdeveloperów

Jesteś webdeveloperem, ale Twoim najczęstszym narzędziem styczności z serwerem jest FTP? Dobrze znać choćby podstawy basha i tego, w jaki sposób do pracy wykorzystać terminal – w tym prostym wpisie pokażę Ci jak za pomocą kilku prostych poleceń szybko i bezboleśnie przenieść nawet dużą aplikację na inny serwer.

SSH pozwala na wykonywanie wszystkich komend na serwerze, między innymi takich jak kopiowanie plików, zipowanie określonych katalogów czy też ich wypakowanie. Za pomocą skryptów te działania możemy również automatyzować. Gdy poznasz już podstawowe komendy SSH będziesz mógł wykonać wiele operacji, które do tej pory były kłopotliwe.

Wyobraź sobie, że Twoja strona na wordpress, jest przenoszona przez FTP. Plik po pliku przesyłana duża ilość załączników. Może to z powodu samego procesu trwać bardzo długo. Analogicznie w przypadku SSH, nawet z zablokowanymi możliwościami przenoszenia plików możesz to zrobić znacznie szybciej. Po pierwsze, spakujemy wszystkie pliki do zipa, następnie je przeniesiemy, szybko – jako jedno archiwum, by w końcu wypakować i w kilka sekund wykonać deploy projektu.

Jeśli korzystasz z systemu linux, lub mac – posiadasz już systemowy terminal, z którego skorzystamy lokalnie. Jeśli używasz windowsa, zainstaluj narzędzie Putty – zastąpi Ci ono systemowy terminal, dodając narzędzia niezbędne do korzystania z przedstawionych tutaj komend. Jest to niezbędne, bo windowsowe cmd, to zupełnie inny program, niż te UNIXowe – to wyjaśnia też, dlaczego tak wielu developerów używa mac’a, czy linuxa 🙂 

Pobierz Putty na Windows: https://www.putty.org/

Lokalne przygotowanie projektu

Na początek zakładam, że zip jest zainstalowany w Twoim systemie – nie musi tak jednak wcale być. By to sprawdzić wpisz komendę zip, jeśli wyskoczy błąd narzędzie możesz z łatwością zainstalować, za pomocą 2 komend:

sudo apt-get install zip
sudo apt-get install unzip

Po pierwsze spakujmy ZIPa lokalnie. By to zrobić musimy przejść do naszego projektu na dysku. Sprawdźmy gdzie się aktualnie znajdujemy – umożliwi to polecenie pwd

pwd

Wyświetli ono aktualną ścieżkę twojego katalogu. Czas przejść do interesującego nas katalogu, załóżmy że jest to /Users/admin/project. By przejść do katalogu należy użyć polecenia cd – a więc:

cd /Users/admin/project

Jeśli jednak aktualnie znajdujesz się w swoim katalogu domowym (/Users/admin) – wykorzystaj aktualną ścieżkę i wpisz polecenie 

cd ./project

To analogiczne do tego co zrobiliśmy, istnieją specjalne ścieżki takie jak:

. – aktualny katalog

.. – katalog wyżej

. - aktualny katalog
.. - katalog wyżej

Jeśli więc jesteśmy w katalogu /Users/admin/project/wp-content możemy przejść szybko do całego projektu wpisując

cd ..

Proste – proste. Niedługo dowiesz się jak bardzo użyteczne. Na katalogu projektu wykonajmy polecenie zip.

zip -r nazwa.zip .

Utworzy on zip z wszystkimi plikami z aktualnego katalogu. Jeśli natomiast chcemy utworzyć plik z dowolnego miejsca, wcale nie musimy przechodzić do katalogu projektu – wystarczy zamiast . podać ścieżkę projektu.

zip -r nazwa.zip /Users/admin/project

Ok – to praca lokalna załatwiona 🙂

SSH na serwerze, czyli terminale wszystkich serwerów – łączmy się 😉

Zakładamy hipotetycznie, że otrzymujemy takie dane do serwera na którym aktualnie posiadamy naszą stronę:

Login: user

Hasło: supertajne

Adres SSH: ssh.cluster000.hosting.ovh.net

Port: 21 (standardowo 22, ale dla przykładu utrudnimy sobie życie)

By połączyć się przez ssh należy użyć następującej składni:

user@ssh.cluster000.hosting.ovh.net -p 21

Myślę, że wszystko jest jasne. Najpierw podajemy nazwę użytkownika, później po małpce adres a następnie podajemy port. O hasło zostaniemy zapytani od razu po połączeniu.

Przenoszenie plików między serwerami

Masz już spakowane wszystkie pliki. Czas przenieść je na inny serwer. Tutaj masz 2 możliwości – możesz to zrobić za pomocą SCP, lub standardowo, za pomocą FTP. W przypadku SCP może się jednak okazać, że spotkasz się z firewallem i ze względów bezpieczeństwa trudno będzie w ten sposób przesłać pliki. Komenda scp ma następującą strukturę:

scp login@serwer_zrodlowy:katalog login2@serwer_docelowy:katalog

Jako że nasz poradnik jest kierowany głównie do początkujących, zakładam że plik z zipem przenosimy standardowo, przez FTP. Nie każdy hosting pozwala na wykonywanie polecenia scp, stąd też łatwiej może być wykorzystać standardowego, znanego ci FTP.

Pozostaje jednak jeszcze jedna, bardzo ważna sprawa – upewnij się, że pliki które spakowałeś nie są dostępne z poziomu WWW. Gdy je pakujesz najlepiej robić to w katalogu niedostępnym publicznie (poza public_html, lub innym katalogiem bezpośrednio udostępniającym pliki). Nie chcesz przecież udostępniać całego swojego projektu, plików i pracy obcym. Na wszelki wypadek po przeniesieniu usuń pliki z FTP lub za pomocą komendy rm

rm nazwa_pliku.zip

Instalacja strony na serwerze docelowym

Zakładam, że plik ze spakowanymi źródłami udało Ci się przesłać na serwer, zostaje ostatnia sprawa – instalacja. Warto by było, byś przed rozpakowaniem plików umieścił katalog dokładnie tam, gdzie ostatecznie ma się znaleść. Możesz przenieść sam plik, możesz ustawić miejsce docelowe dla rozpakowania – wszystko zależy od Ciebie. Nie chcesz jednak męczyć się z przenoszeniem już wypakowanych plików w miejsce w które powinny być wypakowane, dlatego warto o tym pamiętać jeszcze przed wykonaniem odpowiedniej komendy.

Aby przenieść plik za pomocą konsoli możesz użyć komendy mv

mv katalog/aktualny/nazwa_pliku.zip katalog/docelowy

Czas wypakować nasze pliki, za pomocą komendy unzip.

unzip nazwa_pliku.zip

Oczywiście zakładamy, że plik znajduje się w aktualnym katalogu. Jeśli podczas wypakowania chciałbyś przenieść zawartość zipa do podanego katalogu możesz to zrobić za pomocą parametru -d.

unzip nazwa_pliku.zip -d katalog/docelowy

Pliki przeniesione i robota załatwiona. Oczywiście pozostaje jeszcze przeniesienie baz danych, maili czy innych plików, ale teraz wiesz przynajmniej jak można zrobić to szybciej 🙂

Warto poznać sposób działania SSH. Przyda Ci się to w przyszłości na Twojej dalszej developerskiej drodze 🙂 

Posted in Programowanie
Related Posts