Categorías
Python

Los Mejores Libros de Python

 

Tabla de contenidos Configuración

  • DevelopmentDatabase SetupDependency
  • de configuración de base de datos
  • Dependencia de configuración
  • cordura Check
  • DeploymentFedora 24 SetupNon-Root Configuración UserRequired PackagesPostgres SetupProject SetupDependency
  • Fedora 24 Configuración
  • no root usuario
  • Obligatorio Paquetes
  • Configuración

  • Postgres Configuración
  • Proyecto

  • Dependencia de configuración
  • cordura Check (toma 2) Configuración
  • Gunicorn
  • Nginx Config
  • Gunicorn inicio ScriptModifying política SELinux Reglas
  • modificar la política de SELinux Reglas
  • Systemd
  • cordura Check (última !)
  • de configuración de base de datos de configuración
  • Dependencia
  • Fedora 24 Configuración
  • usuario no root
  • Obligatorio paquetes de instalación
  • Postgres Configuración
  • Proyecto

  • Dependencia de configuración
  • Modifyi ng Política SELinux Reglas

La última vez que creó un proyecto Django usando cookiecutter, logró el entorno de aplicaciones a través del estibador, y luego desplegado la aplicación del océano digital. En este tutorial, vamos a alejarse de estibador y detalle un desarrollo de flujo de trabajo de implementación de un proyecto cookiecutter-Django en Fedora 24.

Actualizaciones :

  • 11/15/2016: refactorizado Nginx config y actualiza a la última versión de Django (v1.10.3).
  • 10.06.2016: Se ha actualizado a la última versión de Fedora (v24), cookiecutter (v1.4.0), cookiecutter-django, y Django (v1.10.1).

Desarrollo

Instalar cookiecutter a nivel mundial y luego generar un proyecto Django bootstrap:

$ pip install cookiecutter==1.4.0
$ cookiecutter https://github.com/pydanny/cookiecutter-django.git

Este comando se ejecuta con el cookiecutter cookiecutter-django cesión temporal, lo que nos permite entrar en los detalles específicos del proyecto. (Nombramos el proyecto y el repositorio django_cookiecutter_fedora .)

NOTA : Confirmar la sección Configuración local desde el post anterior para obtener más información sobre este comando, así como la estructura del proyecto generado.

para poder comenzar nuestro proyecto Django, todavía nos quedamos con unos pasos …

de configuración de base de datos

En primer lugar, tenemos que configurar Postgres desde cookiecutter Django lo utiliza como su base de datos por defecto (ver django_cookiecutter_fedora / config / settings /common.py para obtener más información). Sigue los pasos para configurar un servidor de base de datos PostgreSQL, de cualquier recurso bien en Internet o simplemente desplazarse hacia abajo a la sección de implementación para su puesta en marcha en Fedora.

NOTA : Si estás en un Mac, echa un vistazo a Postgres.app.

Una vez que el servidor de Postgres se está ejecutando, crear una nueva base de datos desde psql que comparte el mismo nombre que el nombre del proyecto:

$ create database django_cookiecutter_fedora;
CREATE DATABASE

NOTA : Puede haber alguna variación en el comando anterior para la creación de una base de datos basada en la versión de Postgres. Puede comprobar si el comando correcto en la documentación más reciente Postgres’ encontrar aquí. Configuración

Dependencia

A continuación, con el fin de obtener su proyecto de Django en un estado listo para el desarrollo, navegue hasta el directorio raíz, crear / activar un entorno virtual, y luego instalar las dependencias:

$ cd django_cookiecutter_fedora
$ pyvenv-3.5 .venv
$ source .venv/bin/activate
$ ./utility/install_python_dependencies.sh

cordura Compruebe

Aplicar la migraciones y luego ejecutar el servidor de desarrollo local:

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver

Asegúrese de que todo está bien, navegando a http: // localhost: 8000 / en su navegador para ver el Proyecto rápida página de inicio:

Una vez hecho esto, matar el servidor de desarrollo , inicializar un nuevo repositorio git, comprometerse, y git push a Github.

despliegue

