Pregunta

Estoy empezando como un desarrollador web independiente y recientemente asusté a un cliente al darle una cotización para una bastante simple Sitio que fue un poco más alto de lo que esperaban. Era básicamente Brochureware que podrían haberse hecho en una solución alojada. Como WordPress.com o los sitios de Google. Excepto por uno característica crítica, que me hizo pensar que Django sería un buen ajuste, y esa web adecuada El desarrollo podría ser motivado.

Al mirar las tareas que he enumerado en mi estimación aproximada, es bonita obvio para mí que la mayoría de las horas en que hay cosas que no son Específico de este sitio web de clientes. Esto me hizo pensar que debería Tener un script para automatizar el proceso de configuración y despliegue de nuevo Proyectos de django.

Un par de cosas aún tendrían que hacerse manualmente como:

  • Configure un nuevo VPS (o en la mayoría de los casos, simplemente vaya con virtualhosts en un VPS existente).

  • Editar configuraciones de DNS para señalar clientsDomain.com y test.clientDomain.com al nuevo VPS.

  • Configurar las teclas SSH

  • Editar un archivo de configuración.

    El script haría las cosas como:

    • Instale algunos paquetes requeridos en el nuevo VPS

    • Instalar predeterminado un firewall iptables en el nuevo VPS

    • Agregue la configuración de NGINX / Apache para ClientDomain.com y Test.ClientsDomain.com

    • Configure nuevas bases de datos para la producción y la prueba en el VPS y para el desarrollo en mi máquina local.

    • Crear un nuevo proyecto Django y ponlo en Bitbucket.

    • Configuración de configuración.py y local_settings.py para la producción, prueba y desarrollo

    • Configure la base de datos fuera del sitio para la base de datos de producción y el directorio de archivos cargados.

    • Habilitar algunas aplicaciones predeterminadas: archivos planos, admin

    • Agregar algunas plantillas de plantilla de calderas, un par de páginas planas de la placa de calderas y una barra de navegación.

    • Agregar el 960.gs CSS-Framework

    • Añadir jQuery

    • Configure Djapian o Haystack (incluido el trabajo de Cron para la actualización automática) para la búsqueda.

    • Configure un nuevo perfil de Google Analytics.

    • incluye la posibilidad de replicar las bases de datos entre la producción, la prueba y el desarrollo

    • Configurar el monitoreo de pingdom

      He usado rake y tela por cosas algo similares (pero menos ambiciosas) en el pasado y estoy pensando que la tela podría ser un ajuste bastante bueno para esta tarea, pero todavía me gustó su aporte. ¿Hay otras herramientas que debo investigar? He escuchado bien cosas sobre títere pero solo mirando su sitio (contiene la palabra enterprise) me da la sensación de que podría ser Overkill para una operación de un hombre.

¿Fue útil?

Solución

Actualmente lo hacemos con la tela + BUILDOUT.Otros dicen que el chef o el títere es mejor (y probablemente sea, si desea hacer cosas de nivel de servidor, no solo a nivel de aplicación).

También para Django Hay algunos hosters dedicados que llevan una gran cantidad de carga, especialmente me gusta http://ep.io que usamos para alimentar nuestros despliegues totalmente automatizados para las demostraciones de la django-cms , así que tal vez debe mirar a esos proveedores de alojamiento, en lugar de limitarte a VPS, que son más sobrecargas para usted.

Otros consejos

Puppet puede parecer desalentador y exagerado para pequeños proyectos, ya que a menudo se usa para enormes implementaciones, pero lo uso para administrar solo una máquina en modo independiente sin una configuración del servidor cliente para que no tenga que lidiar con los certificados SSL y las múltiples máquinas , que mantiene las cosas mucho más sencillas, pero aún me da el beneficio que puedo hacer una recuperación de desastres realmente rápida o mover mi hosting sin mucho esfuerzo. Hay algunos Grandes razones (Idempotency, Soporte de plataforma cruzada, Gestión completa del ciclo de vida, abstracción, DSL concisa) para usar sistemas de gestión de configuración modernos sobre sistemas que son esencialmente scripts que realizan SSH en un bucle o confían en plataformas que lo encierran.

Revisa Puppet de aprendizaje para una rápida rampa que incluye ejemplos y un parque infantil VM. Puede obtener cosas realmente útiles hechas con scripts de títeres simples (manifiestos) que se ejecutan independientemente, y luego comienzan a aprender todas las funciones avanzadas una vez que las necesite.

Otro cosa agradable es que muchos manifiestos y módulos de títeres ya han sido escritos por otros, y se comparten en el Puppet Forge y por muchos otros usuarios avanzados de títeres .

He estado considerando mucho de esto recientemente como alguien en una posición similar.

Mucha de lo que ha mencionado puede ser ayudado por la configuración de un buen código de esqueleto que se puede extraer de GIT para cada nuevo proyecto.

Echa un vistazo a esto para un buen punto de partida para un código de esqueleto de proyecto DJANGO genérico

http://blog.zacharyvoase.com/2010/02 / 03 / DJANGO-PROYECT-CONVENTIONS /

Puse algo similar que me permite levantarme y correr rápido, pero también para separar las cosas del servidor de las cosas del proyecto. Esto es muy importante, ya que le permite controlar la versión cada proyecto sin incluir archivos del sistema / servidor. Está aquí (todavía mucho en progreso). Esto se ocupa de la distribución de la carpeta, CSS adicionales, las cosas de html de la placa de calderilla, la rejilla / 960 cosas, el jQuery, el desarrollo de la configuración de producción, la configuración de la base de datos (en su mayoría), las aplicaciones predeterminadas instaladas, etc. Aquí hay el diseño explicado

usando virtualenv , virtualenvwrapper & PIP le permite Configure los entornos de Python independientes, encapsulados, que son excelentes para ejecutar múltiples proyectos en un VPS. PIP le permite instalar paquetes en un Virualenv en particular y también para generar todos sus paquetes a un archivo de texto que se puede importar más adelante. Esto hace que la redistribuya el código desde el desarrollo hasta la producción sea muy rápido. También le permite escribir un archivo de requisitos genéricos en su código de esqueleto que instala automáticamente todas sus aplicaciones normales de Django I.E. Django-etiquetado, etc.

En términos de bases de datos, he dejado de intentar tener bases de datos de desarrollo y bases de datos de producción en diferentes máquinas, es demasiado difícil importar / exportar los accesorios. Ahora, solo tengo bases de datos de producción y desarrollo separados en los VPS y conectan de forma remota (sobre SSH) al Dev uno al desarrollar. Puedes copiar fácilmente uno a otro, que también es agradable.

Cuando todo está listo, puede desplegarse de desarrollo a la producción utilizando la tela (aún no estoy atascado en esto, así que no estoy seguro de su facilidad de uso)

¡Estaría muy interesado en escuchar a otros pensamientos de los pueblos sobre esto, ya que estaba a punto de publicar algo Simliar!

Check out Silk Deployment, which is based on Fabric and is used to deploy Django (or any WSGI) + Nginx + Gunicorn:

http://pypi.python.org/pypi/silk-deployment/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top