Installéiere LAMP (Linux, Apache, MySQL/MariaDB, a PHP/PhpMyAdmin) an Arch Linux


Arch Linux bitt e flexibelt Schneidalter System Ëmfeld an ass eng mächteg bescht gëeegent Léisung fir Webapplikatiounen op kleng net-kritesch Systemer z'entwéckelen wéinst der Tatsaach datt et eng komplett Open Source ass an déi lescht aktuell Verëffentlechungen op Kernels a Websoftware fir Serveren an Datenbanken.

Dësen Haaptberäich vun dësem Tutorial ass fir Iech duerch e komplette Schrëtt fir Schrëtt Instruktiounen ze guidéieren, déi um Enn féieren zur Installatioun vun enger vun de meescht benotzte Softwarekombinatiounen an der Webentwécklung: LAMP (Linux, Apache, MySQL/MariaDB, an PHP/PhpMyAdmin ) an et wäert Iech e puer flott Features presentéieren (schnell an dreckeg Bash Scripten) déi net an engem Arch Linux System präsent sinn, awer d'Aarbecht erliichteren fir verschidde Virtual Hosts ze kreéieren. , generéiert SSL Certificaten an Schlësselen fir sécher HTTS Transaktiounen.

  1. Viru Arch Linux Installatiounsprozess - sprang de leschten Deel mat DHCP.
  2. Viru LEMP Installatioun op Arch Linux - nëmmen deen Deel mat Konfiguratioun vun Statesch IP Adress an Remote SSH Zougang.

Schrëtt 1: Installéiert Basis Software LAMP

1. No enger minimaler Systeminstallatioun mat statescher IP Adress a Remote System Zougang benotzt SSH, Upgrade Är Arch Linux Box mat pacman Utility.

$ sudo pacman -Syu

2. Wann den Upgrade Prozess fäerdeg ass installéiert LAMP aus Stécker, installéiert éischt Apache Web Server an all Server Prozess Daemon starten/z'iwwerpréiwen.

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

3. Installéiert PHP dynamesch Server-Säit Skriptsprooch a säin Apache-Modul.

$ sudo pacman -S php php-apache

4. Op de leschte Schrëtt installéieren MySQL Datebank, wielt 1 (MariaDB) Communautéit Datebank Gabel dann starten a kontrolléieren Daemon Status.

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

Elo hutt Dir d'Basis LAMP Software installéiert an ugefaang mat Standardkonfiguratiounen bis elo.

Schrëtt 2: Séchert MySQL Datebank

5. De nächste Schrëtt ass d'Sécherheet vun der MySQL-Datebank andeems Dir e Passwuert fir de Root-Kont setzt, anonyme Benotzerkonten erofhuelen, d'Testdatenbank erofhuelen an d'Remote Login fir d'Benotzerroot net erlaben ( dréckt [Enter] Schlëssel fir root Kont aktuellt Passwuert an Äntwert mat Jo op all Sécherheet Froen).

$ sudo mysql_secure_installation

6. Verifizéiert d'MySQL-Datebankkonnektivitéit andeems Dir de folgende Kommando ausféiert, da verloosst d'Datebank Shell mat quit oder exit Ausso.

$ mysql -u root -p

Schrëtt 3: Änneren Apache Main Configuratiounsdatei

7. Déi folgend Konfiguratiounen si meeschtens mat Apache Web Server verbonnen fir eng dynamesch Interface fir Virtual Hosting mat PHP Skriptsprooch, SSL oder Net-SSL Virtual Hosts ze bidden a kënnen gemaach ginn andeems Dir httpd Service Dateikonfiguratiounen änneren.

Éischt oppen Haapt Apache Datei Konfiguratioun mat Ärem Liiblings Texteditor.

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

Ganz ënnen vun der Datei, fügen déi folgend zwou Zeilen un.

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