Con la configuración del proyecto y se ejecute localmente, podemos ahora pasar a la implementación en la que vamos a utilizar las siguientes herramientas:

  • Fedora 24
  • Postgres
  • Nginx
  • gunicorn

Fedora 24 Configuración

configurar una rápida gota del océano digital, asegurándose de usar una imagen de Fedora 24. Para obtener ayuda, seguir este tutorial. Asegúrese de configurar una clave SSH para acceso seguro.

Ahora vamos a actualizar nuestro servidor. SSH en el servidor como root, y luego disparan el proceso de actualización:

$ ssh root@SERVER_IP_ADDRESS
# dnf upgrade

no root usuario

A continuación, vamos a configurar un usuario no root para que las aplicaciones no se ejecutan con privilegios administrativos, lo que hace que el sistema sea más seguro.

Como usuario root, siga estos comandos para configurar un usuario no root:

# adduser
# passwd
Changing password for user .
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

En el anterior fragmento de código que hemos creado el nuevo usuario no root de usuario a continuación, especifica una contraseña para dicho usuario. Ahora tenemos que añadir a este usuario al grupo administrativo de modo que puedan ejecutar comandos que requieren privilegios de administrador con sudo:

# usermod -a -G wheel

salida desde el servidor y vuelva a entrar de nuevo ya que el usuario no root. ¿Se dio cuenta de que el intérprete de comandos cambia de un # (signo de libra) a $ (signo de dólar)? Esto indica que se ha conectado como un usuario no root.

Obligatorio Paquetes

mientras está conectado como el usuario no root, descargar e instalar los siguientes paquetes:

NOTA : A continuación damos a nuestros derechos de root de usuario no root (recomendado!). Si por casualidad usted no desea dar los derechos de root de usuario no root de forma explícita, que tendrá que anteponer sudo palabra clave con cada comando se ejecuta en el terminal. Configuración

$ sudo su
# dnf install postgresql-server postgresql-contrib postgresql-devel
# dnf install python3-devel python-devel gcc nginx git

Postgres

Con las dependencias descargado e instalado, sólo tenemos que configurar nuestro servidor Postgres y crear una base de datos.

Inicializar Postgres y después iniciar manualmente el servidor:

# sudo postgresql-setup initdb
# sudo systemctl start postgresql

A continuación, inicie sesión en el servidor de Postgres por el cambio (su) para el usuario postgres:

# sudo su - postgres
$ psql
postgres=#

Ahora crear un usuario Postgres y la base de datos necesaria para nuestro proyecto, asegurándose de que la nombre de usuario coincide con el nombre del usuario no root:

postgres=# CREATE USER WITH PASSWORD '';
CREATE ROLE
postgres=# CREATE DATABASE django_cookiecutter_fedora;
CREATE DATABASE
postgres=# GRANT ALL ON DATABASE django_cookiecutter_fedora TO ;
GRANT

NOTA : Si necesita ayuda, por favor, siga la guía oficial para la creación de Postgres en Fedora.

salida psql y regreso a su sesión de shell de usuario no root:

postgres=# \q
$ exit

Al salir de la sesión de Postgres, volverá de nuevo a su usuario no root del sistema. [Nombre de usuario @ django-cookiecutter de implementar ~] #.

NOTA : ¿Se dio cuenta el signo # en el indicador? Esto aparece ahora porque nos dimos nuestro usuario no root los derechos de root antes de comenzar con la configuración de nuestro servidor. Si no ves esto, ya sea que tenga que ejecutar sudo su nuevo o anteponga cada comando con sudo.

Configurar PostgreSQL para que se inicie cuando se inicia el servidor / reinicia:

# sudo systemctl enable postgresql
# sudo systemctl restart postgresql

Configuración del Proyecto

Clon la estructura del proyecto de tu repositorio GitHub a la / opt directorio:

# sudo git clone /opt/

NOTA : Se desea utilizar el repositorio asociado con este tutorial? Basta con ejecutar: Configuración

$ sudo git clone https://github.com/realpython/django_cookiecutter_fedora /opt/django_cookiecutter_fedora

Dependencia

A continuación, con el fin de obtener su proyecto de Django en un estado listo para su despliegue, crear y un virtualenv activa dentro del directorio raíz de su proyecto:

