Arch Linux-da LAMP (Linux, Apache, MySQL/MariaDB we PHP/PhpMyAdmin) gurmak


Arch Linux çeýe kesiş döwri gurşawyny üpjün edýär we doly açyk çeşme bolup, ýadro we web programma üpjünçiliginde iň soňky çykanlary üpjün edýänligi sebäpli, möhüm däl ulgamlarda web programmalaryny ösdürmek üçin iň oňat çözgütdir. serwerler we maglumat bazalary.

Bu gollanmanyň esasy mazmuny, web ösüşinde iň köp ulanylýan programma üpjünçiliginiň birini gurmaga alyp barjak ädim ädimleri bilen doly ädim ätmekdir: LAMP (Linux, Apache, MySQL/MariaDB we PHP/PhpMyAdmin) we size Arch Linux ulgamynda ýok, ýöne birnäçe Wirtual Hostlar döretmek işini ýeňilleşdirip biljek ajaýyp aýratynlyklary (çalt we hapa Baş skriptleri) hödürlär. , ygtybarly HTTS amallary üçin zerur SSL şahadatnamalary we açarlar dörediň.

  1. Öňki Arch Linux gurmak prosesi - soňky bölegini DHCP bilen geçiriň.
  2. Arch Linux-da öňki LEMP gurnama - diňe Statik IP adresi we uzakdan SSH giriş sazlaýan bölek.

1-nji ädim: Esasy programma üpjünçiliginiň çyrasyny guruň

1. Statiki IP adresi we SSH ulanyp uzakdan ulgam ygtyýary bilen minimal ulgam gurlandan soň, pacman kömekçi kömegi bilen Arch Linux gutyňyzy täzeläň.

$ sudo pacman -Syu

2. Döwrebaplaşdyryş prosesi gutarandan soň LAMP böleklerden guruň, ilki bilen Apache Web Server guruň we her serwer prosesi daemonyny başlaň/barlaň.

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

3. PHP dinamiki serwer tarapy skript dilini we Apache modulyny guruň.

$ sudo pacman -S php php-apache

4. Iň soňky ädimde MySQL maglumat bazasyny guruň, 1 ( MariaDB ) jemgyýetçilik maglumat bazasynyň wilkasyny saýlaň we daemon ýagdaýyny başlaň we barlaň.

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

Indi esasy LAMP programma üpjünçiligi guruldyňyz we şu wagta çenli deslapky konfigurasiýalardan başladyňyz.

2-nji ädim: MySQL maglumat bazasyny ygtybarly ediň

