vhost-wall

Kaip sukurti Apache VirtualHost Debian 13 vietiniam PHP projektui

0 komentaras(-ai)

Kai keičiamas įvairių PHP projektų įvadas į vieną mašiną, naudojant tik http://localhost, greitai tapa netikslu.

Apache VirtualHosts leidžia priskirti atskiriems projektams skirtingus vietinius domenius. Pavyzdys:

  • http://mon-projet.local
  • http://blog.local
  • http://app.local

Kiekvienas domenas gali nuostatyti įskleidžiamą skirtingo katalogo.

Šiuo straipsniu matysime, kaip sukurti VirtualHost Apache per Debian 13 (Trixie) projejto PHP lokaliniui kūrimui.

Pavyzdys naudojant:

  • Debian 13;
  • Apache 2.4;
  • PHP 8.4;
  • projektas yra /var/www/mon-projet;
  • vietinis domenas mon-projet.local.

Pastaba: ši konfigūracija yra skirta lokaliniui kūrimui. Ji ne yra produkcijos konfigūracija.

1. Įdiegti Apache ir PHP


Jeigu Apache ir PHP dar neturi būti įdiegti, pradėkite atnaujinant paketus:

Bash
sudo apt update
sudo apt upgrade

Tada įdiejkitės Apache ir PHP:

Bash
sudo apt install apache2 php libapache2-mod-php

Debian 13 dabar įdieja PHP 8.4 kaip numatytąją versiją. Paketas php yra paketas, kuriame nurodoma stabili PHP versija, teikiamos Debian.

Patikrinkite įdiegto versijų numerius su:

Bash
apache2 -v
php -v

Jūs turėtumėte išvesti koį nors atitinkantį:

Text
Server version: Apache/2.4.68

ir:

Text
PHP 8.4.x

Numeriai galėtų natūraliai keistis su saugumo atnaujinimais Debian.

Patikrinkite taip pat, ar Apache paslaždijimas veikia:

Bash
sudo systemctl status apache2

Jeigu reikia:

Bash
sudo systemctl enable --now apache2
```Sukurti projektų katalogą
---
Projektą siūlome pateikti štai čia:
```text
/var/www/mon-projet

Sukurkite katalogą:

Bash
sudo mkdir -p /var/www/mon-projet

Norėdami greitai patikrinti konfigūraciją, sukurti PHP failą:

Bash
sudo nano /var/www/mon-projet/index.php

Pridėkite šį kodą į failą:

PHP
<?php
echo '<h1>Mon projet fonctionne !</h1>';
echo '<p>PHP fonctionne avec Apache.</p>';

Sukurkite failą.

2. Sukurti projekto katalogą

2.1. Apie teises


Apache veikia naudojant sistemos vartotoją www-data.

Tačiau nebus reikalingas visų projekto failų tiesioginis prieigavimas www-data vartotojui.

Kodėl nepriklausomai nuo įvairių projektų, dažniausiai leidžiamas variantas yra, kad jūsų Linux vartotojas būtų projekto failų savininkas ir Apache turėtų tiesioginius prieigavimo teises į tokius failus, kurie reikia.

Norėdami greitai patikrinti konfigūraciją, galite naudoti:

Bash
sudo chown -R $USER:$USER /var/www/mon-projet

Tačiau, jei reikalaujama prieigos į failus ar katalogus, kaip yra su Symfony ir Laravel, turėsite nustatyti teises į jų cache, logius ar atsisiuntimus.

3. Sukurti VirtualHost Apache


Apache projektų konfigūracijos yra saugotos štai čia:

Text
/etc/apache2/sites-available/

Sukurkite failą:

Bash
sudo nano /etc/apache2/sites-available/mon-projet.conf

Pridėkite šią konfigūraciją:

<VirtualHost *:80>
ServerName mon-projet.local
DocumentRoot /var/www/mon-projet
<Directory /var/www/mon-projet>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon-projet-error.log
CustomLog ${APACHE_LOG_DIR}/mon-projet-access.log combined
</VirtualHost>

3.1. Paaiškinimai


VirtualHost *:80

<VirtualHost *:80>

Apache štai čia atviras po HTTP 80, nepriklausomai nuo naudojamos IP adresės.

VirtualHost yra įmanomas leisti keliems svetainėms dalintis vienu IP adresiu ir portu. Apache pasirinktų tinkamą VirtualHost atsižvelgiant į ServerName arba ServerAlias, kurie buvo nurodomi HTTP užklausoje.

ServerName

ServerName mon-projet.local

Šis yra pavadinimas, kuriuo naudodėsime naršyklėje:

Text
http://mon-projet.local

Atsižvelgiant į rekomendacijas, ServerName turėtų būti nurodytas išskirtinai kiekvienam VirtualHost.

DocumentRoot

DocumentRoot /var/www/mon-projet

