Primul pas este să instalați un server apache pe mediul de development și să îl configurați să suporte virtual host-uri (așa sunt configurate toate mediile de producție). Vom presupune că aplicația la care lucrăm se numește: myexample.com (va fi accesată în producție prin www.myexample.com).
Simulare DNS:
În fișierul hosts adăugăm următoare intrare:
127.0.0.1 localhost.myexample.com
În funcție de sistemul de operare folosit fișierul hosts poate fi găsit în:
- Windows: %WINDOWS%/system/drivers/etc/hosts
- Linux / Unix / OS X: /etc/hosts
Soluție pentru aplicație java
Plasăm liniile de mai jos într-un fișier în interiorul directorului de configurare apache. O să îl numim virtualhosts.conf.
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin rcosnita@myexample.com
ServerName localhost.myexample.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8080/myexample.com/
ProxyPassReverse / http://localhost:8080/myexample.com/
</VirtualHost>
În httpd.conf, la sfârșitul fișierului, adăugam Include "virtualhosts.conf".
Soluție pentru aplicație php:
Procedăm la fel ca și în cazul aplicațiilor java. VirtualHost-ul arată un pic diferit:
ServerAdmin rcosnita@myexample.com
ServerName localhost.myexample.com
DocumentRoot /Users/raduviorelcosnita/Proiecte/myexample.com
DirectoryIndex index.php
AllowOverride All
Options +Indexes +FollowSymLinks
Order allow,deny
Allow from all
Partea bună este că reușim să testăm și partea de rescriere url utilizând fișierul .htaccess. Este la fel ca în mediul de producție.
Soluție pentru aplicație python:
Pentru partea de python, lucrurile sunt un pic mai complicate deoarece există multe moduri de rulare în producție. Întrucât eu folosesc django și wsgi module o să descriu această modalitate de deploy:
ServerAdmin rcosnita@myexample.com
ServerName localhost.myexample.com
DocumentRoot /Users/raduviorelcosnita/Proiecte/myexample.com
Order allow,deny
Allow from all
WSGIDaemonProcess myexample.com processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup myexample.com
WSGIScriptAlias / /Users/raduviorelcosnita/Proiecte/myexample.com/src/mysite/apache/django.wsgi
Order allow,deny
Allow from all
Aici sunt multe detalii de povestit, dar ceea ce facem este să mapăm handler-ul de fișiere python pentru aplicația noastră django. Pentru a face refresh la aplicație, trebuie să executăm următoare instrucțiune pe linux: touch django.wsgi
Din câte știu, este singura modalitate de deploy a unei aplicații python care nu necesită restartarea server-ului apache.
Încheiere
Indiferent de tehnologia folosită pentru a dezvolta aplicația, tot ce va trebui să faceți în browser este să introduceți url-ul: http://localhost.myexample.com/. Cu siguranță această metodă de acces a aplicației este mult mai aproape de mediul de producție decât varianta clasică de acces direct pe server-ul dedicat: tomcat / jboss pentru java sau server-ul propriu django pentru python.