# cd /opt/django_cookiecutter_fedora/
# sudo pip3 install virtualenv
# sudo pyvenv-3.5 .venv

Antes de activar la virtualenv, dar a la corriente, no -root derechos de administrador de usuario (si no se da):

$ sudo su
# source .venv/bin/activate

diferencia con la puesta en marcha del entorno de desarrollo desde arriba, antes de instalar las dependencias que necesita para instalar todas las bibliotecas exteriores de almohada. Echa un vistazo a este recurso para obtener más información.

# dnf install libtiff-devel libjpeg-devel libzip-devel freetype-devel
# dnf install lcms2-devel libwebp-devel tcl-devel tk-devel

continuación, tenemos que instalar un paquete más con el fin de garantizar que no obtenemos los conflictos durante la instalación de dependencias en nuestro virtualenv.

# dnf install redhat-rpm-config

A continuación, ejecute:

# ./utility/install_python_dependencies.sh

Una vez más, esto instalará todos los requisitos, local y de producción de la base. Esto es sólo para una rápida comprobación de validez para asegurar que todo está funcionando. Dado que este es técnicamente el entorno de producción, vamos a cambiar el entorno en breve.

NOTA : Desactivar la virtualenv. Ahora bien, si se emite un comando de salida – por ejemplo, la salida – el usuario no root ya no tendrá derechos de root. Observe el cambio en el símbolo (de # $ a). Dicho esto, el usuario puede activar el virtualenv. ¡Intentalo!

cordura Check (tome 2)

Aplicar todas las migraciones:

$ python manage.py makemigrations
$ python manage.py migrate

Ahora ejecutar el servidor:

$ python manage.py runserver 0.0.0.0:8000

Para asegurar que las cosas están funcionando bien, sólo hay que visitar la dirección IP del servidor en el navegador – por ejemplo,: 8000. Matar al servidor cuando haya terminado. Configuración

Gunicorn

Antes de configurar Gunicorn, tenemos que hacer algunos cambios en la configuración de producción, en el módulo /config/settings/production.py . Echar un vistazo a la configuración de producción aquí, que son los ajustes mínimos necesarios para la implementación de nuestro proyecto Django a un servidor de producción.

de actualizar estas, abra el archivo en VI:

$ sudo vi config/settings/production.py

En primer lugar, seleccionar y borrar todo:

:%d

y luego copiar la nueva configuración y las pega en el archivo ahora vacío introduciendo modo de inserción y luego pegar. Asegúrese de actualizar las variables allowed_hosts también (muy, muy importante!) Con la dirección IP o nombre de host del servidor. INSERT modo de salida y luego Save and Exit:

:wq

Una vez hecho esto, tenemos que añadir algunas variables de entorno en el archivo .bashrc , ya que la mayoría de los ajustes de configuración provienen de las variables de entorno en el archivo production.py .

Una vez más, el uso vi para editar este archivo:

$ vi ~/.bashrc

el modo insertar y agregar lo siguiente:

# Environment Variables
export DJANGO_SETTINGS_MODULE='config.settings.production'
export DJANGO_SECRET_KEY='CHANGEME!!!m_-0ujru4yw4@!u7048_(#1a*y_g2v3r'
export DATABASE_URL='postgres:///django_cookiecutter_fedora'

dos cosas a la nota:

Una vez más, el modo INSERT salida, y luego en Guardar y salir VI.

Ahora acaba de volver a cargar el archivo .bashrc :

$ source ~/.bashrc

listo para probar ?! Dentro del directorio raíz, con el virtualenv activa, ejecutar el servidor gunicorn:

$ gunicorn --bind :8000 config.wsgi:application

Esto hará que nuestra aplicación web, una vez más, servir en: 8000.

tener en cuenta que en cuanto nos registramos fuera de nuestro servidor de este comando se detendrá y por lo tanto ya no sería capaz de servir a nuestra aplicación web. Por lo tanto, tenemos que hacer nuestro servidor gunicorn ejecuta como un servicio para que pueda iniciarse, detenerse, y monitoreado.

Nginx Config

Siga estos pasos para añadir un archivo de configuración para hacer que nuestra servir Django proyecto a través Nginx:

$ cd /etc
ginx/conf.d
$ sudo vi django_cookiecutter_fedora.conf

Añadir lo siguiente, asegurándose de actualizar el servidor, server, y la ubicación:

upstream app_server {
server 127.0.0.1:8001 fail_timeout=0;
}

server {
listen 80;
server_name ;
access_log /var/log
ginx/django_project-access.log;
error_log /var/log
ginx/django_project-error.log info;

keepalive_timeout 5;

# path for staticfiles
location /static {
autoindex on;
alias /opt/django_cookiecutter_fedora/staticfiles/;
}

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}

Guardar y salir VI, y luego reiniciar el servidor Nginx:

$ sudo systemctl restart nginx.service

Eso es todo!

Gunicorn script de arranque de

Ahora vamos a crear un script de inicio Gunicorn que se desarrollará como un ejecutable, por lo que nuestra bootstrap de ejecución de aplicaciones web Django a través del servidor Gunicorn, encaminado a través de Nginx.

Dentro de la raíz del proyecto, ejecute:

$ sudo mkdir deploy log
$ cd deploy
$ sudo vi gunicorn_start

El contenido de la secuencia de comandos gunicorn_start se pueden encontrar aquí. Se divide en 3 partes significativas, que son, en su mayor parte, explica por sí mismo. Para cualquier pregunta, por favor, comentario a continuación.

NOTA : Asegúrese de que las variables de usuario y grupo coincide con el mismo usuario y grupo para el usuario no root.

pegue el contenido en VI, a continuación, guardar y salir.

Por último, vamos a hacerlo ejecutable:

$ sudo chmod +x gunicorn_start

de inicio del servidor:

$ sudo ./gunicorn_start

Una vez más, visite la dirección IP de su servidor en el navegador y verá su aplicación web Django correr!

¿Ha tenido un error de 502 Pasarela incorrecta? Sólo tienes que seguir estos pasos y que probablemente será suficiente para hacer su trabajo de aplicación …

Modificación de Reglas de Política SELinux

$ sudo dnf install policycoreutils-devel
$ sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
$ sudo semodule -i mynginx.pp

Una vez hecho esto, asegúrese de reiniciar el servidor a través de utilidad salpicadero del Océano Digital.

Systemd

para hacer que nuestra secuencia de comandos ejecutada gunicorn_start como un servicio del sistema de manera que, aunque ya no se registran en el servidor, todavía sirve nuestra aplicación web Django, tenemos que crear un servicio de systemd.

Sólo cambia el directorio de trabajo a / etc / systemd / sistema , y luego crear un archivo de servicio:

$ cd /etc/systemd/system
$ sudo vi django-bootstrap.service

Añadir el siguiente:

#!/bin/sh

[Unit]
Description=Django Web App
After=network.target

[Service]
PIDFile=/var/run/cric.pid
ExecStart=/bin/sh /opt/django_cookiecutter_fedora/deploy/gunicorn_start
Restart=on-abort

[Install]
WantedBy=multi-user.target

Guardar y salir, y luego iniciar el servicio y permitan:

$ sudo systemctl start django-bootstrap.service

NOTA : Si se produce un error, ejecute journalctl -xe para ver más detalles.

Por último, habilitar el servicio para que se ejecute siempre y se reinicia en paros arbitrarias: (final)

$ sudo systemctl enable django-bootstrap.service

cordura Comprobar

comprobar el estado del servicio:

$ sudo systemctl status django-bootstrap.service

Ahora sólo hay que visitar la dirección IP de su servidor (o nombre de host) y verá una página de error de Django. Para solucionar este problema, ejecute el comando siguiente en el directorio raíz de su proyecto (con su virtualenv activa):

$ python manage.py collectstatic

Ahora ya está listo para salir, y verá la aplicación web Django ejecuta en el navegador web con todos los archivos estáticos (HTML / CSS / JS) archivos de trabajo.

Para mayor apropiación de referencia del código del repositorio. Añadir sus preguntas, comentarios y preocupaciones de abajo. ¡Salud!

Deja un comentario

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