Posts Introducción al despliegue de aplicaciones python
Post
Cancel

Introducción al despliegue de aplicaciones python

Clonamos el repositorio:

1
ernesto@honda:~/Documentos$ git clone https://github.com/josedom24/django_tutorial.git

Creamos la maquina virtual

1
ernesto@honda:~/virtualenv$ python3 -m venv practicadjango

Lo activamos:

1
ernesto@honda:~/virtualenv$ source practicadjango/bin/activate

Instalamos dependencias:

1
(practicadjango) ernesto@honda:~/Documentos/django_tutorial$ pip install -r requirements.txt
1
2
3
4
5
6
7
8
9
10
(practicadjango) ernesto@honda:~/Documentos/django_tutorial$ nano django_tutorial/settings.py

# Database

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Creamos la base de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(practicadjango) ernesto@honda:~/Documentos/django_tutorial$ python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
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 admin.0003_logentry_add_action_flag_choices... 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 auth.0009_alter_user_last_name_max_length... OK
  Applying polls.0001_initial... OK
  Applying sessions.0001_initial... OK

Creamos usuario administrador:

1
2
3
4
5
6
7
8
9
10
(practicadjango) ernesto@honda:~/Documentos/django_tutorial$ python3 manage.py createsuperuser

Nombre de usuario (leave blank to use 'ernesto'): admin
Dirección de correo electrónico: 
Password: 
Password (again): 
Esta contraseña es demasiado corta. Debe contener al menos 8 caracteres.
Esta contraseña es demasiado común.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

Iniciamos el servidor web:

1
(practicadjango) ernesto@honda:~/Documentos/django_tutorial$ python manage.py runserver

Creamos las preguntas y accedemos a /polls:

  • Instala en el servidor los servicios necesarios (apache2). Instala el módulo de apache2 para ejecutar código python.
1
2
3
4
5
debian@django:~$ sudo apt install apache2
debian@django:~$ sudo apt install apache2-dev
debian@django:~$ sudo apt install libapache2-mod-wsgi-py3
debian@django:~$ sudo apt install python3-pip
debian@django:~$ sudo pip3 install mod_wsgi

Clonamos y subimos el repositorio a GitHub:

1
2
3
4
(practicadjango) ernesto@honda:~/Documentos$ git clone git@github.com:ernestovazquez/django.git
(practicadjango) ernesto@honda:~/Documentos/django$ git add django_tutorial/
(practicadjango) ernesto@honda:~/Documentos/django$ git commit -m "copiado de django" 
(practicadjango) ernesto@honda:~/Documentos/django$ git push

Hacemos un pull para bajar los ficheros nuevos:

1
debian@django:~/django$ git pull

Configuración de apache2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
        ServerName www.django-ernesto.iesgn.org

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/django/django_tutorial
        WSGIDaemonProcess django-ernesto.iesgn.org python-path=/var/www/django/django_tutorial
        WSGIScriptAlias / /var/www/django/django_tutorial/django_tutorial/wsgi.py

        <Directory /var/www/django/django_tutorial>
          <Files wsgi.py>
            WSGIProcessGroup django-ernesto.iesgn.org
            WSGIApplicationGroup %{GLOBAL}
            Require all granted
          </Files>
        </Directory>

Editamos el setting.conf

1
2
3
4
5
6
root@django:/var/www/django/django_tutorial/django_tutorial# sudo nano settings.py

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ["www.django-ernesto.iesgn.org"]

Creamos el usuario administrador:

1
2
3
4
5
6
7
8
9
10
11
root@django:/var/www/django/django_tutorial# python3 manage.py createsuperuser

Nombre de usuario (leave blank to use 'root'):     
Dirección de correo electrónico: 
Password: 
Password (again): 
La contraseña es demasiado similar a la de nombre de usuario.
Esta contraseña es demasiado corta. Debe contener al menos 8 caracteres.
Esta contraseña es demasiado común.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

Cambio static:

1
2
3
root@django:/var/www/django/django_tutorial# nano django_tutorial/settings.py

STATIC_ROOT = '/var/www/django/django_tutorial/static'
1
root@django:/var/www/django/django_tutorial# python3 manage.py collectstatic
1
2
3
4
5
        Alias /static /var/www/django/django_tutorial/static

        <Directory /var/www/django/static>
          Require all granted
        </Directory>

This post is licensed under CC BY 4.0 by the author.