5. Indiki ädim, kök hasaby üçin parol goýmak, näbelli ulanyjy hasaplaryny aýyrmak, synag maglumatlar bazasyny aýyrmak we ulanyjy köküne uzakdan girmegi gadagan etmek bilen MySQL maglumat bazasyny goramakdyr ([ Enter Hawa bilen jogap beriň).

$ sudo mysql_secure_installation

6. Aşakdaky buýrugy işledip, MySQL maglumat bazasynyň baglanyşygyny barlaň, soňra çykmak ýa-da çykyş beýany bilen maglumat bazasynyň gabygyny goýuň.

$ mysql -u root -p

3-nji ädim: Apache esasy konfigurasiýa faýlyny üýtgediň

7. Aşakdaky konfigurasiýalaryň köpüsi, PHP skript dili, SSL ýa-da SSL däl Wirtual Hostlar bilen Wirtual Hosting üçin dinamiki interfeýs üpjün etmek üçin Apache Web Server bilen baglanyşykly. httpd hyzmat faýly konfigurasiýalaryny üýtgetmek arkaly amala aşyrylýar.

Ilki bilen halaýan tekst redaktoryňyz bilen esasy Apache faýl konfigurasiýasyny açyň.

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

Faýlyň iň aşaky böleginde aşakdaky iki setiri goşuň.

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

Bu ýerde goşuň jümleleriniň roly Apaçä mundan beýläk /etc/httpd/conf/sites -abled/ ( Wirtual Hosting üçin) we /etc/httpd/conf/mods -abled/ ( açyk serwer modullary üçin) gutarýan ulgam ýollary a .conf giňeltmesi.

8. Apache bu iki görkezme bilen görkezme berlensoň, aşakdaky buýruklary berýän zerur ulgam kataloglaryny dörediň.

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

saýtlar elýeterli ýoly Apache-de işjeňleşdirilmedik ähli Wirtual Host konfigurasiýa faýllaryny saklaýar, ýöne indiki Baş skript bu bukjany şol ýerdäki web sahypalaryny baglanyşdyrmak we işletmek üçin ulanar.

4-nji ädim: a2eniste we a2diste Apache buýruklaryny dörediň

9. Indi Wirtual Host konfigurasiýa faýlyny işletmek ýa-da öçürmek üçin buýruk bolup hyzmat etjek a2ensite we a2dissite Apache skriptlerini döretmegiň wagty geldi. $HOME ulanyjy ýoluňyza gaýdyp gelmek we a2eniste we a2dissite skriptleriňizi döretmek üçin cd buýrugyny ýazyň. halanýan redaktor.

$ sudo nano a2ensite

Bu faýla aşakdaky mazmuny goşuň.

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

Indi a2dissite bash skript faýly dörediň.

$ sudo nano a2dissite

Aşakdaky mazmuny goşuň.

#!/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. Faýllar döredilenden soň ýerine ýetiriş rugsatlaryny bölüň we ulgamyň giň bolmagy üçin olary PATH ýerine ýetirip boljak kataloga göçüriň.

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

5-nji ädim: Apache-de wirtual hostlary dörediň

11. Arch Linux-daky Apache web serweri üçin wirtual host deslapky konfigurasiýa faýly /etc/httpd/conf/extra/ ýolunda ýerleşýän httpd-vhosts.conf faýly bilen üpjün edilýär, ýöne Wirtual Hostlary köp ulanýan ulgamyňyz bar bolsa, haýsy web sahypasynyň işjeňleşdirilendigini ýa-da ýokdugyny yzarlamak gaty kyn bolup biler. Web sahypasyny öçürmek etmek isleseňiz, ähli görkezmelerini teswirlemeli ýa-da pozmaly, ulgam köp web sahypasyny üpjün etse we web sahypaňyzda has köp konfigurasiýa görkezmeleri bar bolsa, bu kyn mesele bolup biler.

saýtlar elýeterli we saýtlar bilen işleýän ýollaryny ulanmak, açmak ýa-da web sahypalaryny öçürmek işini ep-esli aňsatlaşdyrýar we gorap saklaýar. ähli web sahypalaryňyzyň işjeňleşdirilen ýa-da işlemeýän konfigurasiýa faýllary.

Indiki ädimde, web sahypalarynyň faýllaryna (/srv/http ) hyzmat etmek üçin deslapky DocumentRoot ýoly bilen deslapky ýerlihosty görkezýän ilkinji Wirtual Host gurarys.

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

Aşakdaky Apache görkezmelerini şu ýere goşuň.

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

Bu ýerdäki iň möhüm jümleler, Port we ServerName direktiwalary bolup, Apache 80 portunda tor birikmesini açmagy we ähli talaplary ýerlihost ady bilen gönükdirmegi tabşyrýar. /srv/http/ ýolunda ýerleşýän faýllara hyzmat ediň.

12. “Localhost” faýly döredilenden soň, ony işjeňleşdiriň we üýtgeşmeleri görmek üçin httpd daemonyny täzeden açyň.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Soňra uzak ulgam ulanýan bolsaňyz, brauzeriňizi http:// localhost görkeziň.

6-njy ädim: LAMP-da wirtual hosting bilen SSL-i işlediň

SSL ( Howpsuz rozetkalar gatlagy ), simmetrik/asimmetrik kriptografiýa düwmelerini ulanyp, ygtybarly kanalyň üsti bilen maglumat akymyny geçirýän HTTP birikmelerini torlar ýa-da internet arkaly şifrlemek üçin döredilen protokoldyr. we Arch Linux-da OpenSSL bukjasy bilen üpjün edilýär.

14. Dymmaklyk boýunça SSL moduly Arch Linux-daky Apache-de işledilmeýär we esasy httpd.conf konfigurasiýa faýlyndan mod_ssl.so modulyny açyp işjeňleşdirip bolýar. goşmaça httpd ýolunda ýerleşýän httpd-ssl.conf faýly.

Thingsöne zatlary ýönekeýleşdirmek üçin mods-mümkinçilikli ýolunda SSL üçin täze modul faýly dörederis we esasy Apache konfigurasiýa faýlyny elsiz galdyrarys. SSL moduly üçin aşakdaky faýly dörediň we aşakdaky mazmuny goşuň.

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

Aşakdaky mazmuny goşuň.

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. Indi şol bir ýerlihost adyny görkezýän, ýöne bu gezek SSL serwer konfigurasiýalaryny ulanýan Wirtual Host faýly dörediň we SSL bilen ýerlihostyň bardygyny ýatlatmak üçin adyny birneme üýtgediň.

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

Bu faýla aşakdaky mazmuny goşuň.

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

Port we ServerName direktiwalaryndan başga-da, bu ýerdäki beýleki möhüm görkezmeler SSL şahadatnamasy faýly we SSL açary faýly görkezýänlerdir. entek döredilmedi, şonuň üçin Apache Web Serwerini täzeden açmaň ýa-da käbir ýalňyşlyklar ýüze çykar.

16. Gerekli SSL şahadatnama faýly we düwmeler döretmek üçin aşakdaky buýrugy berýän OpenSSL paketini guruň.

$ sudo pacman -S openssl

17. Soňra aşakdaky Baş skriptini dörediň, ähli Apache şahadatnamalaryňyzy we açarlary /etc/httpd/conf/ssl/ ulgam ýoly.

$ sudo nano apache_gen_ssl

Aşakdaky faýl mazmunyny goşuň, soňra ýazdyryň we ýerine ýetirip bilersiňiz.

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

Scriptazuwyň elýeterli bolmagyny isleseňiz, ýerine ýetirip boljak PATH göçüriň.

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

18. Indi skripti işledip şahadatnamany we açarlary dörediň. SSL opsiýalaryňyzy beriň we resmi domeniňize ( FQDN ) gabat gelmek üçin şahadatnamanyň adyny we umumy at ýatdan çykarmaň.

$ sudo ./apache_gen_ssl

Şahadatnama we açarlar döredilenden soň, SSL Wirtual Host şahadatnamasyny we bu şahadatnamanyň adyna gabat gelýän düwmeler konfigurasiýalaryny üýtgetmegi ýatdan çykarmaň.

19. Iň soňky ädim, täze SSL Wirtual Hosty işjeňleşdirmek we konfigurasiýalary ulanmak üçin serweriňizi täzeden açmak.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Bu! Brauzeri açýandygyny we HTTPS protokolyny ulanyp URL-de Arch IP goşmak üçin: https:/localhost ýa-da https:/system_IP .

7-nji ädim: Apache-de PHP-i işlediň

20. Adaty tertipde Apache diňe dinamiki skript dilleri goldawy bolmadyk Arch Linux-da HTML statiki faýl mazmunyna hyzmat edýär. PHP-ni işjeňleşdirmek üçin ilki bilen Apache esasy konfigurasiýa faýly açyň, soňra aşakdaky LoadModule jümlesini gözläň we açyň ( php-apache Arch Linux-da mod_mpm_event bilen işlemeýär) ).

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

