Instalacja i konfiguracja lamp Debiana 9. Instalowanie apache i php na Debianie

W pierwszej części tej historii jeden z opcje ustawienia GUI Debian do wygodnego i znajomego (jedynie subiektywnego punktu widzenia autora) użytkowania przez osobę, która przeszła na Linuksa z Windowsa. A jeśli używałem tylko systemu hosta do skonfigurowania maszyny wirtualnej z Debianem, to specjalnie pracowałem tylko na tej maszynie wirtualnej, szukając informacji w Internecie, robiąc notatki w Notepadqq lub gedit, słuchając muzyki przez Аudacious, otwierając pliki przez LibreOffice i tym podobne. W ten sposób możesz o wiele bardziej zaaklimatyzować się, poczuć i docenić pracę z systemem operacyjnym i jego środowiskiem, co jest całkiem kompletne i funkcjonalne w standardowej dystrybucji Debiana.

Na ten moment, nasz system jest skonfigurowany w taki sposób, że w przyszłości będzie można korzystać tylko z wiersza poleceń z konsolą Edytor tekstu, jak nano lub use menedżer plików Double Commander ze zintegrowanym edytorem Notepadqq. Możliwe jest również połączenie tych dwóch metod, na przykład nawigując po systemie i edytując pliki konfiguracyjne za pomocą menedżera plików, a wszystkie inne polecenia za pomocą konsoli. Wszystkie metody są równoważne, aby osiągnąć efekt końcowy.

Obecnym celem jest stworzenie serwera, któremu poświęcona zostanie ta część. Serwer można skonfigurować z instalacją i użytkowaniem GUI lub bez. W drugim przypadku z poprzedniej części możesz po prostu pominąć sekcje dotyczące instalacji i konfiguracji oprogramowania GUI oraz konfiguracji, instalacji pakietów programy graficzne i vmware-narzędzia.

Nie widzę nic złego w korzystaniu z interfejsu graficznego podczas tworzenia serwera: jeśli bardziej znajome, wygodne i wygodne jest stworzenie pierwszego lub drugiego serwera ze środowiskiem graficznym - dlaczego nie? W końcu mój serwer WWW GUI działał już od roku i będzie działał przez tyle lat, ile to zajmie. Należy jednak pamiętać o kilku punktach.

Idealnie, raz skonfigurowany system będzie musiał działać bez naszej ingerencji przez bardzo długi czas. Mój serwer w wersji „finishing” został postawiony w dwa dni i działał bez ingerencji przez prawie rok. Oznacza to, że interfejs graficzny był wykorzystywany przez 0,05% aktywnego istnienia serwera (komputer pracuje tylko pół dnia) i jednocześnie zajmował zasoby: RAM, miejsce na dysku, czas procesora. Wszystkie te zasoby są lepiej ukierunkowane na zapewnienie funkcjonowania samego serwera: na przykład podniesienie limitu pamięci dla PHP lub umieszczenie większej ilości danych użytkownika na dysk twardy. Ponadto w przypadku problemów i awarii podczas pracy z rzeczywistym serwerem zdalnym często znacznie łatwiej jest skorzystać z dostępu SSH. W tym kontekście obecność interfejsu graficznego jest niepożądana i dlatego drugi serwer w mojej sieci był już maszyną wirtualną bez środowiska graficznego, na której zainstalowano jedynie Midnight Commandera z oprogramowania graficznego, którym nawigowałem po system plików i edytuj pliki ustawień za pomocą jego edytora mcedit . Dlatego poniżej znajduje się uniwersalna instrukcja: podane polecenia z naciskiem na użycie wiersz poleceń Zakłada się jednak, że po raz pierwszy użytkownik konfiguruje maszynę ze środowiskiem graficznym, co powoduje, że za pomocą przeglądarki lokalnie sprawdza dostępność tworzonych witryn i niektóre funkcje ustawień programu pocztowego.

W trakcie tworzenia serwera i dodawania do niego nowych witryn zgromadziłem pewne podstawowe informacje, które mogą być przydatne dla początkującego użytkownika. Opisałem to po materiałach dotyczących instalacji i konfiguracji serwera.

Notatka
Do dalszego czytania w strukturach takich jak http:// 127.0.0.1 (https:// 127.0.0.1) spację po http:// (https://) należy usunąć przy wpisywaniu w pasku adresu przeglądarki. Spacja została wstawiona podczas publikacji tego artykułu, aby uniemożliwić silnikowi witryny automatyczną konwersję tekstu na linki.

Instalacja serwera WWW Apache2:

# apt-get zainstaluj apache2 apache2-doc

I to wszystko. Około dwudziestu megabajtów i serwer WWW jest już zainstalowany. Nie są potrzebne żadne restarty ani ustawienia - serwer już wie, jak otwierać strony HTML. Jednak współczesna witryna w Internecie to nie tylko zestaw statycznych plików, stylów, czcionek i innych rzeczy, jak dwadzieścia lat temu. Nowoczesna witryna zawiera skrypty napisane w PHP oraz dynamiczne informacje (na przykład treść tekstu, komentarze, profile użytkowników) nie jest zapisywany w plikach obok plików PHP, ale w specjalnej bazie danych SQL. W przypadku pełnoprawnego serwera konieczne jest zapewnienie obsługi tych technologii. Co więcej, to proste:

# apt-get install mysql-server mysql-client phpmyadmin
# apt-get install php5 php5-mysql libapache2-mod-php5

Podczas procesu instalacji MySQL zostaniesz poproszony o ustawienie hasła administratora mysql i będziesz musiał wybrać serwer apache2 do automatycznej konfiguracji mysql. Podczas instalacji pakietu phpmyadmin zgodziłem się na automatyczną konfigurację pakietu i wszędzie wpisałem hasło superużytkownika mysql. Instalacja PHP odbywa się bez żadnych monitów.

Nie korzystałem z szybszego PHP7 ani darmowego MariaDB jako alternatywnego zamiennika otwartego SQL i zdecydowałem się zbudować swój serwer na "kanonicznej" LAMP = Linux + Apache + MySQL + PHP, używając starych i sprawdzonych rozwiązań, w przypadku problemów z które mogłem szybko i łatwo znaleźć informacje w Internecie.

Trzy zespoły (co właściwie można zredukować do jednego) i mamy zainstalowany lokalnie pełnoprawny i nowoczesny serwer. To całkiem proste!

Ale konfiguracja serwera zajmuje znacznie więcej czasu niż instalowanie jego komponentów. Początkowo chciałem pokazać w tej części moje typowe błędy, fałszywe sposoby rozwiązywania problemów i skutki, do których one doprowadziły, ale okazało się, że w ciągu roku wiele wymazałem z pamięci, wiele musiałem przywrócić z pamięci. rekordy, więc tylko Instrukcja pracy z kilkoma komentarzami, pozwalającymi osiągnąć uniwersalny efekt pracy.

Konfigurowanie serwera WWW Apache2

Najpierw musisz upewnić się, że serwer WWW jest uruchomiony. Aby to zrobić, otwórz przeglądarkę i wpisz http:// 127.0.0.1 (localhost). Strona internetowa powinna otworzyć się z uspokajającym komunikatem: „Domyślna strona Apache2 Debiana. To "działa!". Serwer naprawdę działa. Jeśli masz zestaw plików strony z roku 2000, to możesz go umieścić w katalogu /var/www/html i prawdopodobnie otworzy się na naszym serwerze.

Wszystkie podstawowe ustawienia serwera WWW są przechowywane w /etc/apache2. Jeśli otworzysz ten katalog, zobaczysz główny plik konfiguracyjny apache2.conf oraz katalogi conf-available, mod-available, site-available. Katalogi te zawierają wstępnie skonfigurowane pliki z ustawieniami (tzw. snippety), których można po prostu używać domyślnie, z własnymi edycjami lub wziąć je jako szablon do tworzenia własnych konfiguracji. Na przykład katalog sites-available zawiera domyślny plik konfiguracyjny hosta 000-default.conf. Jeśli go otworzysz i przestudiujesz, okaże się, że ten plik po prostu określa ścieżkę, w której otwiera się nasza witryna pod adresem http://127.0.0.1: "DocumentRoot /var/www/html". Co więcej, linia " oznacza, że ​​jeśli zwolnię samochód w lokalna sieć i uzyskam do niego dostęp na porcie 80 (port dla HTTP), następnie otworzę stronę znajdującą się na ścieżce /var/www/html. Jak się upewnić?

