Maison  >  Article  >  développement back-end  >  Compétences en déploiement automatisé dans le développement Web Python (Partie 2)

Compétences en déploiement automatisé dans le développement Web Python (Partie 2)

王林
王林original
2023-06-17 10:45:531120parcourir

Alors que le développement Web Python est utilisé dans de plus en plus de projets, le déploiement automatisé est devenu un élément essentiel. Dans la première partie, nous avons expliqué les méthodes de déploiement de base des applications Web Python et l'utilisation des outils associés. Dans cet article, nous continuerons à présenter des techniques de déploiement automatisé plus avancées pour vous aider à effectuer vos tâches de déploiement plus efficacement.

1. Utilisez Fabric pour automatiser le déploiement

Fabric est une bibliothèque Python permettant d'automatiser l'exécution de commandes et d'exécuter des scripts Shell sur des machines locales ou distantes. Cela peut rendre le processus de déploiement plus automatisé et simplifier les opérations de déploiement complexes. Voici un exemple de code :

from fabric import Connection
from invoke import Responder

def deploy():
    c = Connection(host='server_name', user='username', connect_kwargs={"password": "password"})
    sudo_pass = Responder(pattern=r'[sudo] password:', response='password
')
    c.run('sudo apt-get update', pty=True, watchers=[sudo_pass])
    c.run('sudo apt-get install -y nginx', pty=True, watchers=[sudo_pass])
    c.put('path/to/local/folder', '/path/to/remote/folder')
    c.run('sudo service nginx restart', pty=True, watchers=[sudo_pass])

L'exemple ci-dessus est un exemple de code qui utilise Fabric pour déployer automatiquement une application Web Python. Il envoie d'abord certaines commandes du serveur local au serveur distant, puis effectue certaines opérations d'installation et de configuration et télécharge les fichiers locaux sur le serveur distant.

Il convient de noter que lors de l'exécution de la commande sudo, vous devez utiliser la sous-bibliothèque Responder pour gérer la saisie du mot de passe sudo.

2. Utiliser le déploiement de conteneurs Docker

Docker est un moteur de conteneur d'applications open source qui peut vous aider à déployer et à gérer des applications plus facilement. Avec Docker, une application entière et toutes ses dépendances peuvent être regroupées dans un conteneur et exécutées sur n'importe quelle plate-forme prenant en charge le moteur Docker. Voici un exemple d'utilisation de Docker pour déployer une application Web Python :

FROM python:3.6.4-alpine3.7

RUN mkdir /app
WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

L'exemple Dockerfile ci-dessus est un fichier construit sur la base de l'image python:3.6.4-alpine3.7. Il copie d'abord le fichier exigences.txt dans le conteneur et exécute pip install dans le conteneur pour installer toutes les dépendances de l'application. Copiez ensuite l'intégralité de l'application dans le conteneur et exposez le port 8000 dans le conteneur. Enfin, exécutez l'application Django sur le port 8000.

De cette façon, nous pouvons utiliser Docker pour déployer des applications Web Python. Non seulement il est facile à gérer, mais il facilite également le déploiement d'applications dans différents environnements.

3. Utilisez Jenkins pour le CI/CD automatisé

Jenkins est un outil d'automatisation CI/CD open source populaire qui peut aider les développeurs à créer, tester, livrer et déployer rapidement des applications. Il peut être intégré à Git, Docker et d'autres outils de développement pour créer et tester automatiquement le code, et déployer automatiquement le code après avoir réussi le test. Voici un exemple d'utilisation de Jenkins pour CI/CD :

  1. Création d'un travail Jenkins

Nous pouvons créer un travail Jenkins nommé "Python Web App" et sélectionner l'option "Poll SCM" dans le déclencheur de build afin que construire automatiquement et déployez des applications lorsqu'il y a de nouveaux commits dans votre référentiel Git.

  1. Écrire un fichier Jenkins

Créez un fichier nommé "Jenkinsfile" dans le répertoire racine du projet et spécifiez la commande suivante :

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t python:latest .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker run --rm python:latest python manage.py test'
            }
        }
        stage('Deploy') {
            steps {
                sshagent(['my-ssh-key']) {
                    sh 'ssh user@server "docker-compose down && docker-compose up -d"'
                }
            }
        }
    }
}

Ce fichier Jenkins indique à Jenkins comment construire l'application, exécuter des tests et déployer le code. Dans la phase « Déploiement », il utilise SSH pour se connecter au serveur distant et utilise Docker Compose pour déployer l'application.

  1. Démarrez la build Jenkins

Une fois que nous avons configuré à la fois le fichier Jenkins et le travail Jenkins, nous pouvons commencer à utiliser Jenkins pour le CI/CD automatisé. Soumettez simplement le nouveau code dans le référentiel Git et Jenkins détectera automatiquement la nouvelle soumission et créera, testera et déploiera automatiquement l'application.

Résumé :

Dans le développement Web Python, le déploiement automatisé est une tâche très importante. Dans cet article, nous présentons quelques techniques pour automatiser le déploiement d'applications Web Python à l'aide d'outils tels que Fabric, Docker et Jenkins. Grâce à ces techniques, nous pouvons déployer des applications plus efficacement et améliorer l'efficacité du développement et la qualité du code. J'espère que ces conseils vous seront utiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn