Wyszukiwanie w witrynie

Instalowanie LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin) w Arch Linux


Arch Linux zapewnia elastyczne środowisko systemowe i jest potężnym, najlepiej dostosowanym rozwiązaniem do tworzenia aplikacji internetowych na małych, niekrytycznych systemach, ponieważ jest kompletnym oprogramowaniem typu Open Source i zapewnia najnowsze, aktualne wydania jąder i oprogramowania sieciowego dla serwerów i baz danych.

Głównym zakresem tego samouczka jest poprowadzenie Cię przez pełne instrukcje krok po kroku, które na koniec doprowadzą do zainstalowania jednej z najczęściej używanych kombinacji oprogramowania w tworzeniu stron internetowych: LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin ) i zaprezentuje kilka ciekawych funkcji (szybkie i brudne skrypty Bash), których nie ma w systemie Arch Linux, ale mogą ułatwić pracę przy tworzeniu wielu hostów wirtualnych , wygeneruj Certyfikaty SSL i Klucze potrzebne do bezpiecznych transakcji HTTS.

Wymagania

  1. Poprzedni Proces instalacji Arch Linux – pomiń ostatnią część dotyczącą DHCP.
  2. Poprzednia instalacja LEMP na Arch Linux – tylko część z konfiguracją Statycznego adresu IP i zdalnym dostępem SSH.

Krok 1: Zainstaluj podstawowe oprogramowanie LAMP

1. Po minimalnej instalacji systemu ze statycznym adresem IP i zdalnym dostępem do systemu za pomocą SSH, zaktualizuj swój Arch Linux za pomocą narzędzia pacman.

sudo pacman -Syu

2. Po zakończeniu procesu aktualizacji zainstaluj LAMP z kawałków, najpierw zainstaluj Apache Web Server i uruchom/zweryfikuj każdego demona procesów serwera.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Zainstaluj dynamiczny język skryptowy PHP po stronie serwera i jego moduł Apache.

sudo pacman -S php php-apache

4. W ostatnim kroku zainstaluj bazę danych MySQL, wybierz 1 rozwidlenie bazy danych społeczności (MariaDB), a następnie uruchom i sprawdź status demona.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Teraz masz zainstalowane podstawowe oprogramowanie LAMP i uruchomione do tej pory z domyślnymi konfiguracjami.

Krok 2: Zabezpiecz bazę danych MySQL

5. Następnym krokiem jest zabezpieczenie bazy danych MySQL poprzez ustawienie hasła dla konta root, usunięcie kont anonimowych użytkowników, usunięcie testowej bazy danych i uniemożliwienie zdalnego logowania użytkownikowi root ( naciśnij [ Enter], aby podać aktualne hasło do konta root i odpowiedzieć Tak na wszystkie pytania zabezpieczające).

sudo mysql_secure_installation

6. Sprawdź łączność z bazą danych MySQL, uruchamiając następujące polecenie, a następnie wyjdź z powłoki bazy danych za pomocą instrukcji quit lub exit.

mysql -u root -p

Krok 3: Zmodyfikuj główny plik konfiguracyjny Apache

7. Większość poniższych konfiguracji dotyczy Apache Web Server w celu zapewnienia dynamicznego interfejsu dla Wirtualnego hostingu z językiem skryptowym PHP, SSL lub Hosty wirtualne inne niż SSL i można to zrobić, modyfikując konfiguracje plików usługi httpd.

Najpierw otwórz główną konfigurację pliku Apache za pomocą ulubionego edytora tekstu.

sudo nano /etc/httpd/conf/httpd.conf

Na samym dole pliku dołącz następujące dwie linie.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Rolą instrukcji Include jest poinformowanie Apache'a, że od tej chwili powinien czytać dalsze konfiguracje ze wszystkich plików znajdujących się w /etc/httpd/conf/sites-enabled/ (dla Virtual Hosting) i /etc/httpd/conf/mods-enabled/ (dla modułów włączonego serwera) ścieżki systemowe kończące się na rozszerzenie .conf.

8. Po poinstruowaniu Apache'a tymi dwiema dyrektywami utwórz niezbędne katalogi systemowe, wydając następujące polecenia.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

Ścieżka dostępne witryny zawiera wszystkie pliki konfiguracyjne hostów wirtualnych, które nie są aktywowane na Apache, ale następny skrypt Bash będzie używać tego katalogu do łączenia i włączania znajdujących się tam witryn internetowych.

Krok 4: Utwórz polecenia Apache a2eniste i a2diste

9. Teraz nadszedł czas na utworzenie skryptów a2ensite i a2dissite Apache, które będą służyć jako polecenia włączające lub wyłączające plik konfiguracyjny Virtual Host. Wpisz polecenie cd, aby powrócić do ścieżki użytkownika $HOME i utwórz skrypty basha a2eniste i a2dissite przy użyciu ulubiony redaktor.

sudo nano a2ensite

Dodaj następującą zawartość do tego pliku.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Teraz utwórz plik skryptu bash a2dissite.

sudo nano a2dissite

