Installazzjoni ta' LAMP (Linux, Apache, MySQL/MariaDB, u PHP/PhpMyAdmin) f'Arch Linux


Arch Linux jipprovdi ambjent ta 'sistema ta' età tat-tqattigħ flessibbli u huwa soluzzjoni qawwija l-aktar adattata għall-iżvilupp ta 'applikazzjonijiet tal-web fuq sistemi żgħar mhux kritiċi minħabba l-fatt li huwa Open Source komplet u jipprovdi l-aħħar rilaxxi aġġornati fuq Kernels u softwer tal-web għal servers u databases.

Dan l-ambitu ewlieni ta’ dan it-tutorja huwa li jiggwidak permezz ta’ struzzjonijiet sħaħ pass pass li fl-aħħar iwasslu biex tinstalla waħda mill-aktar kombinazzjoni ta’ softwer użata fl-Iżvilupp tal-Web: LAMP (Linux, Apache, MySQL/MariaDB, u PHP/PhpMyAdmin )u se tippreżentalek xi karatteristiċi sbieħ (skripts Bash malajr u maħmuġin) li mhumiex preżenti f'sistema Arch Linux, iżda jistgħu jħaffu x-xogħol fuq il-ħolqien ta' Virtwali Hosts multipli. , iġġenera Ċertifikati SSL u Ċwievet meħtieġa għal tranżazzjonijiet HTTS sikuri.

  1. Proċess ta' Installazzjoni ta' Arch Linux preċedenti – aqbeż l-aħħar parti b'DHCP.
  2. Istallazzjoni preċedenti LEMP fuq Arch Linux – il-parti biss bil-konfigurazzjoni ta' Indirizz IP Statiku u aċċess SSH remot.

Pass 1: Installa Softwer Bażiku LAMPA

1. Wara installazzjoni minima tas-sistema b'indirizz IP statiku u aċċess remot għas-sistema bl-użu ta 'SSH, aġġorna l-kaxxa Arch Linux tiegħek billi tuża l-utilità pacman.

$ sudo pacman -Syu

2. Meta l-proċess ta 'aġġornament jispiċċa tinstalla LAMPA minn biċċiet, l-ewwel installa Apache Web Server u ibda/vverifika kull daemon tal-proċess tas-server.

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

3. Installa PHP lingwa ta' scripting dinamika fuq is-server u l-modulu Apache tagħha.

$ sudo pacman -S php php-apache

4. Fuq l-aħħar pass installa d-database MySQL, agħżel 1 (MariaDB) furketta tad-database tal-komunità imbagħad ibda u ċċekkja l-istatus tad-daemon.

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

Issa għandek is-softwer LAMP bażiku installat u bdejt b'konfigurazzjonijiet default s'issa.

Pass 2: Sikura MySQL Database