Najpierw musisz znaleźć adres IP, który został przypisany do maszyny wirtualnej po jej załadowaniu. Aby wyświetlić konfigurację karty sieciowe Zróbmy:

#ifconfig

Z danych wyjściowych konsoli łatwo zauważyć, że adapter eth0 jest ustawiony na następujący adres:

Adres internetowy: 192.168.233.138

Teraz na komputerze głównym otwieram http://192.168.233.138 w przeglądarce i oczekuję, że otworzy się znajoma strona. Ale… nie otwiera się. Po chwili moja przeglądarka wyświetla komunikat „Przekroczono limit czasu połączenia”. I pisze poprawnie. Rzeczywiście, w pierwszej części włączyłem zaporę, ale nie otworzyłem portu 80! Naprawmy to:

#ufw zezwalaj na 80

Ponownie próbujemy otworzyć adres http://192.168.233.138 i upewnić się, że otworzy się oczekiwana strona. Wirtualny host w maszynie wirtualnej otworzył się poza całą tą wirtualizacją. Zrobiliśmy mały krok w budowie naszego własnego, wirtualnego internetu.

Oprócz katalogów -available, istnieją również katalogi -enabled, które zawierają to, co jest aktualnie „enabled”. Jeśli zajrzysz do nich, zobaczysz, że te katalogi zawierają odnośniki do plików znajdujących się w dostępnych katalogach. Obecnie w katalogu sites-enabled znajduje się tylko jedno łącze — do pliku /etc/apache2/sites-available/000-default.conf. Jest to bardzo wygodne - możemy sterować włączaniem lub wyłączaniem hostów za pomocą skrótów bez edytowania ich plików konfiguracyjnych. Ponadto źródłem konfiguracji jest jeden plik, niezależnie od tego, czy ta konfiguracja jest aktualnie włączona, czy nie, co zapobiega błędom, gdy coś zostanie poprawione w jednym pliku, a zapomniane w innym. Aby wyłączyć naszego hosta, musisz usunąć wymagany skrót, a aby go włączyć, utwórz go. Aby nie usuwać ani nie tworzyć skrótów ręcznie, łatwiej i bardziej niezawodnie jest korzystać ze specjalnych narzędzi.

Wyłącz wirtualny host:

# a2dissite 000-default

Włącz hosta wirtualnego:

# a2enssite 000-default

Po każdej zmianie należy ponownie załadować konfiguracje hosta lub zrestartować serwer:

# usługa przeładowania apache2

# restart usługi apache2

Więc teraz mam podstawową wiedzę na temat konfiguracji normalnych hostów w Apache, a następnie pokażę przykład, jak skonfigurowałem mój serwer do pracy przez protokoły HTTP i HTTPS.

Musisz zacząć od tego, że po wyłączeniu domyślnego hosta wirtualnego 000, nie ma takiego wyłączenia. Oznacza to, że witryna została otwarta zarówno z wnętrza, jak i z zewnątrz maszyny wirtualnej — i otworzy się niezależnie od tego, czy jej konfiguracja znajduje się w folderze sites-enabled. To było nieoczekiwane i spędziłem stosunkowo dużo czasu, aby zrozumieć, czy wszystko zrobiłem lub zrozumiałem poprawnie. Nie rozgryzłem jeszcze tego w pełni, najwyraźniej wynika to z faktu, że ścieżka /var/www/html jest ustawiona globalnie jako domyślny katalog dla DocumentRoot. Ponieważ nie chciałem, aby coś zbędnego było dołączane i dostępne, postanowiłem pozbyć się samego katalogu html i domyślnie odmówiono dostępu do wszystkich zagnieżdżonych /var/www.

Aby skonfigurować domyślny wirtualny host, wyedytowałem jego plik konfiguracyjny:

Zawartość pliku konfiguracyjnego jest następująca:

Nazwa_serwera localhost Administrator_serwera [e-mail chroniony] Katalog główny dokumentu /var/www ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log łącznie
W tej konfiguracji zresetowałem domyślny katalog do /var/www, pozwoliłem serwerowi podążać za dowiązaniami symbolicznymi w tym katalogu, pozwoliłem serwerowi na wykonanie wszystkich dyrektyw zadeklarowanych w znalezionych plikach .htaccess i odmówiłem dostępu do tego katalogu. Logika tych działań polega na tym, że mogę kontrolować dostęp do tego katalogu bez dostępu do ustawień serwera WWW i bez ponownego uruchamiania go. Teraz musimy przetestować to rozwiązanie.
Przesyłanie pliku:

# mv /var/www/html/index.html /var/www/index.html

I usuń katalog:

# rm /var/www/html

Zrestartuj serwer, aby nowe domyślne ustawienia hosta wirtualnego zaczęły obowiązywać:

# restart usługi apache2

Tworzymy plik:

# nano /var/www/.htaccess

W którym piszemy jedną linię (bez cudzysłowów): „Wymagaj przyznania wszystkich”.

Podsumujmy. Teraz nie ma ścieżki /var/www/html, ale domyślny host jest przekonfigurowany do ścieżki /var/www, gdzie znajduje się plik index.html i domyślnie, na poziomie serwera WWW, dostęp do tego katalogu jest odmowa, ale zawartość jest dozwolona lokalnie w znajdującym się tam pliku .htaccess.

Otwieramy http://127.0.0.1 w przeglądarce i widzimy znaną już domyślną stronę Apache2 Debiana. To „działa”. Teraz sprawdźmy działanie „lokalnej” kontroli dostępu:
Usuń plik .htaccess:

# rm /var/www/.htaccess

I aktualizujemy otwartą stronę w przeglądarce - powinna się otworzyć strona z zawiadomieniem o ograniczeniu dostępu (Zabronione). Tak, wszystko działa, więc wszystko jest zrobione poprawnie.

W zasadzie te proste ustawienia w zupełności wystarczą do dalszej bezawaryjnej pracy serwera WWW. Ale to wydawało mi się niewystarczające. Teraz nasz serwer WWW może działać tylko przez protokół HTTP. Ale co z protokołem HTTPS? Wszakże jeśli w przyszłości wyświetlać projekty oparte na tym serwerze WWW w Internecie, to umiejętność pracy z wykorzystaniem tego protokołu jest co najmniej pożądana. I postanowiłem zorganizować obsługę HTTPS opartą na stworzeniu certyfikatu SSL z podpisem własnym.

Najpierw musisz zdobyć certyfikat SSL, który zostanie zainstalowany na naszym serwerze. Nie mamy żadnej domeny, a tak naprawdę nie mamy też statycznego adresu IP. Ale to nie ma znaczenia, ponieważ sam wygeneruję certyfikat, korzystając z narzędzi mojego systemu.

Uwaga! Poniższe instrukcje zakładają, że serwer jest zainstalowany na „nienazwanej” maszynie. Jeśli istnieje prawdziwy adres IP lub nazwa domeny, należy je podać w TRZECH miejscach: ; ; - w odpowiednich konstrukcjach zamień IP/Domenę na adres IP lub nazwę domeny. Poniższy tekst używa hosta lokalnego zamiast adresu IP/domeny.

Wygenerujmy certyfikat SSL:

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

To polecenie spowoduje natychmiastowe utworzenie certyfikatu X.509 z podpisem własnym na okres nawet 10 lat, pomijając opcję ochrony certyfikatu hasłem - jest to konieczne, aby serwer Apache mógł odczytać plik bez interwencji użytkownika, ponieważ po ustawieniu hasła będziesz musiał je wpisywać po każdym pobraniu lub ponownym uruchomieniu serwera. Wraz z certyfikatem zostanie utworzony nowy 2048-bitowy klucz RSA, którym zostanie podpisany certyfikat. Opcje --keyout i --out określają ścieżki, w których OpenSSL powinien wygenerować klucz i certyfikat.

Podczas procesu tworzenia certyfikatu będą zadawane pytania, na które wskazałem następujące dane:

Nazwa kraju = MW
Nazwa stanu lub prowincji = system słoneczny
Nazwa miejscowości = Księżycowy
Nazwa organizacji = Hellium Inc.
Nazwa jednostki organizacyjnej = 2
Nazwa zwyczajowa = host lokalny
Adres e-mail = [e-mail chroniony]

Następnie musisz utworzyć klucze Diffie-Hellmana, aby zapewnić obsługę PFS:

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

W terminalu pojawią się kropki i znaki plus, a po zakończeniu kreskówek można utworzyć plik ssl-params.conf, w którym zostaną zdefiniowane parametry SSL dla serwera:

# nano /etc/apache2/conf-available/ssl-params.conf