Ši direktoriautas nurodo Apache, kurie yra svetainės failai.

<Directory>

<Directory /var/www/mon-projet>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Require all granted leidžia Apache pasirinkti šio direktorijos turinius.

AllowOverride All leidžia, kad .htaccess failas galėtų pakeisti kai kurias Apache nustatymus.

Jei jūsų programine nepriklauso nuo .htaccess, galite naudoti:

AllowOverride None

Šis pasirinkimas yra įprastai geriau, jei jūsų programa to nepriklauso, nes Apache nustatymai tada bus centralizuoti.

Journals

ErrorLog ${APACHE_LOG_DIR}/mon-projet-error.log
CustomLog ${APACHE_LOG_DIR}/mon-projet-access.log combined

Klaidos būsenos bus išsaugotos:

Text
/var/log/apache2/mon-projet-error.log

ir prieigos duomenys:

Text
/var/log/apache2/mon-projet-access.log

4. Pridėkite domeną į /etc/hosts


Naudotojo svetainė mon-projet.local neturi interneto.

Turime nurodyti, kad šis pavadinimas priklauso 127.0.0.1.

Redaguokite failą /etc/hosts:

Bash
sudo nano /etc/hosts

Pridėkite:

Text
127.0.0.1 mon-projet.local

Arba galite naudoti:

Text
127.0.0.1 mon-projet.local www.mon-projet.local

jei norite naudoti du domenius.

Failas /etc/hosts leidžia imitaciją lokalinei DNS resoliucijai. Apache nepasiruošęs sukurti tinkamų DNS įvesties, kurioms priklauso VirtualHosts.

5. Įjungti VirtualHost


Naudotoji failas, kuriame mes tikėtis, yra šią vietoją:

Text
/etc/apache2/sites-available/

Tai reiškia, kad jis yra galimas, bet dar ne įjungtas. Šio failo įjungimą galite atlikti naudojant:

Bash
sudo a2ensite mon-projet.conf

Galite atidaryti Apache nepriklausomą VirtualHost:

Bash
sudo a2dissite 000-default.conf

Tačiau tai nėra svarbi užduotis, kad galėtumėte pasiekti naują VirtualHost.

6. Patikrinti Apache konfigūraciją


Prieš išklyausti Apache, patikrinkite jo konfigūraciją:

Bash
sudo apachectl configtest

Jeigu viskas yra teisingai, turėtumėte gauti:

Text
Syntax OK

Ši etapa yra svarbi: ji leidžia išvengti išklyausti konfigūracijos, kuriame yra sintaksinis klaida.

Turėtumėte išklysti Apache:

Bash
sudo systemctl reload apache2

Reload yra geriausias būdas: jis leidžia Apache aptikti naują konfigūraciją, nepasidarydamas viso paslėpimo.

7. Patikrinti įjungtus VirtualHosts

Apache teikia gerai veikiančią komandą, kuri leidžia patikrinti konfigūruotus VirtualHosts:

Bash
sudo apachectl -S

Turėtumėte iš viso rasti eilutę, atitinkančią:

Text
*:80 mon-projet.local

Ši komanda yra labai naudinga, kai mašina hostuoja kelis projektus ir norite suprasti, kurį VirtualHost Apache naudoja. Apache dokumentacija rekomenduoja apachectl -S kaip diagnozuojant VirtualHosts konfigūraciją.

8. Testuoti svetainę


Dabar galite atidaryti savo naršyklę ir įvesti:

Text
http://mon-projet.local

Turėtumėte matyti:

Text
Mon projet fonctionne !
PHP fonctionne avec Apache.

Jeigu norite patikrinti testą iš terminalio:

Bash
curl http://mon-projet.local

Turėtumėte gauti PHP sukurto HTML turinį.

Galite taip pat patikrinti, ar Apache vykdomas PHP, sukurtuotu temporišką failą:

Bash
sudo nano /var/www/mon-projet/info.php

su:

PHP
<?php
phpinfo();

Dabar atidarykite:

Text
http://mon-projet.local/info.php

Turėtumėte gauti PHP informacijos puslapį.

Ištrinkite šį failą, nes phpinfo() rodo daug informacijos apie PHP aplinką:

Bash
sudo rm /var/www/mon-projet/info.php

Aktivuoti mod_rewrite, jei reikalinga

Daugybės modernių PHP programinės įrangos naudoja Apache rewrite modulį.

Jį galite įjungti su:

Bash
# 9. Įjungti `mod_rewrite`, jei reikia
---
sudo a2enmod rewrite

Tada patikrinkite konfigūraciją:

Bash
sudo apachectl configtest

ir iš naujo įkelti Apache:

Bash
sudo systemctl reload apache2

Su mod_rewrite įjungta, programa naudojant .htaccess galės nustatyti savo patikslius atminties perduodimo taisyklės.

10. Pridėti daugiau projektų