[Ctrl] + [w] ulanyp, şuňa meňzeş bolmak üçin aşakdaky setiri gözläň we düşündiriş beriň.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Soňra aşakdaky mazmunly mod-mümkinçilikli ýolunda PHP moduly üçin täze faýl dörediň.

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

Aşakdaky mazmuny goşuň ( mod_mpm_prefork ulanmaly).

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

Include conf/extra/php5_module.conf

22. Sazlamany barlamak üçin DocumnetRoot-da (/srv/http/) info.php atly bir faýl dörediň, soňra Apache-i täzeden açyň we brauzeriňizi maglumatyna görkeziň .php faýly: https: //localhost/info.php .

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Bu! Everythinghli zat ýokardaky surata meňzeýän bolsa, indi Apache-de PHP dinamiki serwer tarapyndaky skript dili açyk we indi WordPress ýaly açyk çeşme CMS ulanyp web sahypalaryny ösdürip bilersiňiz.

Apache sintaksis konfigurasiýalaryny barlamak we httpd daemonyny täzeden açmazdan ýüklenen modullaryň sanawyny görmek isleseňiz, aşakdaky buýruklary işlediň.

$ sudo apachectl configtest
$ sudo apachectl -M

8-nji ädim: PhpMyAdmin-i guruň we sazlaň

