J'ai un peu essayé d'utiliser heroku dans article précédent. Trois mois plus tard, mon expérience avec R a augmenté, mais cette fois je parle d'utiliser Python au lieu de R.
Il y a beaucoup de packages pour R, beaucoup de livres ont été publiés l'année dernière, et récemment, il y a une pause où tous les gars de R que j'ai rencontrés via Tokyo R participent tout le temps, donc c'est très pratique, mais fondamental Parce qu'il a été créé avec un traitement statistique à l'esprit, awk a été utilisé pour le prétraitement des données. Cependant, awk est difficile à utiliser dans l'environnement Windows 7 (32 bits) de l'entreprise. Donc, en fait, j'ai commencé à collecter des informations vers l'été 2015 et j'ai participé à diverses sessions d'étude liées à Python (et Julia).
Il semble que j'ai beaucoup participé quand je les ai mis côte à côte, mais j'ai participé plusieurs fois seulement au top StartPython Club, et les autres n'ont participé qu'une seule fois.
J'étais un débutant en Python, et j'ai reçu une consultation d'un collègue de travail me disant "Je veux créer une application web avec django".
C'est une histoire que j'ai fait de mon mieux.
J'ai eu du mal surtout en 3-5, alors j'aimerais me concentrer sur ce domaine.
Seulement ça. Soit dit en passant, la raison de Cloud 9 est que l'environnement de développement intégré sur le cloud, qui vous permet de préparer le même environnement, était le plus pratique pour répondre à diverses questions de collègues qui ont commencé à s'intéresser à Python.
De plus, comme je suis Mac à la maison et Windows 7 au travail, je ne veux pas être influencé par la différence de système d'exploitation, de code de caractère et de code de saut de ligne.
Connectez-vous à Cloud9 et cliquez sur Créer un nouvel espace de travail dans l'écran du tableau de bord.
Entrez le nom du projet (provisoirement abc), sélectionnez le modèle django dans la liste des modèles en bas et cliquez sur le bouton Créer un espace de travail.
L'espace de travail a été créé avec le modèle django. La structure initiale du dossier est comme ça.
c9_abc
est le dossier du projet django.
Le modèle Cloud 9 configure Python 2.7 et son django correspondant. Je veux développer en Python3, modifions donc les paramètres pour que cela fonctionne en Python3.
Ouvrez l'écran des paramètres du projet avec Cloud 9 - Préférences dans le menu de l'espace de travail.
Changez Python 2 en Python 3 dans la section Prise en charge des langues.
Cependant, même si la préférence est Python3, si vous définissez python --version
sur la ligne de commande, cela reste Python2.7.
$ python --version
Python 2.7.6
Je prévois d'appuyer sur python manage.py migrate
etc. plusieurs fois plus tard, alors assurez-vous que / usr / bin / python
pointe vers Python3.
$ sudo mv /usr/bin/python /usr/bin/python2
$ sudo ln -s /usr/bin/python3 /usr/bin/python
$ python —version
python 3.4.3
Je me suis référé à cet article pour la méthode. [^ 1] Cloud 9 est également pratique car vous pouvez le faire sans hésitation.
Maintenant, exécutons le projet abc. Cliquez sur Exécuter le projet dans la barre de menus.
Cela ne marche pas.
Il semble dire "je n'ai pas de django". Peut-être que django n'est pas inclus à cause de Python3. Alors, installez django. Puisqu'il s'agit de Python3, utilisons pip3.
$ sudo pip3 install django
Lorsque j'ai cliqué à nouveau sur Exécuter le projet, cela a bien fonctionné cette fois.
Si vous développez simplement sur Cloud9, vous pouvez le laisser tel quel, mais afin de le déployer plus tard sur heroku, remplacez-le par le modèle du projet django préparé par heroku. J'ai fait référence à cet article [^ 2] pour la procédure ici.
Tout d'abord, supprimez le projet django qui a été automatiquement configuré lors de la création de l'espace de travail. Non seulement le dossier du projet mais également manage.py etc. seront supprimés.
Ensuite, apportez le modèle django pour heroku depuis GitHub.
$ django-admin.py startproject --template=https://github.com/heroku/heroku-django-template/archive/master.zip --name=Procfile c9_abc
Le dernier c9_abc a le même nom que le dossier de projet django que vous avez supprimé précédemment.
En regardant la structure des dossiers, c'est un peu étrange. La hiérarchie est décalée d'un.
Montez d'un niveau à la fois pour que manage.py soit au niveau supérieur. Le dossier abc \ c9_abc \ c9_abc restant dans la couche inférieure sera vide, supprimez-le.
Dans l'article auquel j'ai fait référence, j'ai édité settings.py et wsgi.py pour qu'ils fonctionnent sur Cloud9, mais lors du déploiement sur heroku, j'ai dû les remettre, ce qui est ennuyeux, j'ai donc installé les bibliothèques nécessaires.
$ sudo pip3 install dj-database-url
$ sudo pip3 install Whitenoise
$ sudo pip3 install Gunicorn
Vérifiez le fonctionnement avec Run Project.
Je vais omettre le contenu de l'application cette fois.
Après tout, je suis nouveau sur Python, donc je dois étudier la grammaire de Python et comment utiliser les bibliothèques avant que django ne continue.
Pour savoir comment utiliser la bibliothèque Python, [Recette soigneusement sélectionnée de la bibliothèque Python (Revue technique)](http://www.amazon.co.jp/Python-%E3%83%A9%E3%82%A4%E3%83% 96% E3% 83% A9% E3% 83% AA% E5% 8E% B3% E9% 81% B8% E3% 83% AC% E3% 82% B7% E3% 83% 94-% E6% B1% A0 % E5% 86% 85-% E5% AD% 9D% E5% 95% 93 / dp / 4774717075 / ref = sr_1_1? Ie = UTF8 & qid = 1457793060 & sr = 8-1 & mots-clés = python +% E3% 83% A9% E3% 82% Merci beaucoup pour A4% E3% 83% 96% E3% 83% A9% E3% 83% AA).
En ce qui concerne django, j'ai été particulièrement reconnaissant aux sites suivants.
J'ai réussi à faire quelque chose qui fonctionnait, je l'ai montré à mes collègues de travail et je l'ai corrigé, et c'était terminé pour le moment. Avec Cloud9, contrairement au développement local, vous pouvez afficher l'application simplement en envoyant l'URL, ou vous pouvez partager le même espace de travail si vous avez un collègue avec un compte Cloud9.
En passant, expliquer à mon collègue l'application que j'ai créée cette fois a grandement amélioré ma compréhension de django.
Eh bien, c'est une application terminée, mais il y a encore une chose à faire avant de la déployer sur heroku. Par défaut, django utilise SQLite3. Même si vous le déployez sur heroku tel quel, cela fonctionnera pour le moment, mais il existe une telle description à l'aide de heroku.
Bref, il semble que "ça marche pour le moment, mais ça va disparaître dans 24 heures à cause du mécanisme". Au fait, j'ai essayé de voir combien de temps il disparaîtrait, mais il n'a pas disparu même après environ une semaine. Je ne sais pas si cela s'est produit ou parce que je vérifie tous les jours "Est-ce que c'est parti?", Mais je ne veux pas être si excité dans les opérations de production, alors j'ai décidé de passer à PostgreSQL avec obéissance. Ici, j'ai fait référence à cet article [^ 3] et à cet article [^ 4].
Puisque PostgreSQL est installé à l'origine dans l'espace de travail Cloud9, il n'est pas nécessaire de l'installer à nouveau, mais si vous regardez l'état, il est en panne, alors démarrez le service.
$ psql --version
psql (PostgreSQL) 9.3.11
$ sudo service postgresql status
9.3/main (port 5432): down
$ sudo service postgresql start
* Starting PostgreSQL 9.3 database server
...done.
Installez la bibliothèque psycopg2 pour utiliser PostgreSQL à partir de Python.
$ sudo pip3 install psycopg2
Connectez-vous ensuite à PostgreSQL. Veuillez noter qu'il existe deux sudos.
$ sudo sudo -u postgres psql
Créez un utilisateur de connexion (myuser dans ce cas) dans la console PostgreSQL.
postgres=# CREATE ROLE myuser LOGIN;
CREATE ROLE
postgres=# \password myuser
Enter new password:
Enter it again:
Créez une base de données (abc dans ce cas) à utiliser dans l'application. Dans Cloud9, je me suis mis en colère contre le nouveau codage (UTF8) est incompatible avec le codage de la base de données de modèles (SQL_ASCII)
sans ajouter le dernier TEMPLATE template0
, mais j'étais inquiet pendant un moment car je ne savais pas quoi faire.
postgres=# CREATE DATABASE abc OWNER myuser ENCODING 'UTF8' TEMPLATE template0;
CREATE DATABASE
postgres=# \q
Le côté PostgreSQL est maintenant prêt. Puis éditez settings.py dans le dossier django project (c9_abc).
#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
#}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'abc',
# The following settings are not used with sqlite3:
'USER': ’myuser',
'PASSWORD': 'your_password_here',
'HOST': '127.0.0.1',
'PORT': 5432,
}
}
La dernière étape était un peu addictive.
Dans les articles auxquels j'ai fait référence, les deux sont écrits comme OK avec python manage.py syncdb
, mais la note de publication de django 1.9 dit
La commande syncdb est supprimée., qui est une fonction qui ne peut plus être utilisée. Je vais. Quand je l'ai recherché, il a été décrit dans [Document officiel de django1.8](https://docs.djangoproject.com/en/1.8/ref/django-admin/#syncdb), et
syncdb est
migrate`. Il semble que l'alias inclut une étape pour créer un super utilisateur. Cela signifie
$ python manage.py migrate
$ python manage.py createsuperuser
C'est bon.
La migration devrait maintenant être terminée. Au cas où, vérifions si l'application fonctionne correctement.
Puisqu'il s'agit d'un modèle fourni à l'origine par heroku, les fichiers (runtime.txt et requirements.txt) qui indiquent à heroku la version Python et les bibliothèques à installer sont créés dans le dossier racine. Cependant, heroku est également Python 2.7 par défaut, alors modifiez runtime.txt.
[runtime.txt]
python-3.4.3
Ensuite, mettez également à jour requirements.txt.
$ pip3 freeze > requirements.txt
Cependant, si rien n'est fait, toutes les bibliothèques incluses dans l'environnement Python3 de Cloud9 seront incluses, alors vérifiez le contenu et supprimez les lignes de bibliothèque inutiles. Si l'environnement est d'abord désactivé avec venv etc., il n'est pas nécessaire de supprimer les lignes de bibliothèque inutiles. Il peut y avoir des dépendances de bibliothèque, donc si vous voulez le faire correctement, désactivez d'abord l'environnement.
Ensuite, installez le kit d'outils heroku.
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
Une fois l'installation terminée, connectez-vous immédiatement à heroku.
$ heroku login
Ceux qui n'ont pas créé de référentiel git lors du travail de développement d'applications le créeront.
$ git init
$ git add -A
$ git commit -m 'initial commit'
Créez un référentiel d'applications sur heroku. Dans l'exemple ci-dessous, le nom de l'application est «myherokuapp». Même si vous n'ajoutez pas ceci, heroku l'attribuera automatiquement, mais ce sera un nom long d'environ 20 caractères.
$ heroku create myherokuapp
Ensuite, il est temps de se déployer.
$ git push heroku master
Counting objects: 130, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (121/121), done.
Writing objects: 100% (130/130), 1.91 MiB | 726.00 KiB/s, done.
Total 130 (delta 52), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.4.3
remote: $ pip install -r requirements.txt
remote: Collecting Django==1.9.4 (from -r requirements.txt (line 1))
remote: Downloading Django-1.9.4-py2.py3-none-any.whl (6.6MB)
(Omis) remote: https://myherokuapp.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.... done. To https://git.heroku.com/myherokuapp.git * [new branch] master -> master
Après un certain temps, le déploiement sera terminé comme ci-dessus. Si vous obtenez une erreur, vérifiez le journal et le message d'erreur et apportez les corrections nécessaires.
Faisons une pause. Initialisez la base de données et créez un super utilisateur sur heroku.
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
Ouvrons l'url de l'application qui était affichée lors du déploiement (https: // myherokuapp.herokuapp.com /
dans l'exemple ci-dessus).
Cela a-t-il fonctionné sans problème? Ensuite, désactivez le mode de débogage de django. Modifiez settings.py sur Cloud9.
# DEBUG=True
DEBUG=False
Reflétez ce correctif dans heroku.
$ git add .
$ git commit -m 'Debug mode off'
$ git push heroku master
Gardez à l'esprit que vous continuerez à utiliser ces trois lignes (bien que vous puissiez modifier le commentaire de validation si nécessaire) si vous les modifiez à l'avenir.
C'est tout. Si vous avez des malentendus ou des erreurs, n'hésitez pas à nous le faire savoir en modifiant la demande. Je vous remercie.
Cet article a été écrit par @ hirokiky's PileMd
Recommended Posts