Práctica: Instalación de un CMS python
Apartado 1
Instalar Django Fiber en desarrollo, utilizando un entorno virtual
Escenario:
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.define :practicacmspython do |practicacmspython|
practicacmspython.vm.box = "rockylinux/8"
practicacmspython.vm.hostname = "practicacmspython"
end
end
Creo entorno virtual:
Descargo el proyecto:
Instalo paquetes necesarios:
sudo dnf groupinstall 'Development Tools'
pip install --upgrade pip
pip install -r requirements.txt
pip install django-fiber
Modifico settings.py
:
Creo las tablas:
Creo el usuario admin:
Username (leave blank to use 'vagrant'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
- Username: admin
- Password: 123admin456
Ejecuto el server web de desarrollo:
Pruebo que funciona:
Apartado 2
Personalizar la página
Para ello es necesario acceder a /admin
.
Principal:
Artículo 1:
Apartado 3
Volcar la base de datos
Guardar la aplicación en repositorio
Lo creo: https://github.com/adriasir123/django-fiber
Modifico .gitignore
:
*.pyc
/build/
/dist/
/testproject/reports/
#/testproject/static/
django_fiber.egg-info
.tox
testproject/fiber_test/__pycache__
testproject/testproject/__pycache__
Subo cambios al repo:
git remote remove origin
git branch -M main
git add .
git config --global user.email "adristudy@gmail.com"
git config --global user.name "Adrián Jaramillo"
git commit -m "Initial commit"
git push --set-upstream origin master
Apartado 4
Desplegar la app en hera con Utiliza uWSGI, y la BD en ares. . El contenido estático debe servirlo el servidor web. La aplicación será accesible en la url python.adrianj.gonzalonazareno.org.
Clonar repositorio:
Creo entorno virtual:
Instalo paquetes necesarios:
sudo dnf groupinstall 'Development Tools'
pip install --upgrade pip
pip install -r requirements.txt
pip install django-fiber
Instalar módulo para que python se pueda comunicar con MariaDB:
Crear BD:
Crear usuario con permisos sobre django_fiber_db
:
CREATE USER 'django_fiber_user' IDENTIFIED BY '1234';
GRANT USAGE ON *.* TO 'django_fiber_user'@'%' IDENTIFIED BY '1234';
GRANT ALL privileges ON `django_fiber_db`.* TO 'django_fiber_user'@'%';
FLUSH PRIVILEGES;
Modificar la conexión a la BD en settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_fiber_db',
'USER': 'django_fiber_user',
'PASSWORD': '1234',
'HOST': 'bd.adrianj.gonzalonazareno.org',
'PORT': '',
}
}
Crear tablas en MariaDB:
Recuperar de datos:
Instalar uwsgi
Creo /var/www/django-fiber/testproject/django-fiber.ini
:
[uwsgi]
http = :8080
chdir = /var/www/django-fiber/testproject
wsgi-file = /var/www/django-fiber/testproject/testproject/wsgi.py
processes = 4
threads = 2
Crear unidad systemd, /etc/systemd/system/uwsgi-django-fiber.service
:
[Unit]
Description=uwsgi-django-fiber
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=root
Group=root
Restart=always
ExecStart=/home/vagrant/venv/bin/uwsgi /var/www/django-fiber/testproject/django-fiber.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
WorkingDirectory=/var/www/django-fiber/testproject
Environment=PYTHONPATH='/var/www/django-fiber/testproject:/home/vagrant/venv/lib/python3.6/site-packages'
PrivateTmp=true
Cambio permisos:
sudo chown -R apache:apache /home/vagrant/django-fiber/
sudo chown -R apache:apache /home/vagrant/venv
sudo chmod 777 django-fiber.ini
Deshabilitar selinux:
La activo e inicio:
Apache + uWSGI
Creo /etc/httpd/conf.d/python.conf
:
<VirtualHost *:80>
ServerName python.adrianj.gonzalonazareno.org
DocumentRoot /var/www/django-fiber/testproject
<Directory /var/www/django-fiber/testproject>
Require all granted
Options +FollowSymLinks
</Directory>
ProxyPass /static/ !
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
Mover la app:
Permisos:
Reinicio Apache:
Nuevos registro DNS
Añado a db.externa.adrianj.gonzalonazareno.org
:
Añado a db.dmz.adrianj.gonzalonazareno.org
:
Añado a db.interna.adrianj.gonzalonazareno.org
:
Reiniciar bind9:
Modifico puntos de entrada
Reinicio uwsgi: