Kufunga LAMP (Linux, Apache, MySQL/MariaDB, na PHP/PhpMyAdmin) katika Arch Linux


Arch Linux hutoa mazingira ya mfumo wa umri wa kukata na ni suluhisho la nguvu linalofaa zaidi kwa ajili ya kuendeleza programu za wavuti kwenye mifumo midogo isiyo muhimu kutokana na ukweli kwamba ni Chanzo Huria kamili na hutoa matoleo ya hivi karibuni kwenye Kernels na programu ya wavuti kwa seva na hifadhidata.

Upeo huu mkuu wa somo hili ni kukuongoza kupitia maagizo kamili ya hatua kwa hatua ambayo mwishowe yataongoza kwenye kusakinisha mojawapo ya mchanganyiko wa programu zinazotumika sana katika Ukuzaji wa Wavuti: LAMP (Linux, Apache, MySQL/MariaDB, na PHP/PhpMyAdmin ) na itakuletea baadhi ya vipengele vizuri (hati za haraka na chafu za Bash) ambazo hazipo kwenye mfumo wa Arch Linux, lakini zinaweza kurahisisha kazi ya kuunda Virtual Hosts nyingi , toa Vyeti vya SSL na Vifunguo vinavyohitajika kwa shughuli salama za HTTS.

  1. Mchakato wa Usakinishaji wa Arch Linux Uliopita - ruka sehemu ya mwisho ukitumia DHCP.
  2. Usakinishaji uliopita wa LEMP kwenye Arch Linux - sehemu pekee iliyo na kusanidi Anwani ya IP Isiyotulia na ufikiaji wa mbali SSH.

Hatua ya 1: Sakinisha LAMP ya Programu ya Msingi

1. Baada ya usakinishaji mdogo wa mfumo na anwani ya IP tuli na ufikiaji wa mfumo wa mbali kwa kutumia SSH, pata toleo jipya la kisanduku chako cha Arch Linux kwa kutumia pacman.

$ sudo pacman -Syu

2. Mchakato wa kuboresha utakapomaliza kusakinisha LAMP kutoka kwa vipande, kwanza sakinisha Apache Web Server na uanze/uthibitishe kila daemoni ya mchakato wa seva.

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

3. Sakinisha PHP lugha inayobadilika ya uandishi ya upande wa seva na sehemu yake ya Apache.

$ sudo pacman -S php php-apache

4. Katika hatua ya mwisho ya kusakinisha hifadhidata ya MySQL, chagua uma 1 (MariaDB) kisha anza na uangalie hali ya daemoni.

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

Sasa umesakinisha programu ya LAMP msingi na umeanza na usanidi chaguo-msingi kufikia sasa.

Hatua ya 2: Salama Hifadhidata ya MySQL

5. Hatua inayofuata ni kupata hifadhidata ya MySQL kwa kuweka nenosiri la akaunti ya mizizi, kuondoa akaunti za watumiaji wasiojulikana, kuondoa hifadhidata ya majaribio na kutoruhusu kuingia kwa mbali kwa mzizi wa mtumiaji ( bonyeza [Enter] ufunguo wa nenosiri la sasa la akaunti ya mizizi na ujibu kwa Ndiyo kwenye maswali yote ya usalama).

$ sudo mysql_secure_installation

6. Thibitisha muunganisho wa hifadhidata ya MySQL kwa kutekeleza amri ifuatayo kisha uache ganda la hifadhidata na taarifa ya acha au toka.

$ mysql -u root -p

Hatua ya 3: Rekebisha Faili Kuu ya Usanidi ya Apache

7. Mipangilio ifuatayo mingi kati yake inahusiana na Apache Web Server ili kutoa kiolesura chenye nguvu cha Hosting Virtual yenye lugha ya uandishi wa PHP, SSL au Wapaji wa Virtual zisizo za SSL na inaweza. ifanyike kwa kurekebisha usanidi wa faili za huduma ya httpd.

Fungua kwanza usanidi kuu wa faili ya Apache na kihariri chako cha maandishi unachopenda.

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

Chini kabisa ya faili, ongeza mistari miwili ifuatayo.

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

Jukumu la Jumuisha taarifa hapa ni kumwambia Apache kwamba kuanzia sasa na kuendelea, inapaswa kusoma usanidi zaidi kutoka kwa faili zote ambazo zinakaa /etc/httpd/conf/sites-enabled/ (kwa Upangishaji Mtandaoni) na /etc/httpd/conf/mods-enabled/ ( kwa moduli za seva zilizowezeshwa) njia za mfumo ambazo huisha kwa kiendelezi cha .conf.

8. Baada ya Apache kuagizwa na maagizo haya mawili, tengeneza saraka muhimu za mfumo ukitoa amri zifuatazo.

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

Njia ya tovuti zinazopatikana hushikilia faili zote za usanidi za Majeshi Virtual ambazo hazijawezeshwa kwenye Apache lakini hati inayofuata ya Bash itatumia saraka hii kuunganisha na kuwezesha tovuti ambazo ziko hapo.

Hatua ya 4: Unda a2eniste na a2diste Amri za Apache

9. Sasa umefika wakati wa kuunda hati za a2ensite na a2dissite za Apache ambazo zitakuwa kama amri za kuwezesha au kuzima faili ya usanidi ya Mpangishaji Mtandaoni. Andika cd amri ili kurudi kwa $HOME njia yako ya mtumiaji na kuunda hati zako za bash a2eniste na a2dissite ukitumia hati zako. mhariri anayependa.

$ sudo nano a2ensite

Ongeza maudhui yafuatayo kwenye faili hii.

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

Sasa unda faili ya hati ya a2dissite bash.

$ sudo nano a2dissite

Omba maudhui yafuatayo.

#!/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. Baada ya faili kuundwa tenga ruhusa za kutekeleza na unakili kwenye PATH saraka inayoweza kutekelezeka ili kuzifanya zipatikane kwa upana wa mfumo.

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

Hatua ya 5: Unda Majeshi Virtual katika Apache

11. Faili ya usanidi chaguo-msingi ya Seva ya Mtandao wa Apache kwenye Arch Linux imetolewa na httpd-vhosts.conf faili iliyo katika /etc/httpd/conf/extra/ njia lakini ikiwa una mfumo unaotumia Majeshi mengi ya Virtual inaweza kuwa vigumu sana kufuatilia ni tovuti gani imeamilishwa au la na. Ikiwa unataka kuzima tovuti lazima utoe maoni au ufute maagizo yake yote na hilo linaweza kuwa dhamira gumu ikiwa mfumo unatoa tovuti nyingi na tovuti yako ina maelekezo zaidi ya usanidi.

Kutumia tovuti zinazopatikana na njia zinazowezeshwa na tovuti, hurahisisha sana kazi ya kuwezesha au kuzima tovuti na pia kuhifadhi. faili zako zote za usanidi wa tovuti ingawa zimeamilishwa au la.

Katika hatua inayofuata tutaunda Seva pangishi ya Mtandaoni ya kwanza ambayo inaelekeza kwenye mwenyeji chaguo-msingi wa eneo kwa kutumia njia chaguomsingi ya DocumentRoot ya kuhudumia faili za tovuti (/srv/http.

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

Ongeza maagizo yafuatayo ya Apache hapa.

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

Taarifa muhimu zaidi hapa ni Port na ServerName maagizo ambayo yanaagiza Apache kufungua muunganisho wa mtandao kwenye mlango 80 na kuelekeza upya hoja zote zilizo na jina la mwenyeji kwa tumikia faili zilizo katika /srv/http/ njia.

12. Baada ya faili ya localhost kuundwa, iwashe kisha uanze upya daemon ya httpd ili kuona mabadiliko.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Kisha uelekeze kivinjari chako kwa http://localhost, ikiwa unaiendesha kutoka kwa mfumo wa Arch au http://Arch_IP ikiwa unatumia mfumo wa mbali.

Hatua ya 6: Wezesha SSL na Upangishaji Mtandaoni kwenye LAMP

SSL (Safu Salama ya Soketi) ni itifaki iliyoundwa ili kusimba miunganisho ya HTTP kupitia mitandao au Mtandao kwa njia fiche, ambayo hufanya mtiririko wa data kutumwa kupitia chaneli salama kwa kutumia vitufe vya kriptografia linganifu/asymmetric. na hutolewa katika Arch Linux na OpenSSL kifurushi.

14. Kwa chaguo-msingi moduli ya SSL haijawashwa kwenye Apache katika Arch Linux na inaweza kuwashwa kwa kutoa maoni mod_ssl.so moduli kutoka httpd.conf faili kuu ya usanidi na Jumuisha httpd-ssl.conffaili iko katika njia ya ziada ya httpd.

Lakini ili kurahisisha mambo tutaunda faili mpya ya moduli ya SSL katika njia iliyowezeshwa na mods na kuacha faili kuu ya usanidi ya Apache bila kuguswa. Unda faili ifuatayo ya moduli ya SSL na uongeze yaliyomo hapa chini.

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

Omba maudhui yafuatayo.

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. Sasa unda faili ya Seva Pekee inayoelekeza kwa jina lile lile la mwenyeji lakini kwa kutumia usanidi wa seva ya SSL wakati huu, na ubadilishe jina lake kidogo ili kukukumbusha kwamba inawakilisha localhost na SSL.

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

Ongeza maudhui yafuatayo kwenye faili hii.

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

Kando na maagizo ya Port na ServerName, maagizo mengine muhimu hapa ni yale yanayoelekeza kwenye faili ya Cheti cha SSL na Ufunguo wa SSL ambayo bado hazijaundwa kwa hivyo usianzishe tena Seva ya Wavuti ya Apache au utapata hitilafu kadhaa.

16. Ili kuunda faili inayohitajika ya Cheti cha SSL na Funguo sakinisha OpenSSL kifurushi kinachotoa amri iliyo hapa chini.

$ sudo pacman -S openssl

17. Kisha unda hati ifuatayo ya Bash ambayo huunda na kuhifadhi kiotomatiki Vyeti vyako vya Apache na Vifunguo katika /etc/httpd/conf /ssl/njia ya mfumo.

$ sudo nano apache_gen_ssl

Ongeza yaliyomo kwenye faili ifuatayo kisha uihifadhi na uifanye itekelezwe.

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

Iwapo unataka hati ipatikane katika mfumo mzima, nakili kwa PATH inayoweza kutekelezeka.

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

18. Sasa tengeneza Cheti na Vifunguo vyako kwa kuendesha hati. Toa chaguo zako za SSL na usisahau jina la cheti na Jina la Kawaida ili kuendana na kikoa chako rasmi (FQDN).

$ sudo ./apache_gen_ssl

Baada ya cheti na funguo kuundwa, usisahau kurekebisha cheti chako cha Mpangishi Mtandaoni wa SSL na usanidi wa vitufe ili kuendana na jina la cheti hiki.

19. Hatua ya mwisho ni kuwezesha Seva mpya ya SSL Virtual na kuanzisha upya seva yako ili kutumia usanidi.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Ni hayo tu! Ili kuithibitisha, fungua kivinjari na uongeze Arch IP kwenye URL kwa kutumia itifaki ya HTTPS: https://localhost au https://system_IP.

Hatua ya 7: Wezesha PHP kwenye Apache

20. Kwa chaguo-msingi, Apache hutumikia tu maudhui ya faili tuli za HTML katika Arch Linux bila usaidizi wa lugha za maandishi. Ili kuamilisha PHP kwanza fungua faili kuu ya usanidi ya Apache kisha utafute na ubatilishe kauli ifuatayo ya LoadModule (php-apache haifanyi kazi na mod_mpm_event katika Arch Linux. )

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

Kwa kutumia [Ctrl]+[w] tafuta na utoe maoni kwenye mstari ufuatao ili kuonekana hivi.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Kisha unda faili mpya ya moduli ya PHP katika njia iliyowezeshwa na mods yenye maudhui yafuatayo.

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

Ongeza maudhui yafuatayo hasa (lazima utumie 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. Ili kuthibitisha mpangilio tengeneza PHP faili iitwayo info.php katika DocumnetRoot yako (/srv/http/), kisha anzisha upya Apache na uelekeze kivinjari chako kwa maelezo. .php faili: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Ni hayo tu! Ikiwa kila kitu kinaonekana kama picha iliyo hapo juu, sasa una lugha ya maandishi ya PHP inayobadilika ya upande wa seva iliyowezeshwa kwenye Apache na sasa unaweza kutengeneza tovuti kwa kutumia Open Source CMS kama WordPress kwa mfano.

Ikiwa unataka kuthibitisha usanidi wa sintaksia ya Apache na uone orodha ya moduli zilizopakiwa bila kuanzisha upya daemon ya httpd endesha amri zifuatazo.

$ sudo apachectl configtest
$ sudo apachectl -M

Hatua ya 8: Sakinisha na Usanidi PhpMyAdmin

23. Ikiwa hujui mstari wa amri wa MySQL na unataka ufikiaji rahisi wa kijijini kwa hifadhidata ya MySQL iliyotolewa kupitia kiolesura cha wavuti basi unahitaji PhpMyAdmin kifurushi kisakinishwe kwenye kisanduku chako cha Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Baada ya vifurushi kusakinishwa unahitaji kuwezesha baadhi ya viendelezi vya PHP (mysqli.so, mcrypt.so - kwa uthibitishaji wa ndani) na unaweza, pia, kuwezesha vingine. sehemu zinazohitajika kwa majukwaa ya CMS ya siku zijazo kama vile openssl.so, imap.so au iconv.so n.k.

$ sudo nano /etc/php/php.ini

Tafuta na uondoe maoni kwa viendelezi vilivyo hapo juu.

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

Pia, kwenye faili moja, tafuta na upate taarifa ya open_basedir na uongeze njia ya mfumo ya PhpMyAdmin (/etc/webapps/ na /usr/share/webapps/ >) ili kuhakikisha PHP inaweza kufikia na kusoma faili chini ya saraka hizo (Ikiwa wewe, pia, utabadilisha njia ya Virtual Hosts DocumentRoot kutoka /srv/http/ hadi eneo lingine unahitaji kuambatisha njia mpya hapa pia. )

25. Jambo la mwisho unalohitaji kufanya ili kufikia Kiolesura cha Wavuti cha PhpMyAdmin ni kuongeza taarifa za Apache za PhpMyAdmin kwenye Mapangishi Mtandaoni. Kama hatua ya usalama itahakikisha kuwa Kiolesura cha Wavuti cha PhpMyAdmin kinaweza kufikiwa tu kutoka kwa mwenyeji (au anwani ya IP ya mfumo) kwa kutumia itifaki ya HTTPS na si kutoka kwa Wapangishi wengine tofauti wa Virtual. Kwa hivyo, fungua localhost-ssl.conf faili yako ya Apache na chini, kabla ya taarifa ya mwisho kuongeza maudhui yafuatayo.

$ 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. Baadaye anzisha upya daemon ya Apache na uelekeze kivinjari chako kwa anwani ifuatayo na unapaswa kuwa na uwezo wa kufikia Kiolesura chako cha Wavuti cha PhpMyAdmin: https://localhost/phpmyadmin au https://system_IP/ phpmyadmin.

27. Ikiwa, baada ya kuingia kwenye PhpMyAdmin, utaona hitilafu ya chini kuhusu blowfish_secret, fungua na uhariri /etc/webapps/phpmyadmin/config.inc.php faili na ingiza mfuatano wa nasibu kama ule ulio katika taarifa ifuatayo, kisha uonyeshe upya ukurasa.

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

Hatua ya 9: Wezesha Mfumo wa LAMP kwa upana

28. Ikiwa unataka mrundikano wa LAMP uanzishwe kiotomatiki baada ya kuwasha upya mfumo kutekeleza amri zifuatazo.

$ sudo systemctl enable httpd mysqld

Hii ni baadhi ya mipangilio kuu ya usanidi kwenye LAMP inayohitajika ili kubadilisha mfumo wa Arch Linux kuwa jukwaa rahisi lakini lenye nguvu, la haraka na dhabiti la wavuti lenye programu ya seva ya kisasa kwa mashirika madogo madogo. -mazingira muhimu, lakini ikiwa unakuwa mkaidi na bado unataka kuitumia katika mazingira makubwa ya uzalishaji unapaswa kujizatiti kwa uvumilivu mwingi na uangalie zaidi masasisho ya vifurushi na utengeneze picha za kawaida za chelezo za mfumo kwa urejeshaji wa haraka wa mfumo ikiwa kushindwa kwa mfumo.