23. MySQL buýruk setirini özleşdirmeýän bolsaňyz we web interfeýsi arkaly berilýän MySQL maglumatlar bazasyna ýönekeý uzakdan girmek isleýän bolsaňyz, Arch gutyňyzda gurlan PhpMyAdmin bukjasy gerek.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Paketler gurlansoň, käbir PHP giňeltmelerini ( mysqli.so , mcrypt.so - içerki tanamak üçin) işletmeli we başga-da işledip bilersiňiz. Geljekdäki CMS platformalary üçin zerur bolan modullar, openssl.so , imap.so ýa-da iconv.so we ş.m.

$ sudo nano /etc/php/php.ini

Aboveokardaky giňeltmeleri tapyň.

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

Şeýle hem, şol bir faýlda open_basedir jümlesini gözläň we tapyň we PhpMyAdmin ulgam ýoluny goşuň (/etc/webapps/ we /usr/share/webapps/) PHP-iň şol kataloglardaky faýllara girip we okap biljekdigine göz ýetirmek üçin (Wirtual Hosts DocumentRoot ýoluny /srv/http/ -den başga bir ýere üýtgedip, täze ýoly hem goşmaly. ).

25. PhpMyAdmin web interfeýsine girmek üçin iň soňky etmeli işiňiz, wirtual öý eýelerine PhpMyAdmin Apache jümlelerini goşmak. Howpsuzlyk çäresi hökmünde, PhpMyAdmin Web Interfeýsine diňe başga wirtual Hostlardan däl-de, HTTPS protokolyny ulanyp, diňe ýerlihostdan (ýa-da ulgam IP adresi) girip boljakdygyna göz ýetirer. Şeýlelik bilen, localhost-ssl.conf Apache faýlyňyzy we aşaky bölegini açyň, soňky beýanyndan aşakdaky mazmuny goşuň.

$ 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. Ondan soň Apache daemonyny täzeden açyň we brauzeriňizi aşakdaky adrese görkeziň we PhpMyAdmin web interfeýsine girip bilersiňiz: https:/localhost/phpmyadmin ýa-da https:/system_IP/phpmyadmin .

27. PhpMyAdmin-e gireniňizden soň, blowfish_secret bilen baglanyşykly aşakdaky ýalňyşlygy görseňiz, /etc/webapps/phpmyadmin/config.inc.php faýly açyň we redaktirläň. Aşakdaky sözlemdäki ýaly tötänleýin setir goýuň, soňra sahypany täzeläň.

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

9-njy ädim: Lamp ulgamynyň giňligini açyň

28. Ulgam täzeden açylandan soň LAMP stakasynyň awtomatiki işe başlamagyny isleseňiz, aşakdaky buýruklary işlediň.

$ sudo systemctl enable httpd mysqld

Bu, Arch Linux ulgamyny ýönekeý, ýöne güýçli, çalt we ygtybarly web platformasyna öwürmek üçin zerur bolan LAMP esasy konfigurasiýa sazlamalarynyň käbiri. -kritiki gurşaw, ýöne birkemsiz bolsaňyz we ony uly önümçilik gurşawynda ulanmak isleseňiz, köp sabyrlylyk bilen ýaraglanmaly we paket täzelenmelerine goşmaça üns bermeli we çalt ulgamyň dikeldilmegi üçin yzygiderli ulgam ätiýaçlyk şekillerini döretmeli. ulgamdaky näsazlyklar.