Posts Tagged ‘apache’

Deploying Flask to Apache2 on Ubuntu 13.04

09/07/2013

I had some trouble deploying a Flask app with Apache2, so here’s a minimum working configuration.

Virtual environment setup

virtualenv appname
cd appname
source bin/activate
pip install flask
mkdir -p src/appname www
echo "site.addsitedir(os.path.join(base, 'src'))" >> bin/activate_this.py
echo "from .appname import *" > src/appname/__init__.py
cat > src/appname/appname.wsgi <<EOF
activate_this = '/path/to/virtualenv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from appname import app as application
EOF
cat > src/appname/appname.py <<EOF
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Success?"

if __name__ == '__main__':
    app.run()
EOF

Virtual host configuration

<VirtualHost *:80>
    ServerName host.name
    ServerAlias www.host.name
    DocumentRoot /path/to/virtualenv/www
    <Directory /path/to/virtualenv/www>
        Order allow,deny
        Allow from all
    </Directory>
    WSGIScriptAlias /connote /path/to/virtualenv/src/connote/connote.wsgi
    WSGIDaemonProcess host.name processes=2 threads=15
    WSGIProcessGroup host.name
    <Directory /path/to/virtualenv/src/connote>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog /path/to/virtualenv/var/error.log
    LogLevel debug
</VirtualHost>

Configurar un servidor virtual en Apache2

06/08/2012

Me gusta mantener mis proyectos web organizados. Una forma de lograr esto con Apache2 es usando Virtual Hosts. Así Apache espera pedidos en una sola IP, pero según el dominio que se pida, sirve un sitio distinto.

Voy a explicar cómo crear un servidor virtual para pruebas locales, con el hostname notas.

Por el momento sólo configuramos el nombre del servidor y la ubicación de los documentos.

Crear como root el archivo /etc/apache2/sites-available/notas con el contenido:

<VirtualHost *:80>
    ServerName notas
    DocumentRoot /home/ignacio/notas
</VirtualHost>

Para activar el sitio, hay que hacer un link simbólico.

# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/notas 123-notas

(el número tiene que ver con el orden en que se cargan los archivos, no tiene mucha importancia).

Hay que instruirle a apache que vamos a usar servidores virtuales por nombre de dominio. Para eso, agregar al final de /etc/apache2/apache2.conf  la línea

NameVirtualHost *:80

Para que recargue la configuración,

# service apache2 reload

Por último, para que el dominio notas resuelva a nuestra PC, cambiamos /etc/hosts. En mi caso, cambié

127.0.0.1 localhost

por

127.0.0.1 localhost notas

Para probar la configuración, creamos la carpeta /home/ignacio/notas y el archivo /home/ignacio/notas/index.html con algún contenido como “Hola, mundo!”.
Apuntamos el navegador a http://notas/ y debería verse correctamente.