Depliegue de CMS python: Mezzanine

Tarea 1: Instalación de Mezzanine en el entorno de desarrollo

Instala localmente (usando un entrono virtual) el CMS Mezzazine. Realiza una modificación en la página web. Guarda los ficheros generados durante la instalación en un repositorio github.

Entrega una breve documentación de los pasos para realizar la instalación. Entrega una captura de pantalla donde se vea el acceso al servidor web de desarollo (2 punto)

Los paquetes necesario son:

root@marshall:/home/ubuntu# apt install apache2 libapache2-mod-wsgi python-virtualenv python python-setuptools python-dev build-essential

Creamos el entorno virtual

ubuntu@marshall:~$ virtualenv mezzanine

En el entorno, instalamos mezzanine y creamos un proyecto

ubuntu@marshall:~$ cd mezzanine
ubuntu@marshall:~$ source bin/activate
(mezzanine) ubuntu@marshall:~/mezzanine$ pip install mezzanine
(mezzanine) ubuntu@marshall:~/mezzanine$ mezzanine-project mezza

Una vez creado, ejecutamos:

(mezzanine) ubuntu@marshall:~/mezzanine$ cd mezza
(mezzanine) ubuntu@marshall:~/mezzanine/mezza$ python manage.py collectstatic
(mezzanine) ubuntu@marshall:~/mezzanine/mezza$ python manage.py collecttemplates
(mezzanine) ubuntu@marshall:~/mezzanine/mezza$ python manage.py createdb

Lo siguiente es indicar los ALLOWED_HOSTS en mezza/local_settings.py:

# Domains for public site
ALLOWED_HOSTS = ["172.22.200.91","127.0.0.1"]

Para configurar apache, copiamos el default a mezzanine.conf y cambiamos lo parámetros necesarios para que quede:

<VirtualHost *:80>
DocumentRoot /home/ubuntu/mezzanine/mezza/

Alias /static /home/ubuntu/mezzanine/mezza/static

<Directory /home/ubuntu/mezzanine/mezza/static>
Require all granted
</Directory>

<Directory /home/ubuntu/mezzanine/mezza/mezza>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess mezzanine \
python-home=/home/ubuntu/mezzanine \
python-path=/home/ubuntu/mezzanine/mezza/:/home/ubuntu
WSGIProcessGroup mezzanine
WSGIScriptAlias / /home/ubuntu/mezzanine/mezza/mezza/wsgi.py

ErrorLog ${APACHE_LOG_DIR}/mezzanine.log
CustomLog ${APACHE_LOG_DIR}/mezzanine.log combined
</VirtualHost>

Los siguientes pasos son:

root@marshall:/home/ubuntu/mezza# a2dissite 000-default.conf 
Site 000-default disabled.
To activate the new configuration, you need to run:
 service apache2 reload
root@marshall:/home/ubuntu/mezza# a2ensite mezzanine.conf 
Enabling site mezzanine.
To activate the new configuration, you need to run:
 service apache2 reload
root@marshall:/home/ubuntu/mezza# systemctl reload apache2

Nos aseguramos que los permisos son los correctos:

root@marshall:/home/ubuntu/mezza# chown -R www-data. /home/ubuntu/mezzanine/

He modificado el index.html, que se encuentra en  /home/ubuntu/mezzanine/mezza/templates/index.html

1.png

Por comodidad y seguridad me he pasado el directorio a mi equipo con scp, y desde ahi lo he subido a github

scp -r ubuntu@172.22.200.91:/home/ubuntu/mezzanine .
git clone git@github.com:marromang/mezzanine.git
cp -r /home/maria/mezzanine/ mezzanine/
git add  *
git commit -m 'upload'
git push

Y ya está en el responsorio.

Tarea 2: Migración a un entorno de producción

Prepara el entorno de producción con un entrono virtual. Instala el servidor web que vas a utilizar (apache o nginx). Instala el gestor de base de datos que vas a utilzar (mysql, postgress).

  • Clona tu repositorio con tus ficheros del CMS.
  • Realiza una copia de seguridad de los datos del gestor de contenido en desarrollo, y realiza la migración de forma adecuada