5. Il-pass li jmiss huwa li tassigura d-database MySQL billi tistabbilixxi password għall-kont root, neħħi l-kontijiet tal-utenti anonimi, neħħi d-database tat-test u ma tħallix il-login remot għall-għerq tal-utent ( agħfas [Daħħal] ċavetta għall-password kurrenti tal-kont root u wieġeb b'Iva fuq il-mistoqsijiet tas-sigurtà kollha).

$ sudo mysql_secure_installation

6. Ivverifika l-konnettività tad-database MySQL billi tħaddem il-kmand li ġej imbagħad ħalli l-qoxra tad-database b'dikjarazzjoni nieqaf jew ħruġ.

$ mysql -u root -p

Pass 3: Immodifika l-Fajl tal-Konfigurazzjoni Prinċipali tal-Apache

7. Il-konfigurazzjonijiet li ġejjin huma l-biċċa l-kbira tagħhom relatati ma' Apache Web Server biex jipprovdu interface dinamiku għal Virtual Hosting b'lingwa ta' scripting PHP, Hosts Virtwali SSL jew mhux SSL u jistgħu isir billi timmodifika l-konfigurazzjonijiet tal-fajl tas-servizz httpd.

L-ewwel iftaħ il-konfigurazzjoni prinċipali tal-fajl Apache bl-editur tat-test favorit tiegħek.

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

Fil-qiegħ nett tal-fajl, waħħal iż-żewġ linji li ġejjin.

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

Ir-rwol tad-dikjarazzjonijiet Inkludi hawnhekk huwa li tgħid lil Apache li minn issa 'l quddiem, għandu jaqra aktar konfigurazzjonijiet mill-fajls kollha li joqogħdu f'/etc/httpd/conf/sites-enabled/ (għal Virtual Hosting) u /etc/httpd/conf/mods-enabled/ ( għal moduli server attivati) mogħdijiet tas-sistema li jispiċċaw fi estensjoni .conf.

8. Wara li Apache ikun ġie mgħallem b'dawn iż-żewġ direttivi, oħloq id-direttorji tas-sistema meħtieġa billi joħorġu l-kmandi li ġejjin.

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

Il-mogħdija siti-disponibbli żżomm il-fajls kollha tal-konfigurazzjonijiet tal-Ospiti Virtwali li mhumiex attivati fuq Apache iżda l-iskript Bash li jmiss se juża dan id-direttorju biex jgħaqqad u jippermetti websajts li jinsabu hemm.

Pass 4: Oħloq Kmandi Apache a2eniste u a2diste

9. Issa wasal iż-żmien li toħloq a2ensite u a2dissite skripts Apache li se jservu bħala kmandi biex jippermettu jew jiskonnettjaw il-fajl tal-konfigurazzjoni tal-Ospitanti Virtwali. Ittajpja l-kmand cd biex terġa' lura għall-mogħdija ta' l-utent $HOME tiegħek u toħloq l-iskripts bash a2eniste u a2dissite billi tuża tiegħek editur favorit.

$ sudo nano a2ensite

Żid il-kontenut li ġej fuq dan il-fajl.

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

Issa oħloq a2dissite bash script file.

$ sudo nano a2dissite

Ehmeż il-kontenut li ġej.

#!/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. Wara li l-fajls inħolqu, alloka permessi ta' eżekuzzjoni u kkopjahom f'direttorju eżekutibbli PATH biex tagħmilhom disponibbli fis-sistema kollha.

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

Pass 5: Oħloq Hosts Virtwali f'Apache

11. Il-fajl tal-konfigurazzjoni default Virtual Host għas-server tal-Web Apache fuq Arch Linux huwa pprovdut minn httpd-vhosts.conf fajl li jinsab fil-mogħdija /etc/httpd/conf/extra/ iżda jekk għandek sistema li tuża ħafna Virtual Hosts jista 'jkun diffiċli ħafna biex iżżomm kont ta' liema websajt hija attivata jew le u. Jekk trid tiddiżattiva websajt trid tikkummenta jew tħassar id-direttivi kollha tagħha u din tista' tkun missjoni diffiċli jekk is-sistema tipprovdi ħafna websajts u l-websajt tiegħek għandha aktar direttivi ta' konfigurazzjoni.

L-użu ta' mogħdijiet siti-disponibbli u siti attivati, jissimplifika bil-kbir ix-xogħol ta' attivazzjoni jew diżattivazzjoni ta' websajts u jippreserva wkoll il-fajls kollha tal-konfigurazzjoni tal-websajts tiegħek anki jekk huma attivati jew le.

Fil-pass li jmiss se nibnu l-ewwel Ospitanti Virtwali li jindika lokalhost default bil-mogħdija default DocumentRoot biex isservi fajls tal-websajts (/srv/http.

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

Żid id-direttivi Apache li ġejjin hawn.

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

L-aktar dikjarazzjonijiet importanti hawnhekk huma direttivi Port u ServerName li jagħtu struzzjonijiet lil Apache biex jiftaħ konnessjoni tan-netwerk fuq il-port 80 u jidderieġi mill-ġdid il-mistoqsijiet kollha bl-isem localhost lejn iservu fajls li jinsabu fit-triq /srv/http/.

12. Wara li jkun inħoloq il-fajl localhost, attivah imbagħad terġa' tibda httpd daemon biex tara l-bidliet.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Imbagħad ippunta l-browser tiegħek lejn http://localhost, jekk tħaddem mis-sistema Arch jew http://Arch_IP jekk tuża sistema remota.

Pass 6: Ippermetti SSL b'Virtwali Hosting fuq LAMP

SSL (Secure Sockets Layer) huwa protokoll iddisinjat biex jikkripta konnessjonijiet HTTP fuq netwerks jew Internet, li jagħmlu l-fluss tad-dejta biex jiġi trażmess fuq kanal sikur bl-użu ta’ ċwievet kriptografiċi simetriċi/assimetriċi u huwa pprovdut f'Arch Linux minn pakkett OpenSSL.

14. B'mod awtomatiku l-modulu SSL mhuwiex attivat fuq Apache f'Arch Linux u jista' jiġi attivat billi jitneħħa l-kumment tal-modulu mod_ssl.so mill-fajl tal-konfigurazzjoni prinċipali httpd.conf u Inkludi httpd-ssl.conf fajl li jinsab fil-mogħdija httpd żejda.

Iżda biex nissimplifikaw l-affarijiet aħna se noħolqu fajl modulu ġdid għal SSL fil-mogħdija mods-enabled u nħallu l-fajl ewlieni tal-konfigurazzjoni Apache mhux mimsus. Oħloq il-fajl li ġej għall-modulu SSL u żid il-kontenut ta 'hawn taħt.

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

Ehmeż il-kontenut li ġej.

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. Issa oħloq fajl Ospitanti Virtwali li jindika l-istess isem localhost iżda din id-darba tuża konfigurazzjonijiet tas-server SSL, u biddel ftit ismu biex infakkarkom li tirrappreżenta localhost b'SSL.

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

Żid il-kontenut li ġej fuq dan il-fajl.

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

Minbarra d-direttivi Port u ServerName, direttivi importanti oħra hawn huma dawk li jindikaw fajl Ċertifikat SSL u fajl SSL Key li għadhom mhumiex maħluqa sabiex terġax tibda Apache Web Server jew ikollok xi żbalji.

16. Biex toħloq il-fajl taċ-Ċertifikat SSL u ċ-Ċwievet meħtieġa installa l-pakkett OpenSSL billi toħroġ il-kmand hawn taħt.

$ sudo pacman -S openssl

17. Imbagħad oħloq l-iskript Bash li ġej li awtomatikament joħloq u jaħżen Ċertifikati Apache u Ċwievet kollha tiegħek fi /etc/httpd/conf /ssl/mogħdija tas-sistema.

$ sudo nano apache_gen_ssl

Żid il-kontenut tal-fajl li ġej imbagħad issalvah u għamilha eżekutibbli.

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

Jekk trid li l-iskrittura tkun disponibbli fis-sistema kollha, ikkupjaha f'PATH eżekutibbli.

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

18. Issa iġġenera Ċertifikat u Ċwievet billi tħaddem l-iskript. Ipprovdi l-għażliet SSL tiegħek u tinsiex l-isem taċ-ċertifikat u l-Isem Komuni biex jaqblu mad-dominju uffiċjali tiegħek (FQDN).

$ sudo ./apache_gen_ssl

Wara li nħolqu ċ-ċertifikat u ċ-ċwievet, tinsiex timmodifika ċ-ċertifikat SSL Virtual Host tiegħek u l-konfigurazzjonijiet taċ-ċwievet biex jaqblu mal-isem ta’ dan iċ-ċertifikat.

19. L-aħħar pass huwa li tattiva l-Ospitanti Virtwali SSL ġdid u terġa 'tibda s-server tiegħek biex tapplika konfigurazzjonijiet.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Dak hu! Biex tivverifikah iftaħ il-brawżer u żid Arch IP fuq URL billi tuża protokoll HTTPS: https://localhost jew https://system_IP.

Pass 7: Ippermetti PHP fuq Apache

20. B'mod awtomatiku Apache jservi biss kontenut ta' fajls statiċi HTML f'Arch Linux mingħajr appoġġ għal lingwi dinamiċi ta' scripting. Biex tattiva PHP l-ewwel iftaħ il-fajl tal-konfigurazzjoni prinċipali ta' Apache imbagħad fittex u neħħi l-kumment tad-dikjarazzjoni LoadModule li ġejja (php-apache ma taħdimx ma' mod_mpm_event f'Arch Linux ).

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

Billi tuża [Ctrl]+[w] fittex u tikkummenta l-linja li ġejja biex tidher bħal din.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Imbagħad oħloq fajl ġdid għall-modulu PHP fil-mogħdija mods-enabled bil-kontenut li ġej.

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

Żid eżattament il-kontenut li ġej (trid tuża 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. Biex tivverifika l-issettjar oħloq PHP fajl bl-isem info.php fid-DocumnetRoot tiegħek (/srv/http/), imbagħad erġa ibda Apache u poġġi l-browser tiegħek lejn info .php fajl: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Dak hu! Jekk kollox jidher qisu immaġini hawn fuq, issa għandek lingwa ta' scripting PHP dinamika fuq is-server attivata fuq Apache u issa tista' tiżviluppa websajts billi tuża Open Source CMS bħal WordPress pereżempju.

Jekk trid tivverifika l-konfigurazzjonijiet tas-sintassi tal-Apache u tara lista ta 'moduli mgħobbija mingħajr ma terġa' tibda l-httpd daemon mexxi l-kmandi li ġejjin.

$ sudo apachectl configtest
$ sudo apachectl -M

Pass 8: Installa u Konfigurazzjoni PhpMyAdmin

23. Jekk ma tikkontrollax il-linja ta 'kmand MySQL u trid aċċess remot sempliċi għad-database MySQL ipprovdut permezz ta' interface tal-web allura għandek bżonn PhpMyAdmin pakkett installat fuq il-kaxxa Arch tiegħek.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Wara li l-pakketti jkunu ġew installati għandek bżonn tattiva xi estensjonijiet PHP (mysqli.so, mcrypt.so – għal awtentikazzjoni interna) u tista’, ukoll, tattiva oħrajn moduli għall meħtieġa għal pjattaformi CMS futuri bħal openssl.so, imap.so jew iconv.so eċċ.

$ sudo nano /etc/php/php.ini

Sib u neħħi l-kumment tal-estensjonijiet ta' hawn fuq.

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

Ukoll, fuq l-istess fajl, fittex u sib id-dikjarazzjoni open_basedir u żid it-triq tas-sistema PhpMyAdmin (/etc/webapps/ u /usr/share/webapps/ >) biex tiżgura li PHP jista' jaċċessa u jaqra fajls taħt dawk id-direttorji (Jekk int, ukoll, tibdel il-passaġġ Virtual Hosts DocumentRoot minn /srv/http/ għal post ieħor għandek bżonn tehmeż il-passaġġ il-ġdid hawn ukoll ).

25. L-aħħar ħaġa li għandek bżonn tagħmel sabiex taċċessa PhpMyAdmin Web Interface hija li żżid dikjarazzjonijiet PhpMyAdmin Apache fuq Virtual Hosts. Bħala miżura ta 'sigurtà se tiżgura li PhpMyAdmin Web Interface tista' tkun aċċessibbli biss minn localhost (jew indirizz IP tas-sistema) billi tuża protokoll HTTPS u mhux minn Hosts Virtwali differenti oħra. Allura, iftaħ il-fajl Apache localhost-ssl.conf tiegħek u fil-qiegħ, qabel l-aħħar dikjarazzjoni żid il-kontenut li ġej.

$ 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. Wara erġa ibda Apache daemon u ippunta l-browser tiegħek lejn l-indirizz li ġej u għandek tkun tista’ taċċessa l-Interface tal-Web PhpMyAdmin tiegħek: https://localhost/phpmyadmin jew https://system_IP/ phpmyadmin.

27. Jekk, wara li tilloggja ma PhpMyAdmin, tara żball fil-qiegħ dwar blowfish_secret, iftaħ u editja l-fajl /etc/webapps/phpmyadmin/config.inc.php u daħħal sekwenza każwali bħal dik fid-dikjarazzjoni li ġejja, imbagħad aġġorna l-paġna.

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

Pass 9: Ippermetti sistema LAMP Wide

28. Jekk trid li l-munzell tal-LAMPA jinbeda awtomatikament wara li s-sistema reboot mexxi l-kmandi li ġejjin.

$ sudo systemctl enable httpd mysqld

Dawn huma wħud mis-settings ewlenin tal-konfigurazzjoni fuq LAMP meħtieġa biex tittrasforma sistema Arch Linux fi pjattaforma tal-web sempliċi iżda b'saħħitha, veloċi u robusta b'softwer ta' server tal-qtugh għal dawk żgħar mhux. -ambjenti kritiċi, imma jekk ikollok iebsa u xorta trid tużah f'ambjent ta 'produzzjoni kbir għandek arma ruħek b'ħafna paċenzja u tagħti attenzjoni żejda fuq l-aġġornamenti tal-pakketti u tagħmel immaġini ta' backup tas-sistema regolari għal sistema mgħaġġla li tirrestawra f'każ ta ' fallimenti tas-sistema.