Instalacja - Skonfiguruj VPS / VDS od podstaw za pomocą PHP7

  1. O VPS Ten przewodnik opisuje pełny proces konfiguracji VPS dla twoich stron internetowych, na twoim...
  2. Przydatne narzędzia
  3. Usługi

O VPS

Ten przewodnik opisuje pełny proces konfiguracji VPS dla twoich stron internetowych, na twoim wirtualnym serwerze pod Linuksem, używając Apache, PHP 7, MySQL, phpmyadmin, vsftpd jako FTP i innych małych narzędzi. Wszystko, co znalazłem w Internecie lub nie było kompletne, lub w niektórych miejscach nie pasowało do współczesnych realiów. Przeniosłem moją witrynę ze zwykłego hostingu wirtualnego, ponieważ opierałem się ograniczeniom większości hosterów.

Jeśli planujesz sprzedać hosting lub zainstalować panel sterowania (ISP Manager, cPanel , Plesk itp.), ta metoda konfiguracji nie będzie działać. Ustawienia tego wdrożenia są różne. PHP7 ma wiele poważnych zalet w zakresie szybkości i optymalizacji w porównaniu z PHP 5. Moje projekty na WordPress, na przykład, działają znacznie szybciej. Ważne jest, aby wiedzieć: jeśli nie masz dobrze znanego systemu CMS z najnowszymi aktualizacjami, ale pewnego rodzaju autoprezentowanego projektu, który nie jest zoptymalizowany dla PHP7, możliwe są niespójności.

W tym przewodniku używam Ubuntu Server 14.04.4 LTS, również wszystko opisane tutaj jest odpowiednie dla VPS VDS w innych dystrybucjach podobnych do Debiana. Rozumie się, że masz podstawową wiedzę na temat Linuksa i wiesz, jak pracować z konsolą terminalową. Częściowo wyjaśnię podstawy, ale nadal.

Dostosuj

Mamy więc świeżo zainstalowany system VPS i dostęp SSH. Zaloguj się do serwera jako root.

1. Utwórz użytkownika. Pracuj pod korzeniem bez potrzeby - znak głupca.

użytkownik adduser

Gdzie użytkownik - zmieniamy Twój przyszły login. Odpowiadamy na pytania systemu, wymyślamy skomplikowane hasło, Twój login będzie głównym hasłem do zdalnego sterowania systemem, odłączymy roota od zdalnego terminala ze względów bezpieczeństwa.

2. Dodaj naszego stworzonego użytkownika do grupy sudo, aby wykonać polecenia z poziomu roota:

usermod -a użytkownik -G sudo

Dodatkowo dodaj się do grupy administratorów:

sudo usermod -aG adm YourUserName

3. Wyloguj się i zaloguj za pomocą nowo utworzonego użytkownika w SSH. Od teraz, jeśli będziemy musieli wykonać polecenie w imieniu roota, używamy argumentu sudo przed pozostałymi operandami polecenia (przykłady poniżej).

4. Po opublikowaniu adresu strony internetowej serwera VPS, wszystkie rodzaje hakerskich botów zaczną przewracać cię do portu 22. Dlatego zabezpieczymy terminal VPS, zmieniając port z 22 na inny. Jako nowy port wpisz dowolną liczbę od 1 do 65535. Nie możesz użyć portów 80, 443, 3306, 22, 21 i 8080. Są one używane do innych usług naszego VPS.

sudo nano / etc / ssh / sshd_config

Nano - konsola „notebook”. Z pewnością już go znasz, ale przypominam sobie podstawowe kontrolki: Ctrl + X - wyjdź, Ctrl + O - zapisz, Ctrl + W - wyszukaj, strzałki - przesuń kursor.

Szukamy linii „Port 22” w otwartym pliku, zwykle jest on bezpośrednio na górze. Zmień 22 na wybrany port. Następnie przewijamy przycisk PgDn na dole pliku i dodajemy każde polecenie z nowej linii:

AddressFamily inet PermitRootLogin no AllowUsers user

Pierwsze polecenie ogranicza tylko połączenia ze standardem IPv4, wyłączając niepotrzebne IPv6. Drugi zakaz logowania do terminala pod rootem. Trzeci nie pozwala nikomu na logowanie się, z wyjątkiem ciebie - zastąp swoją nazwę użytkownika zamiast użytkownika.

Zapisz i zamknij, jak pokazałem powyżej. Od tej chwili wszystkie zmiany w plikach będą przebiegać według tego scenariusza. Uruchom ponownie terminal zdalny, aby zastosować ustawienia:

sudo service ssh restart

5. Odłącz się od terminala (wyloguj) i ponownie połącz się z serwerem za pomocą nowego portu.

6. Zaktualizuj źródła aplikacji i same aplikacje:

sudo apt-get update && sudo apt-get upgrade

Zgadzamy się zainstalować aktualizacje, naciskając klawisz Y i Enter.

7. Jeśli nie masz najnowszej wersji systemu, warto zaktualizować dystrybucję przed ostatnim wydaniem podrzędnym (krok opcjonalny):

sudo apt-get dist-upgrade

8. Przyspieszamy ogólną pracę systemu - Prelink i Preload. Prelinkowanie jest potrzebne do tworzenia statycznych adresów dla bibliotek, Preload to mała aplikacja, która monitoruje pliki najczęściej używanych aplikacji i wczytuje je do pamięci, gdy system jest bezczynny.

sudo apt-get install prelink sudo apt-get install preload

Następnie musisz włączyć Prelinkowanie:

sudo nano / etc / default / prelink

Otworzy się znajomy Nano i zmieni linię z PRELINKING = nieznana PRELINKING = tak. Nie zapomnij zapisać przed zamknięciem, pamiętasz już, co? Następnym krokiem jest dodanie codziennego uruchomienia do harmonogramu cron:

sudo /etc/cron.daily/prelink

9. Z presetami systemu, na razie zakończ, umieść Apache:

sudo apt-get zainstaluj apache2

Włącz także mod_rewrite. Z jakiegoś powodu jest domyślnie wyłączony w większości systemów. Odpowiedzialny za przepisywanie linków biliberdovyh w pięknym krótkim czasie. Krytyczne dla pracy wielu witryn.

sudo a2enmod przepisać

10. Następnie serwer MySQL:

sudo apt-get install mysql-server

Instalacja może poprosić o adres twojego serwera, określ localhost, jeśli nie przypisałeś jeszcze domeny zewnętrznej. Ustawiamy również główne hasło do bazy danych, złożone, liczby liter - różne przypadki. Jeśli jeszcze tego nie odgadłeś, przypominam - wszystkie hasła logowania powinny być rejestrowane i przechowywane w bezpiecznym miejscu.

Najnowsza wersja serwera MySQL jest poprawnie skonfigurowana do pracy w naszym środowisku, przyjmuje żądania tylko z lokalnego hosta. Dlatego nie wchodź do konfiguracji.

11. Umieściliśmy php7. W czasie pisania tego tekstu repozytoria plików Ubuntu nie zawierają PHP7, więc musimy dodać nieoficjalne repozytorium i zainstalować z niego php7:

sudo add - apt - repozytorium ppa: ondrej / php

Pod koniec dodawania poproś o ostateczne porozumienie, potwierdź klawiszem Y i Enter. Następnie zaktualizuj listę aplikacji i zainstaluj niezbędną:

sudo apt-get update sudo apt-get zainstaluj php7. 0 - cli php7. 0 - wspólny libapache2 - mod - php7. 0 php7. 0 php7. 0 - mysql php7. 0 - fpm php7.0-mbstring php7.0-gd php7.0-curl

Zestaw modułów tutaj jest określany przeze mnie eksperymentalnie. Wszystkie źródła są różne, gdzieś nie ma mbstringu, ale jest to potrzebne dla phpmyadmin, admin dla MySQL. Gdzieś nie ma curl i gd, ale są one potrzebne do captcha i niektórych wtyczek CMS. W każdym przypadku dodatkowe moduły mogą być zawsze dostarczane po.

12. Skonfiguruj Apache. Idź (cd) do katalogu z ustawieniami Apache:

cd / etc / apache2

Edytuj główny plik konfiguracyjny:

sudo nano apache2.conf

Już ustawione zmienne nie dotykają, przewiń do końca pliku. Tam dodajemy każde polecenie z nowej linii:

ServerName localhost ServerSignature Off

Spowoduje to ustawienie domyślnego hosta do samodzielnego określania Apache (localhost) i wyłączenie wyświetlania wersji systemu i serwera na stronach błędów. To jest niebezpieczne. Jak zawsze, zapisz, zamknij.

13. Dostosujmy PHP.

cd /etc/php/7.0/apache2 sudo nano php.ini

Wiele skryptów używa krótkiego tagu otwierającego zamiast pełnego, więc włączamy tę opcję, zastępując Wyłącz z Włączone (odtąd wskazuję, jak powinno być, a nie jak to było):

short_open_tag = On

