Recent, m-am izbit de problema subdomeniilor pe localhost, atât pe Windows cât și pe Ubuntu. Nemai intrând în contact cu așa ceva căutarea s-a dovedit a fi una laborioasă, dar rezultatul a fost foarte bun, mai ales dându-mi seama de avantajele utilizării subdomeniilor.

Aș vrea să vă explic problema inițială: a trebuit să lucrez la un proiect care avea niște setări mai interesante prin .htaccess. Setările aveau legătură cu modulul Apache mod_rewrite, în fișier RewriteEngine fiind On. Opțiunea aceasta, împreună desigur cu altele trebuia să rescrie linkurile mai dificile în ceva user-friendly. Desigur, simpla creare a unui folder în care am “trântit” toate fișierele nu a fost cea mai inteligentă idee, toate path-urile sistemului  începând să fie date peste cap. Atunci mi-a venit ideea de subdomeniu. Acolo lucrurile sunt simple folderul principal devenind home folder pentru toate fisierele și folderele child. Problema a început pe Ubuntu, dar după ce am aflat soluția am zis să continui și pe Windows oferindu-mi un grad mult mai mare de ordonare și control.

Subdomeniile în Windows

  1. Primul lucru pe care trebuie să-l facem, deși nu e obligatoriu fiindcă îl putem face oricând, chiar și la final, e să modificăm fișierul hosts aflat în C:\Windows\System32\Drivers\etc și să adăugăm următoarea linie: 
    127.0.0.1 subdomeniu.localhost.com Linia de mai sus redirecționează domeniul la DNS-ul local, 127.0.0.1
  2. Deschidem acum fișierul httpd.conf din apache(2). Dacă avem WAMPP sau XAMPP trebuie doar să găsim fișierul ascuns pe undeva prin interfață. Vom decomenta următoarea linie: # Include conf/extra/httpd_vhosts.conf Cu linia de mai sus am activat hostul virtual.
  3. În funcție de ce platformă folosiți(WAMPP, XAMPP, sau apache pur și simplu) va trebui să activați două module apache, alias_module și vhost_alias_module.
  4. Acuma trebuie să edităm http-vhost.conf(Apache/conf/extra/http-vhost.conf) unde va trebui inserăm codul de mai jos:



ServerName localhost.com
ServerAlias www.localhost.com
DocumentRoot "D:\wamp\www"
ErrorLog "logs\errors.log"

Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all


#setam parent domain
ServerName localhost.com
ServerAlias *.localhost.com

#unde se afla subdomeniile - folderul subdomains l-am creat pentru a pune acolo toate subdomeniile
VirtualDocumentRoot "D:\wamp\www\subdomains\%1"
ErrorLog "logs\errors.log"

Options Indexes FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all


Pentru orice alt domeniu va trebui numai să creezi alt folder și să adaugi hosts(C:\Windows\System32\Drivers\etc) noul domeniu precum am făcut la primul pas.
 

Subdomeniile în Ubuntu

Cei cu Ubuntu, au putin mai mult de munca, dar pentru pasionați e destul de fain. Înainte de toate trebuie să vă spun că am creat toate opțiunile pentru un folder public_html care l-am creat în folderul meu home. Nu voi intra în detalii, căci acest lucru ar necesita probabil încă un articol, dar vă pot spune că atunci când lucrăm pe Ubuntu e bine să nu lucrăm în root. Am putea trece peste bariera permisiunilor fără prea multe dificultăți, dar de ce să facem asta când putea scăpa de o mulțime de probleme prin simpla creare a unui folder public_html în ~home/username/.

În acest articol voi merge totuși pe path-ul /var/www, dar vă sugerez să încercați a face ce v-am spus mai sus…ori desigur ceva mai bun, dar atunci să-mi spuneți și mie.

  1. Creăm un nou folder public_html sudo mkdir -p /var/www/public_html
  2. Următorul pas constă în alegerea subdomeniului și crearea unui folder care să conțină alte 4 foldere necesare. Putem face asta destul de simplu cu sudo mkdir -p /var/www/public_html/domain1.com/{public,private,log,cgi_bin} Vedeti ca sus nu exista spații libere între acolade.
  3. Salvăm în folderul domain1.com un dummy index.html în folderul public
  4. Acum folosim cat /etc/apache2/ports.conf Trebuie să existe aici setată opțiunea NameVirtualHost *:80
  5. Next… sudo nano /etc/apache2/sites_available/domain1.com si adaugam

    ServerAdmin webmaster@domain1.com
    ServerName domain1.com
    ServerAlias www.domain1.com

    DirectoryIndex index.html
    DocumentRoot /var/www/public_html/domain1.com/public
    ErrorLog /var/www/vhosts/domain1.com/log/error.log
    CustomLog /var/www/vhosts/domain1.com/log/access.log combined

  6. Acum va trebui să activăm site-ul sudo a2ensite domain1.com
  7. Restartăm apache: sudo service apache2 restart
  8. Deschidem ca și pe Windows fișierul hosts
    sudo nano /etc/hosts
    127.0.1.1 domain1.com

Acum, dacă ceva nu funcționează așa cum ar fi așteptat nu ezitați să comentați ca să rezolvăm once and forever this problem.

Join the Conversation

1 Comment

Leave a comment

Your email address will not be published. Required fields are marked *

Send this to a friend