Entrega una breve documentación de los pasos para realizar la instalación. Teniendo en cuenta las siguientes puntuaciones:

  • Usar un entorno virtual con python2 (1 punto), utilizar python3 (2 puntos).
  • Usar apache2 (1 punto), usar nginx (2 puntos).
  • Usar mysql (1 punto), usar postgreSQL (2 puntos).
  • Usar una URL del tipo www.tupagina.com (1 punto), usar una URL del tipo www.tupagina.com/blog (2 puntos)
Entrega una captura de pantalla donde se vea el acceso al servidor web de producción.
Instalamos los paquetes necesarios:
ubuntu@lilly:~$ sudo apt install apache2 libapache2-mod-wsgi python-virtualenv python python-setuptools python-dev build-essential mysql-server libmysqlclient-dev

Creamos el entorno virtual, actualizamos pip y setuptools

ubuntu@lilly:~$ virtualenv mezzanine
(mezzanine) ubuntu@lilly:~/mezzanine$ pip install --upgrade pip
(mezzanine) ubuntu@lilly:~/mezzanine$ pip install setuptools
(mezzanine) ubuntu@lilly:~/mezzanine$ pip install setuptools --upgrade

Instalamos mezzanine y creamos el proyecto

(mezzanine) ubuntu@lilly:~/mezzanine$ pip install mezzanine
(mezzanine) ubuntu@lilly:~/mezzanine$ mezzanine-project mezza

Para tener los mismos datos que el entorno de desarrollo, clonamos el repositorio

ubuntu@lilly:~/mezzanine https://github.com/marromang/mezzanine.git

Instalamos el paquete mysql-python:

(mezzanine) ubuntu@lilly:~/mezzanine$ pip install mysql-python

Creamos una base de datos y un usuario con privilegios:

(mezzanine) ubuntu@lilly:~/mezzanine$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database maria;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'maria' identified by 'maria';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on maria.* to 'maria'@'localhost' identified by 'maria';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Ahora enlazamos la base de datos con mezzanine en el fichero mezza/mezza/local_settings.py y añadimos “www.mezza-maria.org” a los ALLOWED-HOSTS

DATABASES = {
 "default": {
 # Ends with "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
 "ENGINE": "django.db.backends.sqlite3",
 # DB name or path to database file if using sqlite3.
 "NAME": "maria",
 # Not used with sqlite3.
 "USER": "maria",
 # Not used with sqlite3.
 "PASSWORD": "maria",
 # Set to empty string for localhost. Not used with sqlite3.
 "HOST": "",
 # Set to empty string for default. Not used with sqlite3.
 "PORT": "",
 }
}

Poblamos la base de datos:

(mezzanine) ubuntu@lilly:~/mezzanine/mezza$ python manage.py createdb

Creamos el virtual host para mezzanine en /etc/apache2/sites-available/mezzanine.conf

<VirtualHost *:80>
DocumentRoot /home/ubuntu/mezzanine/mezza/

Alias /static /home/ubuntu/mezzanine/mezza/static

<Directory /home/ubuntu/mezzanine/mezza/static>
Require all granted
</Directory>

<Directory /home/ubuntu/mezzanine/mezza/mezza>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess mezzanine \
python-home=/home/ubuntu/mezzanine \
python-path=/home/ubuntu/mezzanine/mezza/:/home/ubuntu
WSGIProcessGroup mezzanine
WSGIScriptAlias / /home/ubuntu/mezzanine/mezza/mezza/wsgi.py

ErrorLog ${APACHE_LOG_DIR}/mezzanine.log
CustomLog ${APACHE_LOG_DIR}/mezzanine.log combined
</VirtualHost>

Acitvamos el sitio de mezzanine

ubuntu@lilly:~/mezzanine/mezza$ sudo nano /etc/apache2/sites-available/mezzanine.conf

Reinciamos apache:

ubuntu@lilly:~/mezzanine/mezza$ sudo systemctl restart apache2

2.png

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *