Question

J'ai une application web sur mon ordinateur et sur le serveur Web avec ssh. Le problème est que je m `le développement de l'application localement sur mon ordinateur et je veux synchroniser avec le serveur non en copiant des fichiers via ftp. Est-ce qu'il y a un autre moyen? git?

Était-ce utile?

La solution

Vous ne spécifiez pas ce que les systèmes d'exploitation ou les langues sont impliquées, de sorte que rend difficile d'être précis.

Git (et SVN et Mercurial, etc.) est grande pour le contrôle de version, mais la synchronisation en gardant les systèmes nécessite souvent plus que le contrôle de version. Si vous êtes une personne de type Python vous pourriez plaisir à lire Outils du Hacker moderne Python: virtualenv, tissu et Pip . Cela parle de garder non seulement le code, mais votre environnement en synchronisation.

Pour garder simplement les fichiers sur deux systèmes de synchronisation, je vous recommande rsync . J'utilise cela pour toutes sortes de tâches, à la fois sur une seule machine et pour la sauvegarde des répertoires / de synchronisation entre les machines. Nous avons un client dans Californie du Sud où nous faisons une stratégie de sauvegarde à 3 niveaux (2 sur place, 1 hors site) de plus de 5 téraoctets de données et le cœur de celui-ci est rsync et rsnapshot .

Mise à jour pour commentaires:

Il n'a pas vraiment d'importance ce que votre site est écrit, vous toujours vous assurer que tous de vos changements-il à la production. Ceci est souvent un processus en plusieurs étapes. Le tissu est spécialement conçu pour encapsuler ces étapes et les réduire à une seule commande. Pip et virtualenv sont plus Python spécifiques pour capturer les changements de bibliothèque supplémentaires, etc., mais Ruby / Rails ont probablement quelque chose d'équivalent. L'objectif est d'avoir une seule commande tout nécessaires pour aller de dev à la mise en scène, et une autre commande unique pour passer de la mise en scène à la production.

Un mot d'avertissement: Do pas auto-synchronisation directement à partir de votre machine dev dans votre répertoire de production. Toujours aller à un répertoire d'étape intermédiaire sur la machine de production premier. Il est presque certain que les deux machines ne sont pas 100% des environnements identiques et ce qui fonctionne sur dev peuvent ne pas fonctionner du tout sur votre machine de production. Il vaut mieux pour vous de prendre la minute ou deux pour tester la mise en scène plutôt que de faire votre site de production entier pour aller erreur 500.

Autres conseils

Vous devriez avoir une construction automatique à partir d'un référentiel de code source pour la fois votre développement et de production construit.

Vous devez également avoir un script automatisé à déployer dans des environnements de développement et de production.

Ensuite, pour déployer à la production, il est une simple question de vérifier dans votre code dev, l'exécution de votre script de construction, en cours d'exécution alors votre script de déploiement de production.

Cela est indépendamment de ce logiciel / environnement / outils que vous utilisez.

Je normalement attendre à garder git pour votre environnement de développement.

Votre construction construirait une déployable (un .tar.gz, peut-être) en spécifiant une étiquette pour construire contre (telle que votre construction est vérifié et reproductible) et alors vous copier que sur votre serveur en utilisant ssh / scp.

Je pas seulement la synchronisation d'un environnement de développement. Vous voulez que pour des trucs dans le développement, des choses que vous faites des expériences avec des outils de soutien et de fichiers, etc.

Capistrano , construit à l'origine pour déployer des applications Rails en particulier, a depuis été étendu à déployer toute sorte de application web (appelé moins déploiement ).

Une fois que vous le configurer, le flux de travail ressemble à ceci:

  1. Modifier la source du programme.
  2. Arrivée vos modifications et les pousser vers le dépôt central (git / mercurial / svn / whatever)
  3. Exécuter cap deploy sur votre programme.

L'étape 3 est où la magie se produit, ce qui est ce que Capistrano a été construit pour faire. Capistrano vérifiera une nouvelle copie de votre code à partir du référentiel, copier ce code dans un nouveau répertoire « release » (nommé quelque chose comme 20091028230834, un horodatage) et enfin lier le répertoire current à votre dernière copie. Au milieu, il peut exécuter des migrations, si elles existent. Vous vous retrouvez avec une configuration de répertoire comme ceci:

...deploy-to-path/current  ->  ./releases/20091028230834
...deploy-to-path/releases/
    20091028230834/
    20091028225623/
    ...    # You can configure the number of releases kept after deployment.
...deploy-to-path/shared/
    cached-copy/  # A cached copy of your repository, which Capistrano updates
    ...           # Any shared data, like file uploads, for your application.

La documentation de Capistrano est pas grande. Ils ont vraiment besoin de quelqu'un pour venir et écrire cohésive. Essentiellement, cependant, ce que vous faites est d'écrire un fichier (deploy.rb) avec les informations suivantes:

  • Où se trouve le serveur? (Par exemple www.example.com)
  • Quelles sont vos informations d'identification ssh? (Utilisateur, mot de passe)
  • Où est votre code stocké? (URL de votre référentiel)
  • Où voulez-vous le code sur le serveur?

Pour commencer, je vous suggère de courir capify sur votre application (vous donnant les fichiers par défaut) et l'exécuter sur un serveur de test (ou un répertoire de test sur le serveur) pour voir ce qu'il fait. Une fois que vous l'obtenez déployer quelque chose, vous pouvez le personnaliser à faire mouvement / supplémentaire de choses faire un lien symbolique.

Vous devriez aussi penser à la façon dont vous voulez libérer des choses ... poussant un filet continu de changements sur la production peut rendre très difficile de traquer lorsqu'un problème surgissait.

Comme d'autres l'ont mentionné, vous pouvez utiliser git pour synchroniser pour gérer votre code. Lorsque vous avez une nouvelle série de changements que vous pensez sont prêts, ceux-ci peuvent aller dans une branche, ou au moins de les marquer afin que vous sachiez quel ensemble de changements est sorti ensemble.

Ensuite, vous pouvez synchroniser ces changements vers un répertoire de mise en scène, et l'interrupteur lorsque amincit y ont été validées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top