Dołącz następującą treść.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Po utworzeniu plików przydziel uprawnienia do wykonywania i skopiuj je do katalogu wykonywalnego #96 PATH, aby udostępnić je w całym systemie.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Krok 5: Utwórz wirtualne hosty w Apache

11. Domyślny plik konfiguracyjny wirtualnego hosta dla serwera WWW Apache w systemie Arch Linux jest dostarczany przez plik httpd-vhosts.conf znajdujący się w /etc/httpd/conf/extra /, ale jeśli masz system korzystający z wielu wirtualnych hostów, śledzenie, która witryna internetowa jest aktywowana, a która nie, może być bardzo trudne. Jeśli chcesz wyłączyć witrynę internetową, musisz skomentować lub usunąć wszystkie jej dyrektywy, co może być trudnym zadaniem, jeśli Twój system udostępnia wiele witryn internetowych, a witryna ma więcej dyrektyw konfiguracyjnych.

Korzystanie ze ścieżek dostępne witryny i obsługiwane witryny znacznie upraszcza zadanie włączania lub wyłączania witryn internetowych, a także pozwala zachować wszystkie pliki konfiguracyjne witryn internetowych, nawet jeśli są aktywowane lub nie.

W następnym kroku skonstruujemy pierwszego hosta wirtualnego, który będzie wskazywał domyślny host lokalny z domyślną ścieżką DocumentRoot do udostępniania plików stron internetowych (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Dodaj tutaj następujące dyrektywy Apache.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Najważniejszymi stwierdzeniami są tutaj dyrektywy Port i Nazwa_serwera, które instruują Apache'a, aby otworzył połączenie sieciowe na porcie 80 i przekierowywał wszystkie zapytania z nazwą hosta lokalnego do udostępniaj pliki znajdujące się w ścieżce /srv/http/.

12. Po utworzeniu pliku localhost aktywuj go, a następnie uruchom ponownie demona httpd, aby wyświetlić zmiany.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Następnie skieruj przeglądarkę na http://localhost, jeśli uruchamiasz ją z systemu Arch lub na http://Arch_IP, jeśli używasz system zdalny.

Krok 6: Włącz SSL z wirtualnym hostingiem na LAMP

SSL (Secure Sockets Layer) to protokół przeznaczony do szyfrowania połączeń HTTP w sieciach lub Internecie, który umożliwia przesyłanie danych bezpiecznym kanałem przy użyciu symetrycznych/asymetrycznych kluczy kryptograficznych i jest dostarczany w Arch Linux przez pakiet OpenSSL.

14. Domyślnie moduł SSL nie jest włączony na Apache w Arch Linux i można go aktywować, usuwając komentarz z modułu mod_ssl.so z głównego httpd.conf plik konfiguracyjny i Dołącz plik httpd-ssl.conf znajdujący się w dodatkowej ścieżce httpd.

Ale dla uproszczenia utworzymy nowy plik modułu dla SSL w ścieżce z obsługą modów i pozostawimy główny plik konfiguracyjny Apache nietknięty. Utwórz następujący plik dla modułu SSL i dodaj poniższą treść.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Dołącz następującą treść.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Teraz utwórz plik hosta wirtualnego, który będzie wskazywał tę samą nazwę hosta lokalnego, ale tym razem używając konfiguracji serwera SSL, i nieznacznie zmień jego nazwę, aby przypomnieć, że oznacza ona host lokalny z SSL.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Dodaj następującą zawartość do tego pliku.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Oprócz dyrektyw Port i Nazwa_serwera, inne ważne dyrektywy to te wskazujące na plik Certyfikat SSL i plik Klucz SSL, które nie zostały jeszcze utworzone, więc nie uruchamiaj ponownie serwera Apache Web Server, w przeciwnym razie pojawią się błędy.

16. Aby utworzyć wymagany plik certyfikatu SSL i klucze, zainstaluj pakiet OpenSSL, wydając poniższe polecenie.

sudo pacman -S openssl

17. Następnie utwórz następujący skrypt Bash, który automatycznie tworzy i przechowuje wszystkie Twoje Certyfikaty Apache i Klucze w /etc/httpd/conf/ssl/ ścieżka systemowa.

sudo nano apache_gen_ssl

Dodaj następującą zawartość pliku, a następnie zapisz go i uczyń wykonywalnym.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Jeśli chcesz, aby skrypt był dostępny w całym systemie, skopiuj go do pliku wykonywalnego &96 PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Teraz wygeneruj swój Certyfikat i Klucze, uruchamiając skrypt. Podaj opcje SSL i nie zapomnij nazwy certyfikatu i nazwy zwyczajowej, aby pasowały do Twojej oficjalnej domeny (FQDN).

sudo ./apache_gen_ssl

Po utworzeniu certyfikatu i kluczy nie zapomnij zmodyfikować certyfikatu wirtualnego hosta SSL i konfiguracji kluczy, aby odpowiadały nazwie tego certyfikatu.

19. Ostatnim krokiem jest aktywacja nowego wirtualnego hosta SSL i ponowne uruchomienie serwera w celu zastosowania konfiguracji.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Otóż to! Aby to sprawdzić, otwórz przeglądarkę i dodaj Arch IP do adresu URL za pomocą protokołu HTTPS: https://localhost lub https://system_IP.

Krok 7: Włącz PHP na Apache

20. Domyślnie Apache udostępnia tylko zawartość statycznych plików HTML w Arch Linux bez obsługi dynamicznych języków skryptowych. Aby aktywować PHP, najpierw otwórz główny plik konfiguracyjny Apache, a następnie wyszukaj i odkomentuj następującą instrukcję LoadModule (php-apache nie działa z mod_mpm_event w Arch Linux ).

sudo nano /etc/httpd/conf/httpd.conf

Używając [Ctrl]+[w] wyszukaj i skomentuj następujący wiersz, aby wyglądał tak.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Następnie utwórz nowy plik dla modułu PHP w ścieżce z obsługą modów z następującą zawartością.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Dodaj dokładnie następującą treść (musisz użyć mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Aby zweryfikować ustawienia, utwórz PHP plik o nazwie info.php w swoim DocumnetRoot (/srv/http/), następnie uruchom ponownie Apache i wskaż przeglądarkę do pliku info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Otóż to! Jeśli wszystko wygląda jak na powyższym obrazku, masz teraz włączony dynamiczny język skryptowy po stronie serwera PHP na Apache i możesz teraz tworzyć strony internetowe przy użyciu CMS Open Source, na przykład WordPress.

Jeśli chcesz sprawdzić konfiguracje składni Apache i zobaczyć listę załadowanych modułów bez ponownego uruchamiania demona httpd, uruchom następujące polecenia.

sudo apachectl configtest
sudo apachectl -M

Krok 8: Zainstaluj i skonfiguruj PhpMyAdmin

23. Jeśli nie znasz wiersza poleceń MySQL i chcesz mieć prosty zdalny dostęp do bazy danych MySQL poprzez interfejs sieciowy, potrzebujesz pakietu PhpMyAdmin zainstalowanego na swoim Archu.

sudo pacman -S phpmyadmin php-mcrypt

24. Po zainstalowaniu pakietów należy włączyć niektóre rozszerzenia PHP (mysqli.so, mcrypt.so – do wewnętrznego uwierzytelniania) i możesz także włączyć inne moduły potrzebne dla przyszłych platform CMS, takie jak openssl.so, imap.so lub iconv.so itp.

sudo nano /etc/php/php.ini

Znajdź i odkomentuj powyższe rozszerzenia.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Ponadto w tym samym pliku wyszukaj i zlokalizuj instrukcję open_basedir oraz dodaj ścieżkę systemową PhpMyAdmin (/etc/webapps/ i /usr/share/webapps/), aby upewnić się, że PHP może uzyskać dostęp do plików w tych katalogach i je odczytać (jeśli także zmienisz ścieżkę Virtual Hosts DocumentRoot z /srv/http/ na inną lokalizację, musisz również tutaj dodać nową ścieżkę ).

25. Ostatnią rzeczą, którą musisz zrobić, aby uzyskać dostęp do interfejsu sieciowego PhpMyAdmin, jest dodanie instrukcji PhpMyAdmin Apache na hostach wirtualnych. Ze względów bezpieczeństwa interfejs sieciowy PhpMyAdmin będzie dostępny tylko z hosta lokalnego (lub systemowego adresu IP) przy użyciu protokołu HTTPS, a nie z innych różnych hostów wirtualnych. Otwórz więc swój plik localhost-ssl.conf Apache i na dole, przed ostatnią instrukcją dodaj następującą treść.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Następnie zrestartuj demona Apache i wskaż w przeglądarce następujący adres, a dostęp do interfejsu sieciowego PhpMyAdmin powinien być możliwy: https://localhost/phpmyadmin lub https://system_IP/phpmyadmin.

27. Jeśli po zalogowaniu się do PhpMyAdmin zobaczysz dolny błąd dotyczący blowfish_secret, otwórz i edytuj plik /etc/webapps/phpmyadmin/config.inc. php i wstaw losowy ciąg znaków, taki jak w poniższej instrukcji, a następnie odśwież stronę.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Krok 9: Włącz LAMPĘ w całym systemie

28. Jeśli chcesz, aby stos LAMP był automatycznie uruchamiany po ponownym uruchomieniu systemu, uruchom następujące polecenia.

sudo systemctl enable httpd mysqld

Oto niektóre z głównych ustawień konfiguracyjnych LAMP potrzebnych do przekształcenia systemu Arch Linux w prostą, ale wydajną, szybką i niezawodną platformę internetową z nowoczesnym oprogramowaniem serwerowym dla małych -środowiska krytyczne, ale jeśli jesteś uparty i nadal chcesz używać go w dużym środowisku produkcyjnym, powinieneś uzbroić się w cierpliwość i zwracać szczególną uwagę na aktualizacje pakietów oraz regularnie tworzyć obrazy kopii zapasowych systemu w celu szybkiego przywrócenia systemu w przypadku awarie systemu.