Faites Django avec CodeStar (Python3.6.8, Django2.2.9)

Créez une application Django avec CodeStar et CI / CD avec CodePipline.

Environnement de développement

Machine locale

AWS EC2

Créer un projet

  1. Connectez-vous à la console aws et ouvrez CodeStar (peut-être que les utilisateurs IAM avaient besoin d'AWS CloudFormationFullAccess avant)
  2. Cliquez sur Créer un nouveau projet 01.PNG
    1. Sélectionnez Python (Django), Amazon EC2 02.PNG Quatre. Entrez le nom du projet (par exemple helloworld) et cliquez sur Suivant 03.PNG Cinq. Après avoir examiné les détails du projet, cliquez sur Créer un projet 04.PNG
  3. Ouvrez la console de gestion Amazon EC2 dans un nouvel onglet 05.PNG
    1. Créer une paire de clés 14.PNG
  1. Sauvegardez helloworld.pem 15.PNG

  2. Sélectionnez la paire de clés que vous avez créée et cliquez sur Créer un projet 08.PNG Dix. Ignorer (AWS Cloud9 était dans la région de l'Oregon)

16.PNG

  1. Le tableau de bord CodeStar s'affiche 10.PNG

  2. CodePipline Source → Build → Attendez que le déploiement soit terminé 17.PNG

Your requested instance type (t2.micro) is not supported in your requested Availability Zone (us-west-2d). Please retry your request by not specifying an Availability Zone or choosing us-west-2a, us-west-2b, us-west-2c. (Service: AmazonEC2; Status Code: 400; Error Code: Unsupported; Request ID: 7ee63da9-fc85-4e2a-999c-629fe3997dbe)
  1. Une fois le déploiement terminé, ouvrez le point de terminaison de l'application 18.PNG

  2. OK si vous pouvez voir la page 19.PNG

Edition d'un projet (pratique de CodeCommit)

  1. Cliquer sur un code du tableau de bord CodeStar passe à CodeCommit 20.PNG

  2. Copier l'URL du clonage d'URL 21.PNG

    1. Installez git pour Windows

Quatre. Ouvrir l'invite anaconda

Cinq. Créer un environnement virtuel pour django1 et django2

conda create -n django1 python=3.6
conda create -n django2 python=3.6
  1. Paramètres IAM CodeCommit

Les autorisations du groupe IAM ressemblent à ce qui suit.

AmazonEC2FullAccess
AWSCodeCommitFullAccess
AWSLambdaFullAccess
AmazonS3FullAccess
AmazonDynamoDBFullAccess
AmazonSageMakerFullAccess
AmazonSageMaker-ExecutionPolicy-20191208Txxxxxx
AWSCloudFormationFullAccess

Générer des informations d'identification à partir des informations d'identification des utilisateurs IAM 46.PNG

    1. Activez l'environnement django1 et clonez le projet. Il vous sera demandé le nom d'utilisateur et le mot de passe que vous avez définis. Le reste est git configure.
   (base) $ conda activate django1
(django1) $ git config --global user.email "[email protected]"
(django1) $ git config --global user.name "s-fujimoto"
(django1) $ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/helloworld
(django1) $ cd helloworld
  1. Coupez la branche de développement * Ne vous engagez pas directement dans master. Coupez la branche de développement dès que vous créez le projet.
(django1) $ git branch develop
(django1) $ git checkout develop
Switched to branch 'develop'
  1. Coupez la branche de fonctionnalité * Ne vous engagez pas directement à développer. Brisez la branche des fonctionnalités chaque fois que vous ajoutez ou modifiez de nouvelles fonctionnalités.
(django1) $ git branch feature
(django1) $ git checkout feature
Switched to branch 'feature'

Dix. Installez les bibliothèques requises pour votre projet

(django1) $ pip install -r requirements/dev.txt
Collecting Django==1.11.18
  Using cached https://files.pythonhosted.org/packages/e0/eb/6dc122c6d0a82263bd26bebae3cdbafeb99a7281aa1dae57ca1f645a9872/Django-1.11.18-py2.py3-none-any.whl
Collecting pytz
  Using cached https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl
Installing collected packages: pytz, Django
Successfully installed Django-1.11.18 pytz-2019.3

Django 1.11.18 est installé

  1. Lancer Django localement
(django1) $ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 23, 2019 - 18:15:46
Django version 1.11.18, using settings 'ec2django.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[23/Dec/2019 18:15:54] "GET / HTTP/1.1" 200 6652
[23/Dec/2019 18:15:54] "GET /static/helloworld/css/styles.css HTTP/1.1" 200 2690
[23/Dec/2019 18:15:54] "GET /static/helloworld/js/set-background.js HTTP/1.1" 200 137
[23/Dec/2019 18:15:54] "GET /static/helloworld/css/gradients.css HTTP/1.1" 200 2133
[23/Dec/2019 18:15:54] "GET /static/helloworld/img/tweet.svg HTTP/1.1" 200 1418
[23/Dec/2019 18:15:54] "GET /favicon.ico HTTP/1.1" 404 77
  1. Si vous accédez à http://127.0.0.1:8000/ depuis votre navigateur et que vous voyez la même page, c'est OK. 22.PNG

  2. Voir les changements de programme dans l'état de git

(django1) $ git status
On branch feature
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        db.sqlite3
        ec2django/__pycache__/
        helloworld/__pycache__/
        helloworld/migrations/__pycache__/

nothing added to commit but untracked files present (use "git add" to track)
  1. Si pycache existe, le déploiement de CodePipline échouera, il n'est donc pas nécessaire, ajoutez le fichier .gitignore suivant (db.sqlite3 est facultatif)
 Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

 C extensions
*.so

 Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

 PyInstaller
  Usually these files are written by a python script from a template
  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

 Installer logs
pip-log.txt
pip-delete-this-directory.txt

 Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/

 Translations
*.mo
*.pot

 Django stuff:
*.log
local_settings.py

 Flask stuff:
instance/
.webassets-cache

 Scrapy stuff:
.scrapy

 Sphinx documentation
docs/_build/

 PyBuilder
target/

 Jupyter Notebook
.ipynb_checkpoints

 pyenv
.python-version

 celery beat schedule file
celerybeat-schedule

 SageMath parsed files
*.sage.py

 dotenv
.env

 virtualenv
.venv
venv/
ENV/

 Spyder project settings
.spyderproject
.spyproject

 Rope project settings
.ropeproject

 mkdocs documentation
/site

 mypy
.mypy_cache/


.idea/
db.sqlite3
migrations/
    1. S'engager à présenter
(django1) $ git add .
(django1) $ git commit -m "add .gitignore"
[feature 6d9a594] add .gitignore
 1 file changed, 106 insertions(+)
 create mode 100644 .gitignore
(django1) $ git push origin feature
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 939 bytes | 939.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/helloworld
 * [new branch]      feature -> feature
  1. Si vous cochez CodeCommit, une branche de fonctionnalité a été créée 23.PNG

  2. créer une branche de développement 24.PNG

  3. Créer une pull request 25.PNG 26.PNG

  4. Fusionner d'une fonctionnalité à un développement 27.PNG

  5. Après la fusion, supprimez la fonction. (Mais lorsque vous ajoutez ou modifiez de nouvelles fonctionnalités, coupez la branche de fonctionnalité. La branche de fonctionnalité reste localement, utilisez-la telle quelle.) 28.PNG

vingt et un. Fusion réussie 29.PNG

vingt-deux. De même fusionner du développement au maître 30.PNG

vingt trois. Ne supprimez pas la branche de développement 31.PNG

vingt quatre. CodePipline démarre lorsqu'il est fusionné avec le maître 32.PNG

vingt cinq. Assurez-vous que la page est visible

Modifier le projet (mise à jour de Django1 vers Django2)

  1. Quittez l'environnement django1 et activez-le dans l'environnement django2
(django1) $ conda deactivate
   (base) $ conda activate django2
(django2) $ 
  1. Modifier les exigences / common.txt Changer avant
 dependencies common to all environments
Django==1.11.18

Après le changement

 dependencies common to all environments
Django==2.2.9
  1. Installation de la bibliothèque
(django2) $ pip install -r requirements/dev.txt
Collecting Django==2.2.9
  Using cached https://files.pythonhosted.org/packages/cb/c9/ef1e25bdd092749dae74c95c2707dff892fde36e4053c4a2354b2303be10/Django-2.2.9-py3-none-any.whl
Collecting pytz
  Using cached https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl
Collecting sqlparse
  Using cached https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a91336520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl
Installing collected packages: pytz, sqlparse, Django
Successfully installed Django-2.2.9 pytz-2019.3 sqlparse-0.3.0

Django == 2.2.9 est installé

    1. Modifier ec2django / setting.py Changer avant
MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

Après le changement

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = True

Quatre. Modifier ec2django / urls.py

Changer avant

from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
   url(r'^admin/', admin.site.urls),
   url(r'^', include('helloworld.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Après le changement

from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('helloworld.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Cinq. Déplacez helloworld / templates / index.html vers helloworld / templates / helloworld / index.html

6.helloworld/urls.py

Changer avant

 helloworld/urls.py
from django.conf.urls import url
from django.conf.urls.static import static
from helloworld import views

urlpatterns = [
    url(r'^$', views.HomePageView.as_view()),
]

Après le changement

 helloworld/urls.py
from django.urls import path
from django.conf.urls import url
from django.conf.urls.static import static
from helloworld import views

urlpatterns = [
    path('', views.HomePageView.as_view(), name='index'),
]

7.helloworld/views.py

Changer avant

 helloworld/views.py
from django.shortcuts import render
from django.views.generic import TemplateView


 Create your views here.
class HomePageView(TemplateView):
    def get(self, request, **kwargs):
        return render(request, 'index.html', context=None)

Après le changement

 helloworld/views.py
from django.shortcuts import render
from django.views.generic import TemplateView
from django.views import generic

 Create your views here.
class HomePageView(generic.TemplateView):
    template_name = 'helloworld/index.html'
  1. Démarrez Django localement, accédez à http://127.0.0.1:8000/ depuis votre navigateur, et si vous pouvez voir la même page, c'est OK.
(django2) $ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 23, 2019 - 19:27:46
Django version 2.2.9, using settings 'ec2django.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[23/Dec/2019 19:27:49] "GET / HTTP/1.1" 200 6652
[23/Dec/2019 19:27:49] "GET /static/helloworld/js/set-background.js HTTP/1.1" 200 137
[23/Dec/2019 19:27:49] "GET /static/helloworld/css/gradients.css HTTP/1.1" 200 2133
[23/Dec/2019 19:27:49] "GET /static/helloworld/css/styles.css HTTP/1.1" 200 2690
[23/Dec/2019 19:27:49] "GET /static/helloworld/img/tweet.svg HTTP/1.1" 200 1418
  1. S'engager à présenter, fusionner dans le développement, fusionner du développement à la maîtrise
(django2) $ git status
On branch feature
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   ec2django/settings.py
        modified:   ec2django/urls.py
        deleted:    helloworld/templates/index.html
        modified:   helloworld/urls.py
        modified:   helloworld/views.py
        modified:   requirements/common.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        helloworld/templates/helloworld/

no changes added to commit (use "git add" and/or "git commit -a")
(django2) $ git add .
(django2) $ git commit -m "django1.11.18 -> django2.2.9"
[feature 2226d88] django1.11.18 -> django2.2.9
 6 files changed, 12 insertions(+), 12 deletions(-)
 rename helloworld/templates/{ => helloworld}/index.html (100%)
(django2) $ git push origin feature
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 8 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 1.27 KiB | 648.00 KiB/s, done.
Total 11 (delta 5), reused 0 (delta 0)
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/helloworld
 * [new branch]      feature -> feature

33.PNG

Dix. Vérifiez la page lorsque CodePipline est terminé 34.PNG

  1. Le site n'est plus accessible 35.PNG

  2. Ouvrir EC2 36.PNG

  3. Connexion SSH à EC2 à l'aide de TeraTerm (pour PuTTY, utilisez PuTTY gen pour convertir la paire de clés .pem en .ppk avant de vous connecter) 37.PNG

  4. Cliquez sur Continuer pour l'alerte de sécurité

    1. Spécifiez l'utilisateur ec2 et la paire de clés comme nom d'utilisateur 39.PNG
  5. Lien 40.PNG

  6. Lancer Django

[ec2-user@ip-172-31-14-214 ~]$ sudo su
[root@ip-172-31-14-214 ec2-user]# source /home/ec2-user/environment/bin/activate
(environment) [root@ip-172-31-14-214 ec2-user]# /usr/local/bin/supervisord -c /home/ec2-user/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/local/bin/supervisord -h
(environment) [root@ip-172-31-14-214 ec2-user]# pkill supervisord
(environment) [root@ip-172-31-14-214 ec2-user]# /usr/local/bin/supervisord -c /home/ec2-user/supervisord.conf
  1. La page reste invisible, vérifiez donc le journal
(environment) [root@ip-172-31-14-214 ec2-user]# cat /var/log/django-application-stderr.log
 ・ ・ ・
File "/home/ec2-user/environment/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 63, in check_sqlite_version
    raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
[2019-12-23 19:54:59 +0900] [25438] [INFO] Worker exiting (pid: 25438)
[2019-12-23 10:54:59 +0000] [25435] [INFO] Shutting down: Master
[2019-12-23 10:54:59 +0000] [25435] [INFO] Reason: Worker failed to boot.

Depuis que j'ai mis à jour vers Django2, j'ai besoin de mettre à jour la version de SQLite3.

  1. Mise à jour SQLite3

Reportez-vous à l'article suivant Que faire si une erreur SQLite3 se produit lors du démarrage du serveur de développement dans Django 2.2

(environment) [root@ip-172-31-14-214 ec2-user]# wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz
(environment) [root@ip-172-31-14-214 ec2-user]# tar xvfz sqlite-autoconf-3280000.tar.gz
(environment) [root@ip-172-31-14-214 ec2-user]# cd sqlite-autoconf-3280000
(environment) [root@ip-172-31-14-214 ec2-user]# ./configure --prefix=/usr/local
(environment) [root@ip-172-31-14-214 ec2-user]# make
(environment) [root@ip-172-31-14-214 ec2-user]# sudo make install
(environment) [root@ip-172-31-14-214 ec2-user]# sudo find /usr/ -name sqlite3
(environment) [root@ip-172-31-14-214 ec2-user]# cd ../
(environment) [root@ip-172-31-14-214 ec2-user]# rm sqlite-autoconf-3280000.tar.gz
(environment) [root@ip-172-31-14-214 ec2-user]# rm -rf ./sqlite-autoconf-3280000
(environment) [root@ip-172-31-14-214 ec2-user]# /usr/local/bin/sqlite3 --version
3.28.0 2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50
(environment) [root@ip-172-31-14-214 ec2-user]# /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
(environment) [root@ip-172-31-14-214 ec2-user]# sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
(environment) [root@ip-172-31-14-214 ec2-user]# sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
(environment) [root@ip-172-31-14-214 ec2-user]# sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
(environment) [root@ip-172-31-14-214 ec2-user]# export LD_LIBRARY_PATH="/usr/local/lib"
(environment) [root@ip-172-31-14-214 ec2-user]# python
Python 3.6.8 (default, Oct 14 2019, 21:22:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.28.0'
>>> exit()
(environment) [root@ip-172-31-14-214 ec2-user]# 

OK si vous démarrez Django et voyez la page

(environment) [root@ip-172-31-14-214 ec2-user]# pkill supervisord
(environment) [root@ip-172-31-14-214 ec2-user]# /usr/local/bin/supervisord -c /home/ec2-user/supervisord.conf

Configuré pour démarrer Django au redémarrage d'EC2

  1. Modifiez supervisord.conf (modifiez également local et fusionnez plus tard dans master) Changer avant
[program:djangoproject]
command = environment/bin/gunicorn -b 0.0.0.0:80 ec2django.wsgi

Après le changement

[program:djangoproject]
command = /home/ec2-user/environment/bin/gunicorn -b 0.0.0.0:80 ec2django.wsgi
  1. Inscription au service
(environment) [root@ip-172-31-14-214 ec2-user]# vi /etc/init.d/helloworld
!/bin/sh
 chkconfig: 2345 99 10
 description: start helloworld
 processname: helloworld

start() {
       echo "start"
       source /home/ec2-user/environment/bin/activate
       export LD_LIBRARY_PATH="/usr/local/lib"
       /usr/local/bin/supervisord -c /home/ec2-user/supervisord.conf
}

stop() {
       echo "stop"
       pkill supervisord
}
case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart)
       stop
       start
       ;;
esac

exit 0
(environment) [root@ip-172-31-14-214 ec2-user]# chkconfig --add helloworld
(environment) [root@ip-172-31-14-214 ec2-user]# chkconfig helloworld on
(environment) [root@ip-172-31-14-214 ec2-user]# chmod u+x /etc/init.d/helloworld
(environment) [root@ip-172-31-14-214 ec2-user]# service helloworld restart
    1. Si vous pouvez voir la page même après le redémarrage, c'est OK (Django démarre même si EC2 est arrêté / démarré)
(environment) [root@ip-172-31-14-214 ec2-user]# sudo reboot

Quatre. Modifier supervisord.conf de la fonctionnalité et valider, fusionner la fonctionnalité pour développer, fusionner du développement au maître

(django2) $ git status
On branch feature
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   supervisord.conf

no changes added to commit (use "git add" and/or "git commit -a")
(django2) $ git add .
(django2) D:\Users\s-fujimoto\CodeStar\helloworld>git commit -m "modified supervisord.conf"
[feature 38c0e8c] modified supervisord.conf
 1 file changed, 1 insertion(+), 1 deletion(-)
(django2) D:\Users\s-fujimoto\CodeStar\helloworld>git push origin feature
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 325 bytes | 325.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/helloworld
 * [new branch]      feature -> feature

Cinq. OK si CodePipline est complet et que vous pouvez voir la page

(6. Si vous ne pouvez pas le voir, redémarrez EC2 ou connectez-vous avec SSH pour vérifier le journal et redémarrer le service)

(environment) [root@ip-172-31-14-214 ec2-user]# cat /var/log/django-application-stderr.log
(environment) [root@ip-172-31-14-214 ec2-user]# cat /var/log/django-application-stdout.log
(environment) [root@ip-172-31-14-214 ec2-user]# service helloworld restart

Déploiement forcé

Même si vous réessayez à partir de l'état où le déploiement a échoué une fois, il échouera à nouveau. Donc, si vous forcez le déploiement, puis fusionnez dans master, cela réussira.

Une histoire à laquelle j'étais accro parce que je n'ai pas ajouté de fichiers à appspec.yml et buildspec.yml

  1. Sélectionnez la cible dans l'application CodeDeploy 43.PNG
  2. Spécifiez l'emplacement de la révision ayant échoué 44.PNG
    1. Cochez Ne pas échouer le déploiement, sélectionnez Remplacer le contenu, créez le déploiement pour déployer 45.PNG

Utiliser un modèle utilisateur personnalisé (omis)

db.sqlite3 est .gitignore, alors envoyez-le avec Tera Term Méthode de connexion AWS EC2 (système Linux) et méthode de transfert de fichiers

La base de données doit être mise à jour

python manage.py makemigrations helloworld
python manage.py migrate

Supprimer le projet

  1. Supprimé de la liste des projets CodeStar 12.PNG
  2. Entrez le nom du projet et supprimez 13.PNG

Résumé

Je pense que le développement d'applications Django est devenu beaucoup plus facile. CICD Bonne chance.

Recommended Posts

Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Django 1.11 a démarré avec Python3.6
Faites Houdini avec Python3! !! !!
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Premiers pas avec Python Django (4)
Premiers pas avec Python Django (3)
Effectuer le cryptage AES avec DJango
Introduction à Python Django (6)
Premiers pas avec Python Django (5)
Pour faire une récursion avec Python2
Que faire avec la sortie de PYTHON?
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Faisons du scraping d'images avec Python
Python | Ce que vous pouvez faire avec Python
Comment effectuer un traitement arithmétique avec le modèle Django
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Tutoriel Python Django (5)
Tutoriel Python Django (2)
Grattage avec Python
Python avec Go
Internationalisation avec Django
Twilio avec Python
Laissez Heroku faire le traitement en arrière-plan avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
Tutoriel Python Django (8)
Comment faire un test de sac avec python
python commence par ()
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Tutoriel Python Django (6)
avec syntaxe (Python)
CRUD avec Django
Bingo avec python
Zundokokiyoshi avec python
Faisons la manipulation des données MySQL avec Python
Tutoriel Python Django (7)
Tutoriel Python Django (1)
Tutoriel du didacticiel Python Django
Tutoriel Python Django (3)
Excel avec Python
Micro-ordinateur avec Python
Tutoriel Python Django (4)
Cast avec python
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Je ne peux pas créer de projet avec Python3.5 (Windows) + django1.7.1.
Comment faire un traitement parallèle multicœur avec python
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Django avec Python Tools 2.2 pour Visual Studio (PTVS 2.2)
Liste de tâches simple créée avec Python + Django
Débutants en Python accro à Django
Créez rapidement un environnement Python Django avec IntelliJ
Web scraping avec Python (prévisions météo)
Web scraping avec Python (cours de l'action)