Aby zapewnić bezpieczną i aktualną konfigurację, użyłem kodu wygenerowanego w generatorze konfiguracji SSL na stronie mozilla.github.io . W generatorze wybrałem serwer Apache2, profil Modern i poprawnie ustawiłem wersje serwerowe i OpenSSL, które można znaleźć za pomocą następujących poleceń:

# apache2 -v
# wersja openssl

W rezultacie otrzymałem następujący tekst:

# 14-01-2018 / dla apache2 2.4.10 i openssl 1.0.1t # z https://mozilla.github.io/server-side-tls/ssl-config-generator/ # pomoc do parametrów: https://raymii .org/s/tutorials/Strong_SSL_Security_On_Apache2.html # nowoczesna konfiguracja, dostosuj do swoich potrzeb SSL -ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE128-RSA-AES GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384 :ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherZamówienie na SSLWyłączenie kompresji # 3.3 i tylko w httppld Stad później SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderBłędy wyłączone SSLStaplingCache shmcb:/var/run/ocsp(128)
Teraz skonfigurujmy wirtualny host z obsługą SSL:

Tekst tego pliku przyniosłem do następującego formularza:

Administrator serwera [e-mail chroniony] NazwaSerwera localhost Główny Dokument /var/www Opcje ŚledźSymLinks AllowOverride All Wymagaj wszystkich odmowa SSLOptions+StdEnvVars SSLOptions+StdEnvVars
Z powyższego wynika, że ​​/var/www jest również zdefiniowany jako katalog DocumentRoot, do którego dostęp jest konfigurowany podobnie jak w poprzednich ustawieniach. Mechanizm HSTS jest włączony, co ułatwia wymuszone nawiązanie połączenia przez protokół HTTPS. Włączono obsługę SSL wskazującą używany certyfikat i klucz, a także obsługę przetwarzania danych certyfikatu w skryptach PHP i CGI. Ostatnia sekcja ma być zgodna z wczesne wersje przeglądarka internetowa Explorer i ogólnie nie jest konieczne.

Teraz zróbmy ostatnie poprawki.

Otwórzmy port dla SSL:

# ufw zezwól 443

Włącz moduły Apache do obsługi SSL i HSTS:

# a2enmod ssl
# nagłówki a2enmod

Włącz konfigurację SSL:

# a2enconf ssl-params

Włącz wirtualny host z obsługą SSL:

# a2ensite default-ssl

Uruchom ponownie serwer, aby zaakceptować wszystkie nowe ustawienia:

# restart usługi apache2

Nadszedł więc ciekawy moment - sprawdzenie wydajności nowej funkcjonalności skonfigurowanego systemu.

Tworzymy plik:

# nano /var/www/.htaccess

Otwórz https:// 127.0.0.1 w przeglądarce. Powinna otworzyć się strona o nieznanym certyfikacie, po zaakceptowaniu której (jednorazowej lub stałej zgody) otworzy się już znana strona z powiadomieniem o uruchomionym serwerze WWW.

Usuń plik .htaccess:

# rm /var/www/.htaccess

I aktualizujemy otwartą stronę w przeglądarce - powinna się otworzyć strona z zawiadomieniem o ograniczeniu dostępu (Zabronione). Wszystko działa poprawnie. Teraz nasze strony są dostępne zarówno przez HTTP, jak i HTTPS.

Dostęp HTTP można pozostawić włączony, wyłączony lub wymusić przekierowanie na HTTPS.

Nie trzeba nic robić, aby umożliwić dostęp HTTP, ponieważ serwer przetwarza żądania dla portów 80 i 443 indywidualnie, a nasza strona w folderze /var/www otworzy się zarówno przez HTTP, jak i HTTPS.

Aby wyłączyć dostęp HTTP, po prostu wyłącz odpowiedni host wirtualny i uruchom ponownie serwer WWW:

# a2dissite 000-default
# restart usługi apache2

Teraz, jeśli otworzysz http:// 127.0.0.1 w przeglądarce, powinna otworzyć się strona z powiadomieniem Nie znaleziono.

Najciekawsza trzecia opcja. W takim przypadku HTTP formalnie pozostaje włączony, ale przetwarzanie danych będzie wymuszone do przekierowania przez HTTPS.

Aby to zrobić, najpierw włącz moduł przekierowania:

# a2enmod przepisać

Teraz otwórzmy plik 000-default.conf:

# nano /etc/apache2/sites-available/000-default.conf

A przed tagiem zamykającym dodaj następujący tekst:

RewriteEngine Wł. RewriteCond %(HTTPS) wył. RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)
Zrestartujmy serwer:

# restart usługi apache2

Stwórzmy plik:

# nano /var/www/.htaccess

W którym piszemy jedną linijkę: „Wymagaj przyznania wszystkiego”.

Teraz, jeśli otworzymy w przeglądarce adres http://127.0.0.1, zostaniemy automatycznie przekierowani na https://127.0.0.1 z ostrzeżeniem o nieznanym certyfikacie (o ile nie był wcześniej dodany do listy wyjątków w przeglądarce), po zaakceptowaniu której już znajomy otworzy stronę z powiadomieniem o uruchomionym serwerze WWW.

Konfiguracja SQL

Do początkowe ustawienia mysql po prostu uruchom następujące polecenie:

# mysql_secure_installation

Po wpisaniu hasła superużytkownika mysql odpowiedziałem na zadawane pytania w następującej kolejności:

  • odmówił zmiany hasła roota;
  • potwierdził usunięcie anonimowych użytkowników z bazy danych;
  • potwierdzone blokowanie zdalnego połączenia dla roota (ze względów bezpieczeństwa root może łączyć się tylko lokalnie);
  • potwierdzone usunięcie testowych baz danych;
  • zgodził się ponownie załadować tabele przywilejów.
Aby sprawdzić, czy mysql działa, możesz uruchomić następujące polecenie:

# mysql -root -p

Po wprowadzeniu hasła superużytkownika mysql, widzimy znak zachęty mysql, co oznacza, że ​​usługa jest uruchomiona. Możesz wyjść z terminala mysql, wpisując polecenie „exit”.

Aby sprawdzić, czy phpmyadmin działa, otwórz http://127.0.0.1/phpmyadmin w przeglądarce. Jeśli otworzy się strona z zaproszeniem do wejścia do phpmyadmina, oznacza to, że usługa jest uruchomiona.

Konfiguracja PHP

Po zainstalowaniu PHP otworzyłem jego plik ustawień:

# nano /etc/php5/apache2/php.ini

I wprowadził kilka parametrów do następującej postaci:

  • limit_pamięci = 1024M
  • default_charset = "UTF-8"
  • upload_max_filesize = 256M
  • sendmail_path = /usr/bin/fake_sendmail.sh
Korzystając z modułu PHP, możesz zapewnić buforowanie danych w pamięci. Buforowanie jest przydatne w przypadku dużego obciążenia serwera danymi, które wymagają dużej ilości zasobów do wygenerowania np. wyników zapytań do bazy danych lub przetwarzania „ciężkich” fragmentów szablonu witryny. Jako serwer pamięci podręcznej wybrałem moduł memcached.

instalacja memcache:

# apt-get install memcached php5-memcached

Przyjrzyjmy się ustawieniom konfiguracji usługi:

# nano /etc/memcached.conf

W ustawieniach zwiększyłem ilość pamięci używanej do buforowania: -m 64 -> -m 256. A dostępność trybu pracy sprawdziłem tylko w strefie lokalnej: -l 127.0.0.1.

Uruchom ponownie usługę pamięci podręcznej i serwer WWW:

# Service memcached restart
# restart usługi apache2

Teraz musimy się upewnić, że usługa działa. Aby to zrobić, utwórz plik:

# nano /var/www/info.php

I dodaj do niego następujący tekst:


Nie zapomnij sprawdzić obecności pliku .htaccess w katalogu /var/www z odpowiednią zawartością zezwalającą, jeśli go tam nie ma, utwórz go.

Możesz teraz otworzyć http://127.0.0.1/info.php w swojej przeglądarce, co powinno otworzyć stronę z informacjami o PHP i sprawdzić, czy zawiera sekcję memcached. Jeśli pojawiła się tabela - PHP działa.

Możesz sprawdzić działającą usługę memcached w ten sposób:

$ ps-aux | grep memcached

Terminal powinien zwrócić ciąg znaków zawierający ustawienia memcached.

Tworzenie kodu pocztowego dla PHP

