Vamos a desplegar un cms en python como es mezzanine
, para ello vamos a seguir los siguientes pasos:
Instalar apache, modulo wsgi, python y msql
El primer paso sera instalar un servidor web apache y las distintas dependencias necesarias para su correcto funcionamiento, como, python, modulo wsgi y la base de datos MySQL.
root@python:/home/usuario# apt update && apt upgrade root@python:/home/usuario# apt install apache2 libapache2-mod-wsgi python-virtualenv python python-setuptools python-dev build-essential mysql-server libmysqlclient-dev
Creamos un entorno virtual
Para poder utilizar pip
, vamos a crear un entorno virtual y lo activaremos:
usuario@python:~$ virtualenv mezzanine Running virtualenv with interpreter /usr/bin/python2 New python executable in mezzanine/bin/python2 Also creating executable in mezzanine/bin/python Installing setuptools, pip...done. usuario@python:~$ source mezzanine/bin/activate (mezzanine)usuario@python:~$
Una vez creado el entorno virtual actualizamos pip
y setuptools
:
pip install --upgrade pip pip install setuptools pip install setuptools --upgrade
Instalamos mezzanine y pillow
Una vez tenemos actualizado pip
, procedemos a instalar mezzanine
y pillow
:
(mezzanine)usuario@python:~$ pip install mezzanine (mezzanine)usuario@python:~$ pip install pillow
Creamos proyecto para mezzanine
El siguiente paso es crear un proyecto e instalar el paquee mysql-python
para poder utilizar la base de datos de MySQL.
(mezzanine)usuario@python:~$ mezzanine-project juanluramirez (mezzanine)usuario@python:~$ pip install mysql-python
Crear una base de datos y un usuario con privilegios
Es importante no solo crear una base de datos, sino, también crear un usuario con privilegios:
(mezzanine)usuario@python:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.5.54-0+deb8u1 (Debian) Copyright (c) 2000, 2016, 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 juanluramirez -> ; Query OK, 1 row affected (0.00 sec) mysql> create user 'juanlu' identified by 'juanlu'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on juanluramirez.* to 'juanlu'@'localhost' identified by 'juanlu' with grant option; Query OK, 0 rows affected (0.00 sec)
Enlazar base de datos a mezzanine
Una vez tengamos creada la base de datos, vamos a enlazarla a mezzanine modificando el fichero juanluramirez/juanluramirez/local_settings.py
, primero editamos el apartado DATABASES
, para que quede así:
DATABASES = { "default": { # Ends with "postgresql_psycopg2", "mysql", "sqlite3" or "oracle". "ENGINE": "django.db.backends.mysql", # DB name or path to database file if using sqlite3. "NAME": "juanluramirez", # Not used with sqlite3. "USER": "juanlu", # Not used with sqlite3. "PASSWORD": "juanlu", # Set to empty string for localhost. Not used with sqlite3. "HOST": "", # Set to empty string for default. Not used with sqlite3. "PORT": "", } }
Y a continuación descomentamos la linea «ALLOWED_HOSTS» y añadimos la IP de nuestra maquina:
################### # DEPLOY SETTINGS # ################### # Domains for public site ALLOWED_HOSTS = ["[IP_Maquina]"]
Poblamos la base de datos.
Ahora una vez enlazada vamos a poblar la base de datos, para ello ejecutamos el script en python manage.py
y la opción createdb
:
(mezzanine)usuario@python:~/juanluramirez$ python manage.py createdb Operations to perform: Apply all migrations: admin, auth, blog, conf, contenttypes, core, django_comments, forms, galleries, generic, pages, redirects, sessions, sites, twitter Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sites.0001_initial... OK Applying blog.0001_initial... OK Applying blog.0002_auto_20150527_1555... OK Applying conf.0001_initial... OK Applying core.0001_initial... OK Applying core.0002_auto_20150414_2140... OK Applying django_comments.0001_initial... OK Applying django_comments.0002_update_user_email_field_length... OK Applying django_comments.0003_add_submit_date_index... OK Applying pages.0001_initial... OK Applying forms.0001_initial... OK Applying forms.0002_auto_20141227_0224... OK Applying forms.0003_emailfield... OK Applying forms.0004_auto_20150517_0510... OK Applying forms.0005_auto_20151026_1600... OK Applying galleries.0001_initial... OK Applying galleries.0002_auto_20141227_0224... OK Applying generic.0001_initial... OK Applying generic.0002_auto_20141227_0224... OK Applying pages.0002_auto_20141227_0224... OK Applying pages.0003_auto_20150527_1555... OK Applying redirects.0001_initial... OK Applying sessions.0001_initial... OK Applying sites.0002_alter_domain_unique... OK Applying twitter.0001_initial... OK A site record is required. Please enter the domain and optional port in the format 'domain:port'. For example 'localhost:8000' or 'www.example.com'. Hit enter to use the default (127.0.0.1:8000): [IP_Maquina] Creating default site record: [IP_Maquina] ... Creating default account ... Username (leave blank to use 'usuario'): juanlu Email address: [Email] Password: [Contraseña] Password (again): [Contraseña] Superuser created successfully. Installed 2 object(s) from 1 fixture(s) Would you like to install some initial demo pages? Eg: About us, Contact form, Gallery. (yes/no): yes Creating demo pages: About us, Contact form, Gallery ... Installed 16 object(s) from 3 fixture(s)
Configuracion contenido estatico
Para ello vamos a añadir las siguiente lineas en el fichero juanluramirez/local_settings.py
PROJECT_APP_PATH = os.path.dirname(os.path.abspath(__file__)) PROJECT_APP = os.path.basename(PROJECT_APP_PATH) PROJECT_ROOT = BASE_DIR = os.path.dirname(PROJECT_APP_PATH) CACHE_MIDDLEWARE_KEY_PREFIX = PROJECT_APP STATIC_URL = "/static/" STATIC_ROOT = os.path.join(PROJECT_ROOT, STATIC_URL.strip("/"))
Y ejecutamos el script manage.py
con la opcion collectstatic
:
(mezzanine)usuario@python:~/juanluramirez$ python manage.py collectstatic You have requested to collect static files at the destination location as specified in your settings: /home/usuario/juanluramirez/static This will overwrite existing files! Are you sure you want to do this? Type 'yes' to continue, or 'no' to cancel: yes 412 static files copied to '/home/usuario/juanluramirez/static'.
Desactivamos el entorno virtual
Por ultimo vamos a desactivar el entorno virtual.
(mezzanine)usuario@python:~/juanluramirez$ deactivate usuario@python:~/juanluramirez$
Crear virtualhost para mezzanine
Para ello vamos a crear un virtualhost que vamos a llamar mezzanine.conf
:
root@python:/home/usuario# cd /etc/apache2/sites-available/ root@python:/etc/apache2/sites-available# cp 000-default.conf mezzanine.conf root@python:/etc/apache2/sites-available# nano mezzanine.conf
Y dejamos el fichero de configuracion creado asi:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/usuario/juanluramirez/ Alias /static /home/usuario/juanluramirez/static <Directory /home/usuario/juanluramirez/static> Require all granted </Directory> <Directory /home/usuario/juanluramirez/juanluramirez> <Files wsgi.py> Require all granted </Files> </Directory> WSGIDaemonProcess mezzanine \ python-home=/home/usuario/mezzanine \ python-path=/home/usuario/juanluramirez/:/home/usuario WSGIProcessGroup mezzanine WSGIScriptAlias / /home/usuario/juanluramirez/juanluramirez/wsgi.py ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Deshabilitamos el virtualhost por defecto
Deshabilitamos el sitio por defecto 000-default.conf
, activamos el nuestro mezzanine.conf
y reiniciamos el servicio
root@python:/etc/apache2/sites-available# a2dissite 000-default.conf Site 000-default disabled. To activate the new configuration, you need to run: service apache2 reload root@python:/etc/apache2/sites-available# a2ensite mezzanine.conf Enabling site mezzanine. To activate the new configuration, you need to run: service apache2 reload root@python:/etc/apache2/sites-available# systemctl restart apache2
Prueba funcionamiento
Una vez realizado esto tendremos nuestro CMS en Python desplegado:
No se han encontrado comentarios