VirtualHosts yra labai naudingi, kai į vieną kompiuterį įdiegta keletas projekto PHP.

Pavyzdys:

Text
/var/www/site1
/var/www/site2
/var/www/site3

Galite sukurti:

Text
/etc/apache2/sites-available/site1.conf
/etc/apache2/sites-available/site2.conf
/etc/apache2/sites-available/site3.conf

site1.conf

<VirtualHost *:80>
ServerName site1.local
DocumentRoot /var/www/site1
<Directory /var/www/site1>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1-error.log
CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
</VirtualHost>

site2.conf

<VirtualHost *:80>
ServerName site2.local
DocumentRoot /var/www/site2
<Directory /var/www/site2>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2-error.log
CustomLog ${APACHE_LOG_DIR}/site2-access.log combined
</VirtualHost>

Tada pridėkite šiuos vardus į /etc/hosts:

Text
127.0.0.1 site1.local
127.0.0.1 site2.local

Įjunkite dvius projektus:

Bash
sudo a2ensite site1.conf
sudo a2ensite site2.conf

Patikrinkite konfigūraciją:

Bash
sudo apachectl configtest

Tada iš naujo įkelti Apache:

Bash
sudo systemctl reload apache2

Tada galėsite prieinamai naudoti dvi projektus per URL:

Text
http://site1.local
http://site2.local

11. Naudojant ServerAlias


Jei projektas turi būti prieinamas per keletą vardų, naudokite ServerAlias.

Pavyzdys:

<VirtualHost *:80>
ServerName mon-projet.local
ServerAlias www.mon-projet.local
DocumentRoot /var/www/mon-projet
<Directory /var/www/mon-projet>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon-projet-error.log
CustomLog ${APACHE_LOG_DIR}/mon-projet-access.log combined
</VirtualHost>

Tada galėsite naudoti:

Text
http://mon-projet.local

arba:

Text
http://www.mon-projet.local

Taip pat pridėkite šiuos vartotojų vardus į /etc/hosts:

Text
127.0.0.1 mon-projet.local www.mon-projet.local

Apache naudoja ServerName ir ServerAlias, kad galėtų apibrėžti, kuris VirtualHost atsakytų į nurodytą užklausą.

12. Ar reikia naudoti NameVirtualHost?


Priešingai nei senesniuose Apache versijose gali būti reikalinga ši direktoriaus įrašas:

NameVirtualHost *:80

Šios direktoriaus įrašo nėra reikalingos su Apache 2.4.

Modernaus Debian 13 konfigūracijos atveju reikia tik:

<VirtualHost *:80>
ServerName mon-projet.local
...
</VirtualHost>

Apache 2.4 natūraliai tvarka VirtualHosts pagal vardą.

Taigi, jei kurtate naują konfigūraciją, nebūtina pridėti NameVirtualHost *:80.

13. Galutinė struktūra


Šiuo metu mūsų įstojimas atrodo tokia:

Text
/var/www/
└── mon-projet/
└── index.php
/etc/apache2/
├── sites-available/
│ └── mon-projet.conf
└── sites-enabled/
└── mon-projet.conf -> ../sites-available/mon-projet.conf

Ir /etc/hosts turėtų atrodyti taip:

Text
127.0.0.1 mon-projet.local

VirtualHost yra šiame konfigūracijos bloke:

<VirtualHost *:80>
ServerName mon-projet.local
DocumentRoot /var/www/mon-projet
<Directory /var/www/mon-projet>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon-projet-error.log
CustomLog ${APACHE_LOG_DIR}/mon-projet-access.log combined
</VirtualHost>

Išvados


Sukurti VirtualHost Apache per Debian 13 projejto PHP lokaliniui kūrimui yra relativai paprastas procesas.

Essencinis komandiniai įrankiai yra:

Bash
sudo apt update
sudo apt install apache2 php libapache2-mod-php

Tada:

Bash
sudo mkdir -p /var/www/mon-projet
sudo nano /etc/apache2/sites-available/mon-projet.conf

Pridėkite domeną į:

Bash
sudo nano /etc/hosts

Po to įjunkite ir patikrinkite svetainę:

Bash
sudo a2ensite mon-projet.conf
sudo apachectl configtest
sudo systemctl reload apache2

Ir paskui:

Bash
sudo apachectl -S

Leidžia patikrinti, kuriuos VirtualHosts Apache faktine vietoje tvarko. Tada galite pasiekti savo projektą per:

Text
http://mon-projet.local

Šis metodas leidžia imitavti realaus svetainės struktūrą lokaliniuose testavimo aplinkose, o taip pat leidžia įkurti keletą atskirų PHP projektų vienoje Debian 13 mašinoje.

Jums taip pat gali patikti:

Komentarai

Kol kas nėra patvirtintų komentarų.

Prisijunkite su komentuotojo paskyra, kad galėtumėte komentuoti. Prisijungti.