W ustawieniach PHP skrypt powłoki został określony jako parametr sendmail_path. Funkcją tego skryptu jest zapisywanie wiadomości e-mail wysyłanych za pośrednictwem standardowa funkcja php mail(), na lokalnym komputerze, w jakimś wygodnym folderze, zamiast wysyłać je gdzieś.

Stwórzmy plik:

# nano /usr/bin/fake_semdmail.sh

O następującej treści:

#!/bin/sh prefix="/var/mail/sendmail/new" numPath="/var/mail/sendmail" if [ ! -f $numerŚcieżka/liczba ]; następnie echo „0” > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num name="$prefix/letter_$num.txt " while read line wykonaj echo $line >> $name done chmod 777 $name /bin/true
Zróbmy ten plik wykonywalny:

# chmod +x /usr/bin/fake_semdmail.sh

Stwórzmy niezbędne katalogi, które mogą być potrzebne w przypadku założenia kolekcji listów program pocztowy:

# mkdir /var/mail/sendmail /var/mail/sendmail/cur /var/mail/sendmail/nowy /var/mail/sendmail/tmp

I przypisujemy uprawnienia, aby serwer mógł zapisywać pliki w tym folderze:

# chmod 777 -R /var/mail/sendmail

Teraz wszystkie wychodzące e-maile będą trafiać do /var/mail/sendmail. Można je przeglądać za pomocą edytora tekstu lub zbierać za pomocą programu pocztowego. Wstępnie zainstalowane oprogramowanie Debiana zawiera klient poczty ewolucja. Podczas konfigurowania konta wybierz "Katalogi pocztowe w formacie Maildir" jako typ serwera i określ ścieżkę do katalogu pocztowego (/var/mail/sendmail) oraz określ "Sendmail" jako serwer.

Wszystko. Generalnie skończyliśmy z serwerem - otrzymaliśmy uniwersalną maszynę wirtualną, na bazie której można budować własne usługi sieciowe. Zostawiłem zarówno dostępy HTTP, jak i HTTPS. Jednak po zdobyciu doświadczenia w tworzeniu i konfigurowaniu serwera, a także dodawaniu do niego witryn (patrz niżej), sugerowałbym utworzenie nowej maszyny wirtualnej z serwerem bez interfejsu graficznego, ponieważ jest to bardziej optymalne pod względem zużycia zasobów.

Konfiguracja dostępu SSH

Serwer nie byłby kompletnym serwerem bez dostępu SSH. Tak zwana „powłoka” pozwala szybko i bezpiecznie połączyć się ze zdalnym serwerem za pomocą np. małego programu putty - na lokalny komputer uzyskujemy bezpośredni dostęp do terminala zdalnego serwera.

Instalacja serwisowa:

# apt-get install ssh

Otwórzmy port dla SSH (właściwie domyślny port powinien mieć numer 22, ale poniżej nadpisałem port w konfiguracji SSH):

#ufw zezwól 106

Aby zorganizować dostęp dla naszego użytkownika, musimy otworzyć plik:

# nano /etc/ssh/sshd_config

I dodaj następującą dyrektywę na końcu pliku:


Dodatkowo ze względów bezpieczeństwa dokonałem w tym pliku następujących zmian:
  • zmieniono port z 22 na inny (lista portów): Port 22 -> Port 106
  • wyłączony starszy protokół: Protokół 2,1 -> Protokół 2
  • wyłączony zdalny dostęp dla roota: PermitRootLogin tak (lub PermitRootLogin bez hasła) -> PermitRootLogin nie
Następnie ponownie uruchamiamy usługę:

# restart usługi sshd

Teraz mogę uruchomić putty na komputerze głównym i połączyć się z serwerem w trybie konsoli, wprowadzając adres połączenia 192.168.233.138, port 106 i nazwę użytkownika user. Podczas łączenia należy odpowiedzieć tak na akceptację kluczy i wprowadzić hasło użytkownika użytkownik. Jeśli chcesz wykonywać polecenia jako superużytkownik, możesz użyć znanego już polecenia su.

Ochrona dostępu

Nie zacząłem chronić serwera WWW przed DDoS, początkowo wierząc, że jeśli jest hostowany na VPS / VDS, to hosting zapewni skuteczną ochronę, a jeśli sprawisz, że Twój serwer „wystaje” w Internecie, to ten problem powinien być traktowane poważnie i jest to temat osobny artykuł. Powolna ochrona HTTP DDoS jest stosunkowo łatwa do wykonania zgodnie z licznymi instrukcjami w Internecie, ale nie chroni przed rozproszonym atakiem z wielu różnych adresów IP.

Dzięki DDoS nasz serwer po prostu przestanie działać na chwilę. Ale po ataku, który nie będzie trwał wiecznie, serwer zostanie przywrócony. Ale jeśli komuś uda się uzyskać dostęp przez SSH, to kontrola nad serwerem zostanie utracona, a dane na nim skompromitowane, więc kontrolowanie dostępu do serwera przez SSH jest rozsądnym pomysłem.

Najprostszą i najbardziej banalną rzeczą, jaką można zrobić, jest zmiana standardowego portu, co zrobiliśmy kiedy Konfiguracja SSH. Jakieś pięć lat temu „postawiłem” nowo utworzony serwer w Internecie pod ostatnio otrzymanym prawdziwym adresem IP i zdziwiłem się, że w ciągu tygodnia istnienia serwera, o którym jeszcze nikt nic nie wiedział, zgromadził się w logach systemowych duża liczba zapisy nieudanych prób logowania przez SSH i FTP. Oczywistym jest, że we współczesnym Internecie istnieje znaczna liczba usług robotów, które poszukują komputerów z otwarte porty i spróbuj połączyć się z nimi, sortując hasła w istniejącej bazie danych lub używając metody brute force.

Na szczęście dla nas istnieje coś takiego jak fail2ban:

# apt-get install fail2ban

Natychmiast po instalacji narzędzie jest już skonfigurowane do ochrony większości portów, a jeśli w dzienniku systemowym pojawi się więcej niż sześć nieudanych prób połączenia w ciągu dziesięciu minut, intruz zostanie zablokowany na dziesięć minut. Mechanizm fail2ban jest dość prosty - tak zwane więzienia są wyzwalane przez określone wyzwalacze, które określają działanie mające na celu ochronę aplikacji.

Parametry blokowania można ustawić indywidualnie:

# nano /etc/fail2ban/jail.local

W utworzonym pliku musisz określić ustawienia, które zastąpią istniejące ustawienia domyślne. Przykład zawartości mojego pliku:

# Ustawienia główne
ignorowanieip = 127.0.0.1
bantime=2592000
czas znalezienia=43200
maksymalna ponowna próba = 6
banaction=iptables-multiport
# konfigurowanie wysyłania wiadomości na pocztę
destemail= [e-mail chroniony]
nazwa nadawcy = Fail2Ban
mta=wyślij pocztę
akcja = %(action_mwl)s

# bezpieczeństwo ssh
włączone=prawda
port=106
filtr=sshd
logpath=/var/log/auth.log

# wykrywaj nieudane próby podania hasła
włączone=prawda
port = http, https
filter=apache-auth

# zidentyfikuj potencjalne skany w poszukiwaniu exploitów i luk w php
włączone=prawda
port = http, https
filter=apache-noscript
logpath = /var/log/apache*/*error.log

# wykrywaj próby przepełnienia Apache
włączone=prawda
port = http, https
filter=przepełnienia Apache
logpath = /var/log/apache*/*error.log
maksymalna ponowna próba = 2