D'Roll vun Include Aussoen hei ass Apache ze soen datt et vun elo un weider Konfiguratioune vun all Dateie soll liesen déi an /etc/httpd/conf/sites-enabled/ wunnen. > (fir Virtual Hosting) an /etc/httpd/conf/mods-enabled/ (fir aktivéiert Server Moduler) Systemweeër déi op enden eng .conf Extensioun.

8. Nodeems Apache mat dësen zwou Direktiven instruéiert gouf, erstellt déi néideg Systemverzeichnisser déi folgend Kommandoen ausginn.

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

Den Site verfügbar Wee hält all Virtuell Hosts Konfiguratiounsdateien déi net op Apache aktivéiert sinn, awer de nächste Bash Skript benotzt dëse Verzeechnes fir Websäiten ze verbannen an z'aktivéieren déi do sinn.

Schrëtt 4: Erstellt a2eniste an a2diste Apache Kommandoen

9. Elo ass et Zäit fir a2ensite an a2dissite Apache Scripten ze kreéieren déi als Kommandoen déngen fir d'Virtuell Host Konfiguratiounsdatei z'aktivéieren oder auszeschalten. Gidd de Kommando cd fir zréck op Äre $HOME Benotzerwee an erstellt Är Bash a2eniste an a2dissite Scripte mat Ärem Léifsten Redakter.

$ sudo nano a2ensite

Füügt de folgenden Inhalt op dëser Datei.

#!/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

Erstellt elo a2dissite bash Skriptdatei.

$ sudo nano a2dissite

Fügt de folgenden Inhalt un.

#!/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. Nodeems d'Fichier'en erstallt goufen, allokéiert d'Ausféierungsrechter a kopéiert se an e PATH ausführbare Verzeichnis fir se systembreet verfügbar ze maachen.

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

Schrëtt 5: Erstellt virtuell Hosten an Apache

11. Virtual Host Standard Konfiguratiounsdatei fir Apache Webserver op Arch Linux gëtt vun httpd-vhosts.conf Datei geliwwert, déi am /etc/httpd/conf/extra/ Wee läit, awer Wann Dir e System hutt, dee vill Virtuell Hosts benotzt, ka ganz schwéier sinn ze verfollegen, wéi eng Websäit aktivéiert ass oder net an. Wann Dir eng Websäit deaktivéiere wëllt, musst Dir all seng Direktiven kommentéieren oder läschen an dat kann eng schwiereg Missioun sinn, wann Dir System vill Websäiten ubitt an Är Websäit méi Konfiguratiounsdirektiven huet.

Mat Site-available an Site-enabled Weeër ze benotzen, vereinfacht d'Aarbecht vun aktivéieren oder desaktivéiere Websäiten immens an erhaalt och all Är Websäite Konfiguratiounsdateien och wann se aktivéiert sinn oder net.

