Cómo configurar múltiples usuarios en el servidor de desarrollo con git y github

Cómo configurar múltiples usuarios en el servidor de desarrollo con git y github

Estoy trabajando en la aplicación de la lámpara. Contamos con 2 servidores (Debian) Live y Dev.

Trabajo constantemente en dev main para agregar nuevas funciones y corregir errores.
Cuando estoy contento, todo funciona bien, envío el código correspondiente al sistema Live. La base de datos (mysql) es local para cada máquina.

Esta es realmente una configuración bastante básica y quiero mejorar un poco el flujo de trabajo. Utilizo git y github para el control de versiones. Es cierto que solo he usado una rama. Pueden ser 3 desarrolladores diferentes que trabajen en el código en diferentes momentos. Todos usamos el mismo nombre de usuario de Linux para conectarnos al servidor de desarrollo y editar el código directamente cuando sea necesario. Por lo general, luego comprometo y envío el código al final del día a github.

Una cosa a tener en cuenta es que no es fácil ejecutar este código en una máquina local, ya que hay muchas configuraciones de Apache y subdominios que no funcionarían en una máquina local, por lo que es importante trabajar en el servidor de desarrollo, no localmente.

Necesito crear un nuevo proceso porque ahora necesitamos tener una troncal principal y una rama con una gran reescritura de código.

Cuál es la mejor manera de hacer esto. ¿Debo crear diferentes inicios de sesión de Unix para cada desarrollador y configurar diferentes áreas de trabajo en el servidor de desarrollo para los cambios? p.ej

/var/www/misitio_derek /var/www/misitio_paul /var/www/misitio_mike

Mi opinión es que pueden extraer de la rama principal y luego crear su propia rama y fusionarla nuevamente. Sin embargo, no estoy seguro de cómo funcionará esto con git localmente y con github.

¿Tendré que crear también diferentes cuentas de usuario de github?

Me gustaría hacer esto de la manera "correcta" y a prueba de futuro para tener muchos desarrolladores potenciales, pero tampoco quiero complicarlo demasiado. Se prefiere una solución simple y elegante.

¿Alguna recomendación o sugerencia?

Respuesta1

Una solución que utilizamos con unos 12 desarrolladores es la siguiente. Funciona muy bien y ofrece una configuración flexible sin necesidad de modificar más la configuración del servidor. Probablemente no escalará a 40-50 desarrolladores debido a la latencia de la red y la velocidad del almacenamiento del servidor.

Compartimos el/var/www/árbol a través de Samba, por lo que los clientes de Windows pueden usar sus IDE locales y clientes VCS para editar en el servidor LAMP. Nadie tiene una cuenta en el servidor Linux.

Cree su estructura de directorio de esta manera:

/var/www/mysite.com/www/derek/
/var/www/mysite.com/www/paul/
/var/www/mysite.com/www/mike/

En su DNS interno, cree un registro comodín que apunte **.dev* a la dirección IP de su servidor de lámpara. Estoy asumiendo123.45.67.89aquí.

En Apache, defina un host virtual similar a este:

<VirtualHost 123.45.67.89>
   ServerName lamp.dev
   ServerAlias *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/%-4/%1/
</VirtualHost>

Las partes importantes son el comodín ServerAlias, que hace que este vhost responda a todas las solicitudes entrantes que terminen en '.dev'. El otro importante es VirtualDocumentRoot, que parece complejo pero no es tan malo. Simplemente corta el nombre de host entrante en partes y construye DocumentRoot a partir de las partes. Puedelea más sobre esto aquí.

Ahora, cualquier desarrollador puede visitarhttp://derek.www.mysite.com.dev/y ver su copia de trabajo personal de mysite.

Agregar un nuevo sitio, subdominio o desarrollador es simplemente un caso de crear los directorios correctos en el recurso compartido de Samba.

Para implementar en los servidores de producción, le recomendaría que se deshaga de scp y mireCapistranoy la excelente interfaz web centralizadaWebistrano. Capistrano está un poco centrado en Rails, pero sólo se necesitan unas pocas líneas para adaptarse a PHP, por ejemplo. Webistrano proporciona una GUI central donde puede implementar o actualizar un sitio directamente desde el control de versiones con solo presionar un botón. No se debe ignorar tener implementaciones fáciles de programar, que se puedan repetir de manera confiable y revertir en caso de problemas.

información relacionada