# wykrywaj nieudane próby znalezienia katalogu domowego na serwerze
włączone=prawda
port = http, https
filtr=apache-nohome
logpath = /var/log/apache*/*error.log
maksymalna ponowna próba = 2

Powyższe ustawienie pozwala nie kontrolować lokalnego dostępu, a przy sześciu błędnych próbach logowania w ciągu 12 godzin blokuje adres IP atakującego za pomocą iptables na 30 dni. Kontrolowany jest nie tylko dostęp do portu SSH, ale także podejrzane działania mające na celu destabilizację serwera WWW.

Odniesienie do serwera internetowego

Uruchom, zatrzymaj i zrestartuj serwer:

# usługa Apache2 start
# zatrzymanie usługi Apache2
# restart usługi apache2

# usługa przeładowania apache2

Włączanie i wyłączanie hosta testowego:

#a2ensite test
# test a2dissite

Włączanie i wyłączanie konfiguracji testowej:

# test a2enconf
# test a2disconf

Sprawdź składnię pliku (powinien zwrócić: "Składnia OK"):

# test konfiguracji apache2ctl

Możliwość dodania witryny z dostępem HTTP lub HTTPS przy użyciu istniejącego wirtualnego hosta

Załóżmy, że musimy dodać nową witrynę do naszego serwera, znajdującego się w katalogu site.com, znajdującym się pod adresem /home/user/www. Może to być przydatne, ponieważ użytkownik nie musi opuszczać swojego katalogu domowego, aby uzyskać dostęp do witryny.

# chmod 755 /home/użytkownik

Utwórz katalog dla witryny:

$ mkdir /home/user/www/home/user/www/site.com

Aby dodać dostęp HTTP, otwórz plik:

# nano /etc/apache2/sites-available/000-default.conf

Lub, aby dodać dostęp HTTPS, otwórz plik:

# nano /etc/apache2/sites-available/default-ssl.conf

I dodaj następującą zawartość do otwartego pliku przed tagiem zamykającym /VirtualHost:


Ponowne uruchomienie serwera WWW:

# restart usługi apache2

Dostępność serwisu sprawdzamy pod adresem http://127.0.0.1/site.com lub https://127.0.0.1/site.com (metoda sprawdzania – patrz niżej). Należy zauważyć, że witryna otworzy się niezależnie od obecności pliku .htaccess, ponieważ dyrektywa jest ustawiona dla katalogu z witryną: „Wymagaj wszystkich przyznanych”.

Możliwość dodania witryny z dostępem przez HTTP lub HTTPS przy użyciu nowego wirtualnego hosta i skonfigurowanie dostępu do witryny poprzez nazwę domeny, a nie IP

Warunki zadania są takie same jak powyżej: załóżmy, że musimy dodać nową witrynę do naszego serwera, znajdującą się w katalogu site.com, znajdującym się pod adresem /home/user/www. Ale teraz chcę również uzyskać dostęp do witryny, wpisując tylko nazwę domeny w wierszu przeglądarki.

Ustawiamy prawa do katalogu użytkownika (na wszelki wypadek):

# chmod 755 /home/użytkownik

Utwórz katalog dla witryny:

$ mkdir /home/user/www/site.com

# ln -s /home/user/www/site.com /var/www/site.com

Aby dodać dostęp HTTP, utwórz plik:

# nano /etc/apache2/sites-available/site.com.conf

Opcje FollowSymLinks AllowOverride All Wymagaj przyznania wszystkich# Przekieruj HTTP->HTTPS #RewriteEngine On #RewriteCond %(HTTPS) off #RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI) ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access .log połączone
Lub, aby dodać dostęp HTTPS, utwórz plik:

# nano /etc/apache2/sites-available/site.com-ssl.conf

I dodaj do niego następującą treść:

NazwaSerwera site.com ServerAlias ​​www.site.com ServerAdmin [e-mail chroniony] DocumentRoot /var/www/site.com Opcje FollowSymLinks AllowOverride All Wymagaj przyznania wszystkich# HSTS (wymagany jest mod_headers) (15768000 sekund = 6 miesięcy) Nagłówek zawsze ustawiany Strict-Transport-Security "max-age=15768000" ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log połączone SSLEngine włączone SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key SSLOptions+StdEnvVars SSLOptions+StdEnvVars BrowserMatch "MSIE" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE" ssl-unclean-shutdown
W /etc/hosts dodaj wiersz "127.0.0.1 site.com":

# echo >> /etc/hosts 127.0.0.1 site.com

Aktywuj hosta HTTP:

#a2ensite.com.conf

Lub aktywuj hosta HTTPS:

#a2ensite.com-ssl.conf

Ponowne uruchomienie serwera WWW:

# restart usługi apache2

Dostępność serwisu sprawdzamy pod adresem http://site.com lub https://site.com (metoda sprawdzania – patrz niżej). Należy zauważyć, że witryna otworzy się niezależnie od obecności pliku .htaccess, ponieważ dyrektywa jest ustawiona dla katalogu z witryną: „Wymagaj wszystkich przyznanych”.

Wszystkie akcje są wykonywane wewnątrz maszyny wirtualnej gościa. Interesujące byłoby „otworzenie” witryny w przeglądarce systemu hosta. To nie jest trudne. Znamy nazwę domeny i adres IP maszyny gościa. Jeśli gospodarz system Windows, następnie należy otworzyć plik c:\Windows\System32\drivers\etc\hosts i dodać następujący wiersz na samym końcu:


Po tej zmianie komputer lub system hosta będzie musiał zostać ponownie uruchomiony. Teraz, gdy otworzysz witrynę site.com w przeglądarce, wywołanie do niej zostanie przekierowane do naszej maszyny wirtualnej. W rzeczywistości stworzyliśmy najprostszy routing w naszym osobisty internet na poziomie systemu operacyjnego hosta.

Jeśli potrzebujesz dostępu do wirtualnego hosta tylko przez HTTPS, ale nie chcesz tracić połączeń przez HTTP, możesz ustawić przekierowanie:

Utwórz plik /etc/apache2/sites-available/site.com.conf powyższa instrukcja jeśli nie został utworzony
- w pliku /etc/apache2/sites-available/site.com.conf odkomentuj trzy wiersze RewriteEngine/RewriteCond/RewriteRule
- aktywuj host site.com.conf, jeśli nie jest aktywowany
- restart serwera: # restart usługi apache2

Sprawdzenie funkcjonalności dodanej strony

Najłatwiejszym sposobem sprawdzenia dostępności witryny jest umieszczenie pliku index.html z pewną zawartością w jej katalogu głównym.

Utwórz plik index.html:

$ nano /home/user/www/site.com/index.html

I dodaj do niego następującą treść:

TEST OK

TEST OK


W zależności od metody dodawania witryny otwórz http://127.0.0.1/site.com (https://127.0.0.1/site.com) lub http://site.com (https://site.com) w przeglądarka ) - powinna otworzyć się strona zawierająca tekst „TEST OK”.

Materiały referencyjne MySQL

Utwórz użytkownika user123 z hasłem pass123 i bazą danych db123 za pomocą konsoli.

Zaloguj się do mysql, wprowadzając hasło superużytkownika mysql po wyświetleniu monitu:

# mysql -u root -p

I utwórz bazę danych (nie musisz wpisywać przedrostka "mysql>", wymagany jest średnik na końcu):

mysql> UTWÓRZ BAZĘ DANYCH `db123`;

Utwórz użytkownika user123 z hasłem pass123:

mysql> CREATE USER "user123"@"localhost" ZIDENTYFIKOWANY PRZEZ "pass123";

Nadaj użytkownikowi uprawnienia do bazy danych:

mysql> PRZYZNAJ WSZYSTKIE UPRAWNIENIA NA `db123`.* "user123"@"localhost";

Zaktualizuj tabelę uprawnień:

mysql> UPRAWNIENIA PŁUKANIA;

Wyjdź z mysql:

mysql> wyjdź

Aby to sprawdzić, otwórz adres http://127.0.0.1/phpmyadmin i zaloguj się danymi dostępowymi user123/pass123. Powinien otworzyć się dostęp do bazy danych db123.

Zmiana hasła root mysql z pass123 na pass456:

# mysqladmin -uroot -ppass123 hasło pass456

Zmień hasło user123 z pass123 na pass456:

# mysqladmin -uuser123 -ppass123 hasło pass456

Usuń użytkownika user123:

mysql> DROP USER "user123"@"localhost";

Usuwanie tabeli db123:

mysql> DROP BAZY DANYCH `db123`;

Materiał referencyjny Fail2ban

Ponowne uruchomienie usługi:

# usługa fail2ban restart

Sprawdzanie reguł biegania:

# status klienta fail2ban

Szczegółowe statystyki dotyczące reguły sshd:

# status klienta fail2ban ssh

Odblokowanie:

# fail2ban-client ustaw ssh unbanip Banned_IP

W nowoczesnej sieci Linux jest główną platformą do hostowania różnych serwerów internetowych. Ciągłość, łatwość wdrożenia i utrzymania to wszystko.

Rozważając wdrożenie serwera WWW w systemie Linux, za podstawę weźmiemy jedną z najpopularniejszych dystrybucji - Debian. Stał się jednym z najbardziej stabilne dystrybucje, ma największe repozytorium pakietów ze wszystkich dystrybucji, a każda wersja ma długi okres wsparcia. Korzystanie z Debiana daje pewność, że podczas aktualizacji pakietów na serwerze w większości przypadków nic się nie zepsuje. Ale tak nie jest.

Szybki, niezawodny hosting w Europie!

Szukasz dobrego, ale niedrogiego hostingu stron internetowych? Czy chcesz, aby Twój projekt był szybki, niezawodny i najlepszy w europejskim stylu? FORNEX chętnie Ci pomoże.

Szybki, wysokiej jakości hosting za granicą. Jako serwery do wirtualnego hostingu wykorzystywane są szybkie macierze dyskowe dysków SSD, co zapewnia niezawodne i szybkie działanie Twoich witryn. Inżynierowie Fornex pomogą Ci przenieść strony internetowe całkowicie za darmo.

Teraz nadszedł czas, aby przejść do LAMP.

LAMP to nic innego jak skrót od stack oprogramowanie do wdrażania serwerów internetowych. Obejmuje to następujące elementy:

L-Linux- system operacyjny

A - Apache2 - Serwer WWW

M - Mysql (teraz pakiet Mysql został zastąpiony przez MariaDB) - system zarządzania bazą danych

P - PHP - język programowania

Warto zaznaczyć, że LAMP nie powstał pierwotnie jako stos – każdy z jego elementów jest osobnym gotowym produktem, jednak taki zestaw stał się bardzo popularny ze względu na wygodę, elastyczność i wydajność finalnego systemu.

W ramach tego artykułu nie będziemy rozwodzić się nad instalacją i przygotowaniem systemu operacyjnego, pierwszego członka stosu, do instalacji serwera WWW, to temat na osobny artykuł, więc natychmiast przystąpimy do instalacji następujących komponentów .

Instalacja Apache nie jest trudna - wystarczy zainstalować pakiet o tej samej nazwie z repozytorium Debiana.

Najpierw zaktualizujmy listę pakietów, jeśli z jakiegoś powodu nie zrobiłeś tego po zainstalowaniu systemu operacyjnego:

Teraz możesz kliknąć link http://(adres_IP sieć serwer) i sprawdź, czy pojawiła się strona zastępcza.

Zacznijmy od tego i przejdźmy do następnego punktu.

mysql(MariaDB)

Jak wspomniano powyżej, w Debianie 9 standardowy pakiet Mysql został zastąpiony przez MariaDB. Ten DBMS jest w pełni kompatybilny, ma identyczną składnię i jest całkowicie otwarty kod źródłowy. Obecność MariaDB i DBMS jako takiego na serwerze WWW jest niezbędna do działania różnych systemów zarządzania treścią (CMS), takich jak WordPress, Joomla i inne.

Ponadto podczas instalacji MariaDB będziesz potrzebować jednego z pakietów PHP wymaganych do pracy z DBMS:

sudo apt zainstaluj serwer mariadb mariadb-klient php7.0-mysql -y

Narzędzie prosi o podanie hasła użytkownika root, ale ponieważ jeszcze go nie ustawiliśmy, po prostu klikamy Wchodzić .

Hasło dla użytkownika uprzywilejowanego ustalamy, odpowiadając twierdząco na pierwsze pytanie (enter tak na klawiaturze i naciśnij wejść) . Wpisujemy wymyślone przez nas hasło i potwierdzamy je ponownie wpisując.

Nie martw się, jeśli nie widzisz na ekranie wpisywanych znaków — tak powinno być.

Odpowiadamy na wszystkie inne pytania zadawane przez narzędzie:

  1. Usunąć anonimowych użytkowników?

Odpowiadamy twierdząco - do konsoli zarządzania DBMS musimy się zalogować dopiero po wpisaniu hasła.

  1. zakaz Zdalne połączenie do użytkownika root?

Tutaj odpowiadamy w oparciu o potrzeby i względy osobiste. Jednak ze względów bezpieczeństwa lepiej odpowiedzieć twierdząco.

  1. Usunąć testową bazę danych?

Usuń bez obaw. Ona jest dla nas bezużyteczna.

  1. Zaktualizować uprawnienia użytkownika?

Ponownie odpowiadamy twierdząco.

Upewnijmy się, że wszystko jest poprawnie skonfigurowane. Aby to zrobić, połącz się z konsolą zarządzania MariaDB:

sudo mysql -u root -p

sudo mysql -u root -p

Mysql - wywoływanie narzędzia do zarządzania DBMS

ty root - połącz jako użytkownik źródło

p - wskazuje, że wymagane jest hasło

Wchodzimy w komendę status; aby uzyskać informacje o stanie serwera i upewnić się, że MariaDB jest gotowa do pracy:

Aby wyjść z konsoli zarządzania DBMS, wpisz polecenie Wyjście;

PHP7.0

Dotarliśmy do ostatniego składnika stosu LAMP, procesora hipertekstowego PHP. Jest to język skryptowy ogólnego przeznaczenia używany do tworzenia aplikacji internetowych. Zainstalujmy jego interpreter i kilka bibliotek do pracy z Apache:

sudo apt zainstaluj php7.0-common libapache2-mod-php7.0 php7.0-cli -y

Sprawdźmy teraz, czy PHP jest poprawnie zainstalowane. Aby to zrobić, przejdź do katalogu serwera WWW:

INFO: Domyślnym katalogiem do przechowywania aplikacji internetowych jest /var/www/html. Możesz zmienić katalog lub dodać nowy, edytując wirtualne hosty - pliki konfiguracyjne Apache, które zostaną omówione w następnym akapicie.

cd /var/www/html

06wrz

LAMPA - to zestaw produkty oprogramowania szeroko stosowany do tworzenia serwisów internetowych. Ten zestaw składa się z działającego Systemy Linux, jeden z najpopularniejszych serwerów WWW Apache, Mysql DBMS i język skryptowy PHP. Ten artykuł jest poświęcony procedurze standardowej instalacji i konfiguracji tego zestawu do dalszego wykorzystania przez usługi sieciowe.

Debian 8 został wybrany jako system operacyjny, jako jedna z najpopularniejszych dystrybucji GNU/Linux. Sam proces instalacji tego systemu operacyjnego nie będzie brany pod uwagę, ponieważ nie jest związany z tematem artykułu.

Wszystkie operacje instalacji i konfiguracji będą wykonywane na koncie użytkownika root.

Instalowanie Apache

Przed rozpoczęciem instalacji musisz uruchomić polecenie:

apt-get zainstaluj apache2

Po zakończeniu instalacji serwer WWW będzie gotowy do pracy. Możesz łatwo sprawdzić, czy działa, otwierając w przeglądarce internetowej adres IP serwera, na którym zainstalowano pakiet Apache. W wersji 2.4 strona skrótowa wygląda tak:

Plik konfiguracyjny Apache, znajdujący się w /etc/apache2/apache2.conf

Katalog /etc/apache2/sites-enabled/ zawiera pliki konfiguracyjne dla utworzonych usług WWW, a katalog /etc/apache2/sites-available/ zawiera dowiązania symboliczne do aktualnie włączonych plików konfiguracyjnych usług WWW.

Tych plików konfiguracyjnych można używać do kontrolowania konfiguracji hostów wirtualnych. Serwer Apache umożliwia hostowanie wielu wirtualnych hostów (usług) na jednym serwerze. Domyślnie cała zawartość usług WWW znajduje się w folderze /var/www. Umieszczenie treści można zmienić, określając je w pliku konfiguracyjnym hosta wirtualnego, za co odpowiada dyrektywa DocumentRoot.

Rozważ stworzenie najprostsza sieć strony z napisem "Hello World". Najpierw utwórzmy folder, w którym będzie przechowywana zawartość. Aby to zrobić, uruchom polecenie:

Mkdir /var/www/helloworld.net

W tym folderze stworzymy najprostszy plik html index.html o następującej treści:

Witaj świecie

To jest strona testowa.

Po pojawieniu się zawartości najprostszej strony konieczne jest utworzenie pliku konfiguracyjnego hosta wirtualnego. W tym celu w folderze /etc/apache2/sites-available/ utwórz plik helloworld.net.conf (nie zapomnij o rozszerzeniu conf) o następującej zawartości:

NazwaSerwera helloworld.net ServerAdmin [e-mail chroniony] ServerAlias ​​www.helloworld.net DocumentRoot /var/www/helloworld.net CustomLog $(APACHE_LOG_DIR)/helloworld.net.access.log łączony dziennik błędów $(APACHE_LOG_DIR)/helloworld.net.error.log

Oto parametry:

  • ServerName - nazwa domeny wirtualnego hosta (naszej strony);
  • ServerAdmin - adres E-mail administrator;
  • ServerAlias ​​– alias wirtualnego hosta (nazwa domeny hosta z dodanym www);
  • DocumentRoot – miejsce, w którym przechowywana jest zawartość samej usługi;
  • CustomLog - nazwa pliku dziennika dostępu do usługi;
  • ErrorLog to nazwa pliku dziennika błędów.

Szczegółowy opis wszystkich parametrów i ich wartości w pliku konfiguracyjnym można znaleźć w oficjalnej dokumentacji (http://httpd.apache.org/docs/2.4).

Następnym krokiem jest włączenie naszego wirtualnego hosta. Można to zrobić po prostu tworząc dowiązanie symboliczne:

cd /etc/apache2/sites-enabled ln -s ../sites-available/helloworld.net.conf helloworld.net.conf

Możesz także włączać i wyłączać wirtualne hosty za pomocą odpowiednio poleceń a2ensite i a2dissite.

Umożliwić:

A2ensite helloworld.net

Wyłączyć:

A2dissite helloworld.net

Po włączeniu hosta musisz zrestartować serwer Apache:

/etc/init.d/apache2 restart

Teraz możesz sprawdzić działanie stworzonej strony.

Aby sprawdzić stronę, może być konieczne dodanie wiersza do pliku hosts na komputerze, z którego odbywa się sprawdzanie:

xxx.xxx.xxx.xxx helloworld.net

Gdzie XXX. XXX. XXX. XXX to adres IP serwera z zainstalowanym Apache. plik hosts, usytuowany:

  • C:\Windows\System32\drivers\etc (w Win7)
  • /etc/hosts (w Debianie).

Instalowanie PHP

Następnym krokiem jest zainstalowanie języka skryptowego PHP. Instalacja odbywa się za pomocą polecenia:

apt-get zainstaluj php5

Teraz musisz sprawdzić praca w PHP. Aby to zrobić, dodaj plik test.php do folderu zawartości witryny (/var/www/helloworld.net). W tym pliku musisz napisać:

Należy zauważyć, że pod serwerem Apache znajduje się moduł PHP. Ten moduł umożliwia wydajniejszą pracę Apache i PHP. Możesz sprawdzić, czy moduł jest zainstalowany:

dpkg -l | grep libapache2-mod-php5

Jeśli modułu nie ma, należy go zainstalować:

apt-get zainstaluj libapache2-mod-php5.

Możesz sprawdzić, czy moduł jest włączony na samym serwerze Apache w następujący sposób:

ls -l /etc/apache2/mods-enabled/ | grep php5

Powinno pojawić się:

lrwxrwxrwx 1 root root 27 września 2 10:07 php5.conf -> ../mods-available/php5.conf lrwxrwxrwx 1 root root 27 września 2 10:07 php5.load -> ../mods-available/php5.load

Jeśli moduł nie jest włączony, można go włączyć analogicznie do wirtualnych hostów za pomocą polecenia

A2enmod php5

Moduł jest wyłączany komendą a2dismod.

instalacja mysql

Ostatnim krokiem w przygotowaniu środowiska do pracy z usługami sieciowymi jest zainstalowanie mysql DBMS. Instalacja odbywa się za pomocą polecenia:

apt-get install mysql-server php5-mysql

Podczas procesu instalacji zostaniesz poproszony o podanie hasła dla użytkownika root.

Po zakończeniu instalacji możesz sprawdzić działanie mysql, łącząc się z samym DBMS.

Mysql -u root -p Wpisz hasło: Witamy w monitorze MySQL. Polecenia kończą się ; lub\g. Twój identyfikator połączenia MySQL to 43 Wersja serwera: 5.5.49-0+deb8u1 (Debian) … mysql>

Na tym kończy się podstawowe przygotowanie serwera. Dodatkowo możesz zainstalować narzędzie phpmyadmin do zarządzania bazą danych.

apt-get zainstaluj phpmyadmina

Podczas instalacji musisz określić serwer, z którym będziesz pracować, pozwoli to programowi instalacyjnemu na automatyczne skonfigurowanie narzędzia do pracy z tym serwerem.

Możesz również pozytywnie odpowiedzieć na sugestię utworzenia bazy danych.

I kilka razy wprowadź hasło administratora bazy danych (to, które zostało określone dla użytkownik root podczas instalacji mysql).

Po instalacji phpmyadmina. Jego działanie można sprawdzić wchodząc w link http://localhost/phpmyadmin (jeśli przeglądarka jest uruchamiana z tego samego serwera) lub w link http://xxx.xxx.xxx.xxx/phpmyadmin z innego komputera gdzie xxx. xxx.xxx.xxx to adres IP serwera.

Aby się zalogować, musisz użyć loginu i hasła podanych podczas instalacji mysql.

W tym samouczku dowiesz się, jak zainstalować Apache, MariaDB i PHP7 (stos LAMP) na odcinku Debiana 9. LAMP jest najpopularniejszym stosem usług internetowych do tworzenia dynamicznych witryn i aplikacji internetowych.

Składa się z czterech komponentów: Linux, Apache, MySQL/MariaDB, PHP - Linux to system operacyjny; Apache to serwer WWW; MySQL/MariaDB to baza danych; PHP to język skryptowy po stronie serwera.

Ogólnie rzecz biorąc, instalacja LAMP na Debianie 9, podobnie jak w każdej innej dystrybucji opartej na Linuksie, jest bardzo łatwa. Zwłaszcza jeśli znasz się na budowaniu dowodzenia. Wszystko bardzo szczegółowo wyjaśnimy tak, aby poradził sobie nawet początkujący.

Instalowanie LAMP na Debianie 9

Wszystkie cztery składniki są bezpłatne i mają otwarte oprogramowanie. Ponieważ jednak MySQL jest teraz własnością Oracle i istnieje możliwość, że Oracle przekształci go w produkt o zamkniętym kodzie źródłowym, wybierzemy MariaDB zamiast MySQL. Możesz postępować zgodnie z tym przewodnikiem na VPS (Virtual Private Server) lub na lokalnym komputerze z Debianem 9.

Pamiętaj, że podczas instalacji oprogramowania na Debianie musisz mieć uprawnienia roota. Możesz dodać sudo na początku polecenia lub użyć polecenia su, aby przełączyć się na użytkownika root.

Krok 1: Zaktualizuj pakiety oprogramowania

LAMP (stos serwerów) oznacza Linux, Apache, MySQL i PHP; cztery popularne komponenty oprogramowania open source używane przez większość hostów internetowych, twórców stron internetowych, blogi i inne. Przygotowaliśmy przewodnik po instalacji serwera WWW dla środowiska testowego w Ostatnia wersja Debiana. Ogólnie rzecz biorąc, instalacja LAMP w Debianie 9 jest bardzo prosta, najważniejsze jest zrozumienie podstawowych funkcji.

MariaDB zastępuje serwer MySQL jako domyślną bazę danych w Debianie 9.

Zainstaluj Linuksa:
o tym, co dobre, ciekawe i innowacyjne zaprezentowane w Debianie 9. Jest to główny warunek instalacji wszystkiego innego. Zalecamy również zapoznanie się z innymi przewodnikami na stronie. Na przykład, rozmawialiśmy już o byciu w systemie z Ubuntu.

Przejdziemy teraz do instalacji AMP (Apache w wersji 2, PHP w wersji 7, MariaDB w wersji 10.2) na Debianie 9. Zainstalujmy więc jeden po drugim.

Zainstaluj serwer HTTP Apache:
Najpierw zainstalujemy serwer WWW Apache. Otwórz terminal, a następnie przełącz się na użytkownika root.

Zaktualizuj indeks repozytorium pakietów.

Nazwa pakietu serwera WWW Apache to apache2. Zainstaluj pakiet apache2 za pomocą polecenia apt-get.

apt-get -y zainstaluj apache2

Zarządzanie serwerem HTTP Apache:

Aby uruchomić serwer Apache2, uruchom.

systemctl uruchom apache2.service

Aby zatrzymać serwer Apache2, uruchom.

systemctl stop apache2.service

Aby ponownie uruchomić serwer Apache2, uruchom.

Aby sprawdzić stan serwera Apache2, uruchom.

status systemctl apache2.service

Zapora:

Zezwalaj serwerowi Apache HTTP na zaporę sieciową.

ufw zezwalaj na 80/tcp

ufw zezwól na 443/tcp

Testowanie serwera HTTP Apache:

Sprawdzimy teraz serwer WWW Apache, aby sprawdzić, czy działa poprawnie, czy nie. Otwórz dowolną przeglądarkę internetową, a następnie przejdź do następującego adresu URL.

http://hostlokalny/
LUB

http://twój-f-dodaj-ssg/
Otrzymasz stronę "Apache2 Debian Default", ta strona domyślna potwierdza, że ​​serwer HTTP Apache działa poprawnie.

Instalowanie serwera MySQL (MariaDB):
MariaDB to zamiennik serwera MySQL zaprojektowany przez oryginalnych programistów MySQL, aby pozostać i mieć RDBMS o otwartym kodzie źródłowym. MariaDB jest obecnie jednym z najpopularniejszych serwerów bazodanowych na świecie.

Aby zainstalować MariaDB, uruchom następujące polecenie

apt-get -y zainstaluj serwer mariadb

To polecenie pozwala poprawić bezpieczeństwo instalacji MariaDB w następujący sposób:

Możesz zainstalować hasło do konta root.

Możesz ograniczyć konta root do localhost.

Możesz usunąć anonimowe konta użytkowników.

Możesz usunąć testową bazę danych i uprawnienia, które pozwalają każdemu na dostęp do baz danych o nazwach zaczynających się od test_.

Zainstaluj PHP:
Domyślnie serwer Apache obsługuje tylko .html, a nie PHP, w tym celu musisz zainstalować PHP i pakiet rozszerzeń php dla serwera MariaDB. Tutaj zainstalujemy PHP 7 na Debianie 9.

apt-get -y zainstaluj php php mysql

Po zainstalowaniu pakietu PHP będziesz musiał zrestartować serwer HTTP Apache.

systemctl restart apache2.service

Testowanie PHP:

Użyj edytora VI, aby utworzyć plik info.php.

vi /var/www/html/info.php

To polecenie vi otworzy plik o nazwie info.php. Skopiuj/wklej poniżej wierszy w pliku info.php:

Zapisz i zamknij plik za pomocą Esc +: wq.

Teraz otwórz przeglądarkę internetową i wprowadź następujący adres URL w adresie internetowym.

http://localhost/info.php

http://twój-ip-add-ress/info.php
Strona będzie wyglądać tak:

Instalacja LAMP w Debianie 9, jak powiedzieliśmy powyżej, okazała się bardzo prosta. Mamy nadzieję, że podczas instalacji szybko zorientowałeś się w podstawowych wartościach. Ale jeśli masz jakieś pytania, zadaj je w komentarzach.

Wyniki

To wszystko! Gratulacje, pomyślnie zainstalowałeś LAMP na Debianie 9. Jeśli artykuł był dla Ciebie pomocny, nie zapomnij udostępnić linku.

Jeśli znajdziesz błąd, zaznacz fragment tekstu i kliknij Ctrl+Enter.

Dystrybucja Debiana jest uważana przede wszystkim za najbardziej stabilny system operacyjny, dlatego często jest używana na serwerach do hostowania stron internetowych. Często zdarza się również, że użytkownicy Linuksa muszą instalować oprogramowanie witryny na swoim komputerze lokalnym, aby wszystko można było przetestować i uporządkować przed wysłaniem do sieci WWW.

W tym artykule przyjrzymy się, jak jest zainstalowany LAMP Debian 9. Skrót LAMP oznacza Linux Apache Mysql PHP i jest to zestaw oprogramowania najczęściej używanego do hostingu stron internetowych. Mówiliśmy o tym wcześniej, proces nie będzie się bardzo różnił w Debianie, ale nadal istnieją niuanse.

Najpierw zainstalujemy wszystkie niezbędne komponenty, a następnie skonfigurujemy je i w razie potrzeby sprawdzimy poprawność działania. Ale najpierw musisz zaktualizować system do najnowszej wersji:

aktualizacja sudo aptitude && aktualizacja sudo aptitude

1. Instalowanie komponentów

Najpierw zainstaluj serwer WWW i interpreter języka programowania PHP:

sudo aptitude zainstaluj apache2 php php-mysql libapache2-mod-php php-mbstring php-zip php-gd

Zainstalowaliśmy nie tylko serwer WWW, ale także główne biblioteki PHP, których możesz potrzebować do pracy z grafiką, ciągami i skompresowanymi archiwami. Pakiet libapache2-php jest odpowiedzialny za integrację obsługi php dla serwera WWW Apache.

Przed przystąpieniem do konfiguracji tego wszystkiego musisz zainstalować system zarządzania bazą danych. Możesz użyć MySQL lub społecznościowej wersji MariaDB. Aby zainstalować MariaDB uruchom:

sudo aptitude zainstaluj serwer mariadb mariadb-klient mariadb-common

Aby zainstalować MySQL:

sudo aptitude zainstaluj mysql-server mysql-client mysql-common

W tym artykule skupimy się na MariaDB, ale praca z MySQL nie będzie się bardzo różnić.

2. Konfiguracja Apache i PHP

Dawno minęły czasy, kiedy trzeba było przejrzeć kilka plików konfiguracyjnych, aby połączyć PHP z Apache, teraz instalacja LAMP Debiana 9 jest dość prosta. Jeśli uruchomisz teraz Apache i wpiszesz adres lokalnego hosta, wszystko będzie działać. Ale najpierw dodajmy domenę do naszej strony. Na komputerze lokalnym jest to również przydatne. Najpierw utwórzmy folder dla witryny:

sudo mkdir /var/www/testsite/

Pliki konfiguracyjne hosta wirtualnego są przechowywane w katalogu /etc/apache2/sites-available/, wystarczy skopiować domyślną konfigurację 000-default do nowego pliku:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test-site.conf

Teraz należy edytować wynikowy plik. Będziemy zainteresowani dyrektywami ServerName i DocumentRoot. Ustaw je na prawidłowe wartości:

NazwaSerwera test-site.com
DocumentRoot /var/www/strona-testowa/

Wszystko inne można pozostawić jako domyślne. Następnie zapisz zmiany i aktywuj witrynę poleceniem:

sudo a2ensite test-site.conf

Teraz pozostaje zrestartować Apache:

Aby sprawdzić, jak wszystko działa, utwórz plik index.php z następującą zawartością w folderze /var/www/test-site/:

Jeśli domena jest zarejestrowana w Internecie i wszystkie żądania do niej są wysyłane na Twój adres IP, możesz już otworzyć witrynę w przeglądarce. Jeśli nie, możesz skonfigurować trasę dla domeny lokalnie za pomocą pliku /etc/hosts:

sudo vi /etc/hosts

127.0.0.1 test-site.com

Teraz możesz otworzyć witrynę w przeglądarce i sprawdzić:

http://testsite.com

Jeśli widzisz informacje o wersji php, jak na zrzucie ekranu, to wszystko działa i wystarczy skonfigurować bazę danych.

3. Konfiguracja bazy danych

Jak powiedziałem, jako główną bazę danych użyjemy mariadb. Aby rozpocząć konfigurację, uruchom:

mysql_secure_installation



Nie będę szczegółowo opisywał wszystkich kroków konfiguracji. Zostały one już opisane w artykule Instalacja MySQL na Ubuntu. Po zakończeniu wstępnego procesu konfiguracji utwórzmy nową bazę danych:

STWÓRZ BAZĘ DANYCH testsite;

Następnie utwórz użytkownika i daj mu dostęp do tej bazy danych:

CREATE USER "testuser"@"localhost" IDENTYFIKOWANY PRZEZ "hasło";
PRZYZNAJ WSZYSTKIE UPRAWNIENIA NA stronie testowej.* "testuserowi"@"localhost";

Cóż, do testów dodajmy tabelę:

UŻYWAJ strony testowej;
STWÓRZ TABELĘ testową (
id INT NOT NULL AUTO_INCREMENT,
str VARCHAR(100) NOT NULL,
KLUCZ PODSTAWOWY(id)
);

Dodajmy teraz jeden rekord do właśnie utworzonej tabeli:

INSERT INTO testtable (str) VALUES ("test1"), ("test2"), ("test3");

Teraz, aby upewnić się, że wszystko działa, spróbujemy pobrać dane z mysql przez PHP. Stwórzmy do tego mały skrypt. Łączy się z bazą danych i odczytuje w kolejności rekordy z tabeli:

sudo vi /var/www/test-site/testmysql.php

$connection = mysqli_connect("localhost","testuser","hasło","testsite") or die("Błąd " . mysqli_error($connection));
$sql = "SELECT id, str FROM testtable";
$result = mysqli_query($połączenie, $sql) or die("Błąd ". mysqli_error($połączenie));
$elementy = tablica();
while($row = mysqli_fetch_assoc($result))
{
$elementy = $wiersz;
}
echo json_encode($items);
?>

http://test-site.com/testmysql.php