Op de nächste Schrëtt wäerte mir den éischte Virtuelle Host konstruéieren deen op Standard localhost weist mam Standard DocumentRoot Wee fir Websäite Dateien ze servéieren (/srv/http.

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

Füügt déi folgend Apache Direktiven hei.

<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>

Déi wichtegst Aussoen hei sinn Port an ServerName Direktiven déi Apache instruéieren eng Netzwierkverbindung um Port 80 opzemaachen an all Ufroe mam localhost Numm opzemaachen. servéiere Dateien déi am /srv/http/ Wee sinn.

12. Nodeems d'localhost-Datei erstallt gouf, aktivéiert se dann den httpd Daemon nei fir Ännerungen ze gesinn.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Gitt dann Äre Browser op http://localhost, wann Dir et aus Arch System oder http://Arch_IP leeft, wann Dir e Fernsystem benotzt.

Schrëtt 6: Aktivéiert SSL mat Virtual Hosting op LAMP

SSL (Secure Sockets Layer) ass e Protokoll entworf fir HTTP-Verbindungen iwwer Netzwierker oder Internet ze verschlësselen, déi d'Datefluss iwwer e séchere Kanal mat symmetreschen/asymmetresche Kryptografeschlësselen iwwerdroen a gëtt am Arch Linux vum OpenSSL Package geliwwert.

14. Par défaut ass SSL Modul net op Apache am Arch Linux aktivéiert a kann aktivéiert ginn andeems Dir de mod_ssl.so Modul vun der Haaptkonfiguratiounsdatei vun httpd.conf an Inkludéieren. httpd-ssl.confDatei läit an extra httpd Wee.

Awer fir d'Saachen ze vereinfachen wäerte mir eng nei Moduldatei fir SSL am mods-aktivéierten Wee erstellen an d'Haapt Apache Konfiguratiounsdatei onberéiert loossen. Erstellt déi folgend Datei fir SSL Modul a füügt den Inhalt ënnert.

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

Fügt de folgenden Inhalt un.

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. Erstellt elo eng Virtual Host-Datei, déi op dee selwechte Localhost Numm weist, awer dës Kéier benotzt SSL Server Konfiguratiounen, a ännert säin Numm liicht fir Iech z'erënneren datt et fir localhost mat SSL steet.

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

Füügt de folgenden Inhalt op dëser Datei.

<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>

Nieft Port an ServerName Direktiven, aner wichteg Direktiven hei sinn déi, déi op SSL Certificate Datei an SSL Key Datei weisen, déi sinn nach net erstallt, also start den Apache Web Server net nei oder Dir kritt e puer Feeler.

16. Fir erfuerderlech SSL Zertifikatdatei a Schlësselen ze erstellen installéieren OpenSSL Paket de Kommando hei ënnen eraus.

$ sudo pacman -S openssl

17. Erstellt dann de folgenden Bash Skript deen automatesch all Är Apache Certificaten an Keys an /etc/httpd/conf erstellt a späichert /ssl/ Systemwee.

$ sudo nano apache_gen_ssl

Füügt de folgenden Dateiinhalt a späichert et a maacht et ausführbar.

#!/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

Wann Dir wëllt datt de Skript verfügbar ass systembreet, kopéiert et op en ausféierbaren PATH.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. Generéiert elo Ären Zertifika an Keys andeems Dir de Skript leeft. Gitt Är SSL Optiounen a vergiesst net den Zertifikatnumm an Gemeinsamen Numm fir mat Ärem offiziellen Domain (FQDN) ze passen.

$ sudo ./apache_gen_ssl

Nodeems d'Zertifikat an d'Schlëssel erstallt goufen, vergiesst net Ären SSL Virtual Host Zertifikat a Schlësselkonfiguratiounen z'änneren fir mam Numm vun dësem Zertifika ze passen.

19. De leschte Schrëtt ass fir nei SSL Virtual Host z'aktivéieren an Äre Server nei ze starten fir Konfiguratiounen z'applizéieren.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Dat ass et! Fir et z'iwwerpréiwen, oppen de Browser an füügt Arch IP op URL mat HTTPS Protokoll: https://localhost oder https://system_IP.

Schrëtt 7: Aktivéiert PHP op Apache

20. Par défaut servéiert Apache nëmmen HTML statesch Dateien Inhalt an Arch Linux ouni dynamesch Skriptsproochen Ënnerstëtzung. Fir PHP z'aktivéieren fir d'éischt Apache Haaptkonfiguratiounsdatei opzemaachen, sicht an decommentéiert déi folgend LoadModule Ausso (php-apache funktionnéiert net mat mod_mpm_event am Arch Linux ).

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

Benotzt [Ctrl]+[w] Sich a kommentéiert déi folgend Zeil fir esou ze kucken.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Erstellt dann eng nei Datei fir PHP Modul am Mods-enabled Wee mat dem folgenden Inhalt.

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

Füügt de genau folgenden Inhalt derbäi (Dir musst mod_mpm_prefork benotzen).

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

Include conf/extra/php5_module.conf

22. Fir d'Astellung z'iwwerpréiwen, erstellt PHP eng Datei mam Numm info.php an Ärem DocumnetRoot (/srv/http/), start den Apache nei a weist Äre Browser op Info .php Datei: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Dat ass et! Wann alles wéi d'Bild uewen ausgesäit, hutt Dir elo PHP dynamesch Server-Säit Skriptsprooch op Apache aktivéiert an Dir kënnt elo Websäiten entwéckelen mat Open Source CMS wéi WordPress zum Beispill.

Wann Dir Apache Syntax Konfiguratiounen verifizéiere wëllt an eng Lëscht vu geluedene Moduler gesinn ouni den httpd Daemon nei ze starten, lafen déi folgend Kommandoen.

$ sudo apachectl configtest
$ sudo apachectl -M

Schrëtt 8: PhpMyAdmin installéieren a konfiguréieren

23. Wann Dir d'MySQL Kommandozeil net beherrscht a wëllt en einfachen Fernzougang zu MySQL-Datebank, déi iwwer Web-Interface geliwwert gëtt, da braucht Dir PhpMyAdmin-Package op Ärem Arch Box installéiert.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Nodeems d'Packagen installéiert goufen, musst Dir e puer PHP-Extensiounen aktivéieren (mysqli.so, mcrypt.so - fir intern Authentifikatioun) an Dir kënnt och aner aktivéieren Moduler fir néideg fir zukünfteg CMS Plattformen wéi openssl.so, imap.so oder iconv.so etc.

$ sudo nano /etc/php/php.ini

Situéiert an decommentéieren déi uewe genannte Extensiounen.

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

Och, op derselwechter Datei, sicht a lokaliséiert open_basedir Ausso a füügt de PhpMyAdmin Systemwee derbäi (/etc/webapps/ an /usr/share/webapps/ >) fir sécher ze stellen, datt PHP Zougang zu Dateien ënner deenen Verzeichnisser kann kréien an ze liesen (Wann Dir och Virtual Hosts DocumentRoot Wee vun /srv/http/ op eng aner Plaz ännert, musst Dir den neie Wee och hei addéieren ).

25. Déi lescht Saach déi Dir maache musst fir Zougang zu PhpMyAdmin Web Interface ass PhpMyAdmin Apache Aussoen op virtuelle Hosten ze addéieren. Als Sécherheetsmoossnam wäert sécherstellen datt de PhpMyAdmin Web Interface nëmme vum localhost (oder System IP Adress) mat HTTPS Protokoll zougänglech ka sinn an net vun anere verschiddene virtuelle Hosten. Also, öffnen Är localhost-ssl.conf Apache-Datei an um ënnen, ier déi lescht Ausso de folgenden Inhalt derbäi.

$ 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. Duerno nei start den Apache Daemon a weist Äre Browser op déi folgend Adress an Dir sollt fäeg sinn op Äre PhpMyAdmin Web Interface ze kommen: https://localhost/phpmyadmin oder https://system_IP/ phpmyadmin.

27. Wann Dir, nodeems Dir Iech op PhpMyAdmin ageloggt hutt, en ënneschten Feeler betreffend e blowfish_secret gesitt, öffnet an ännert /etc/webapps/phpmyadmin/config.inc.php Datei an setzt eng zoufälleg String wéi déi an der folgender Ausso an, da aktualiséieren d'Säit.

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

Schrëtt 9: Aktivéiert LAMP System Wide

28. Wann Dir wëllt, datt de LAMP-Stack automatesch gestart gëtt nodeems de System nei starten, lafen déi folgend Kommandoen.

$ sudo systemctl enable httpd mysqld

Dëst sinn e puer vun den Haaptkonfiguratiounsastellungen op LAMP gebraucht fir en Arch Linux System an eng einfach, awer mächteg, séier a robust Webplattform mat Schnëtt-Alter Server Software fir kleng Netz ze transforméieren -kritesch Ëmfeld, awer wann Dir haartnäckege sidd an et nach ëmmer an engem grousse Produktiounsëmfeld benotze wëllt, sollt Dir Iech mat vill Gedold bewaffnen an extra Opmierksamkeet op Packageupdates bezuelen a regelméisseg Systembackup-Biller maachen fir e séiere System ze restauréieren am Fall vun Systemfehler.