Rozszerzamy limity pamięci i wysyłanych plików:

memory_limit = 128M post_max_size = 64M

14. Zainstaluj phpmyadmin. Jest to graficzny panel zarządzania bazą danych MySQL. Po raz pierwszy umieściłem go z repozytorium apt, ale nie wystartował. Okazało się, że repozytoria ubuntu nie zawierają najnowszej wersji phpmyadmin, która rozumie PHP7, ponieważ sam PHP7 również nie istnieje w tych repozytoriach.

Najlepiej zainstalować w / usr / share:

cd / usr / share

Pobieranie w momencie pisania najnowszej wersji 4.6.0:

sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.zip

Zainstaluj rozpakuj, będziesz go potrzebował:

sudo apt-get install rozpakuj

Rozpakuj:

sudo unzip phpMyAdmin-4.6.0-all-languages.zip

Zmień nazwę folderu:

sudo mv phpMyAdmin-4.6.0-all-languages ​​phpmyadmin

Prawa do kijów:

sudo chmod - R 0755 phpmyadmin

Edytuj plik konfiguracyjny apache, aby wiedział, skąd pobrać nasz phpmyadmin:

sudo nano / etc / apache2 / sites - dostępny / 000 - domyślnie. conf

Po „DocumentRoot / var / www / html” dodajemy linie:

Alias ​​/ phpmyadmin "/ usr / share / phpmyadmin /" <Katalog "/ usr / share / phpmyadmin /"> Zezwalaj na wszystkie Wymagane wszystkie udzielone </ Directory>

Wszystko jest gotowe, uruchom ponownie Apache:

sudo service apache2 restart

15. Po wszystkich manipulacjach otworzy się strona testowa Apache w przeglądarce pod adresem twojego serwera, a phpmyadmin będzie dostępny pod adresem http: // yoursite / phpmyadmin. Zaloguj się do roota, hasło - określone podczas instalacji MySQL.

16. Utwórz stronę phpinfo do sprawdzania działania serwera:

cd var / www / html sudo mkdir phpinfo cd phpinfo sudo nano index.php

Wklej ten kod do Nano i zapisz:

<? php phpinfo (); ?>

Teraz pod adresem http: // yoursite / phpinfo należy otworzyć stronę serwisową z informacjami o PHP i podłączonych modułach, na przykład:

Teraz pod adresem http: // yoursite / phpinfo należy otworzyć stronę serwisową z informacjami o PHP i podłączonych modułach, na przykład:

Jeśli wszystko działa i jest wyświetlane, ukryj phpinfo, zmieniając nazwę tego folderu na znaną tylko biliberdę:

cd / var / www / html sudo mv phpinfo phpinfo312341

Bezpośredni dostęp znaną ścieżką - dziura w bezpieczeństwie VPS.

17. Umieść FTP. Użyj vsftpd:

sudo apt-get zainstaluj vsftpd

Konfiguracja reguły:

sudo nano /etc/vsftpd.conf

Upewnij się, że parametry w tym pliku są takie, jak pokazano poniżej. Jeśli parametry są komentowane znakiem #, usuń komentarz, usuwając #. Jeśli nie ma parametru, dodaj ręcznie do końca pliku:

anonymous_enable = Nie local_enable = TAK write_enable = YES

Uruchom ponownie ftp:

usługa sudo vsftpd restart

Następnie możesz zalogować się do serwera za pomocą FTP, używając loginu i hasła z systemu. Dzięki tej konfiguracji będziesz mieć dostęp do całego systemu operacyjnego. Jeśli musisz ograniczyć dostęp do folderów, poszukaj podręczników w Internecie.

18. Kopia zapasowa. Alpha i Omega admin VPS. Kopie zapasowe należy wykonywać co najmniej raz w tygodniu. Poniższy skrypt tworzy archiwum folderów kopii zapasowych / var / www (gdzie zazwyczaj znajdują się witryny), / etc, / var / log i / root. Utwórz również kopię zapasową wszystkich baz danych MySQL. Skrypt powinien zostać wykonany w imieniu roota z folderu, w którym będą przechowywane kopie zapasowe. Zaleca się również dodanie pliku skryptu do crona. Właściwie to skrypt:

#! / bin / bash USER = root # użytkownik bazy danych HASŁO = hasło # hasło BACKUP = / media / Kopia zapasowa # gdzie zapisać kopie zapasowe LOG = / var / log # katalog do czyszczenia starych dzienników OLD = 30 # ile dni zachować kopie zapasowe (więcej stare zostaną usunięte) PREFIX = praca # jeśli kilka serwerów - użyj różnych prefiksów, aby uniknąć pomyłki DATE = `data '+% Y-% m-% d'` echo" Utwórz kopię zapasową bazy danych do $ BACKUP "mkdir $ BACKUP / $ DATE. sql cd $ BACKUP / $ DATE.sql dla i w `mysql -u $ USER -p $ HASŁO -e-show bazy danych; ' | grep -v information_schema | grep -v Baza danych`; do mysqldump -u $ USER -p $ HASŁO $ i> $ DATE- $ i.sql; done cd .. tar -cjf $ BACKUP / $ DATE-sql- $ PREFIX.tar.bz2 ./$DATE.sql rm -rf ./$DATE.sql echo "Pliki kopii zapasowej do $ BACKUP" tar -cjf $ BACKUP / $ DATE-files- $ PREFIX.tar.bz2 / var / www / / etc / / var / log / / root / --exclude = $ BACKUP echo „Usuwanie starych kopii zapasowych i dzienników z $ BACKUP i $ LOG "znajdź $ LOG-typ f (-name" * .gz "-o -name" * .1 * ") -exec rm '{}'; znajdź $ BACKUP -mtime + $ OLD -exec rm '{}'

Należy pamiętać, że kilka pierwszych wierszy skryptu należy zmienić zgodnie z konfiguracją MySQL.

Załóżmy, że mamy folder / kopię zapasową w katalogu głównym i będzie on zawierał zarówno skrypt, jak i same kopie zapasowe. Przejdź do katalogu głównego systemu plików:

cd / sudo mkdir backup cd backup sudo nano start.sh

I wklej tam skrypt. Zapisz, przypisz go do pliku wykonywalnego:

sudo chmod + x start.sh

Teraz za pomocą polecenia:

sudo ./start.sh

Rozpoczniemy proces tworzenia kopii zapasowej. W przypadku przeciętnej witryny o średnim VPS trwa to 5-10 minut. Po zakończeniu procesu w folderze / backup pojawi się kilka archiwów kopii zapasowych. Jak już wspomniałem powyżej, najlepiej wypakować ten skrypt do crona. Google, jak to zrobić.

Na tym kończy się podstawowa konfiguracja serwera - mamy w pełni funkcjonalny, nowoczesny i wydajny serwer WWW na VPS. Nie poruszyłem kilku drobnych problemów związanych z konfigurowaniem dostępu na serwerze internetowym, ponieważ administratorzy często robią to na zwykłym wirtualnym hostingu, który z czasem staje się VPS.

Przydatne narzędzia

Warto wspomnieć o kilku użytecznych narzędziach, których używam w administracji, a które mogą być przydatne dla ciebie.

WP-CLI

Jest to narzędzie wiersza polecenia do administrowania WordPress z konsoli terminalu Linux. Wie, ile należy wykonać kopię zapasową, skopiować dane w bazie danych, wyłączyć i włączyć wtyczki i tak dalej. Jest to bardzo przydatne w przypadkach konfliktu wtyczek lub zagnieżdżenia się, a panel administracyjny witryny przestał działać. Czytaj więcej tutaj .

Multitail

Program do odczytu logów z zaawansowanym wyjściem. Wyświetla zawartość plików dziennika i umożliwia monitorowanie ich zmian w czasie rzeczywistym z podświetlaniem składni. Patrzymy tutaj .

Htop

Pełna analogia Menedżera zadań z systemu Windows dla konsoli terminala. Bardzo przydatna rzecz do monitorowania procesów, pamięci, ładowania i zarządzania procesami. Umieść zespół:

sudo apt-get install htop

I wezwał (kto by pomyślał) polecenie:

szczyt

Szyfrujmy

Bezpłatna usługa wydawania certyfikatów SSL. Świetna opcja do przetłumaczenia witryny na https. Więcej w moim osobnym artykule. tutaj .

Usługi

Jeśli to wszystko jest dla Ciebie trudne, nie jesteś pewny siebie lub chcesz uzyskać dodatkowe wsparcie, jestem gotów podjąć się przeniesienia twojego projektu na VDS VPS lub serwer dedykowany. Ponad 5 lat doświadczenia w administrowaniu projektami sieciowymi i internetowymi. W prawdziwym życiu pracuję jako administrator systemu. Konsultacja podstawowa za darmo! Skontaktuj się ze mną w dogodnej dla Ciebie sekcji Skontaktuj się z nami .

Nie zapomnij zapisać przed zamknięciem, pamiętasz już, co?
Php phpinfo (); ?