はじめに
今作成中のflaskアプリをとりあえず 上げるためにHerokuへのデプロイを行いたいと思い、備忘録も兼ねて今回記事を書きました
参考サイト
[Python] プログラム初心者のためのWebアプリ簡単作成法
Herokuのapp作成手順(buildpack-multiを使う場合も含む) - Qiita
Herokuへのデプロイ方法【Heroku+Rails+MySQL】 - Qiita
環境:
Git管理
コマンドライン上で、作成したプロジェクトのディレクトリに移動
cd ◎◎
以下をコマンドを実行すると、プロジェクトがGitで管理(1個ずつしないと作動しない)
git init
⇓
Initialized empty Git repository in /◎◎/◎◎/flask/flask2/.git/
git add .
⇓
何も出ない
git commit -m "<適当なコミットメッセージ>"
⇓
(おそらく今現在 位置するディレクトリ内にあるディレクトリ、ファイル等の名前が表示される)
[master (root-commit) (英数字)] <適当なコミットメッセージ>
0 files changed, 462 insertions(+)
create mode 100644 css/style.css
create mode 100644 flask.py
create mode 100644 main.py
create mode 100644 static/javascript/sample2.js
create mode 100644 static/javascript/sample.js
create mode 100644 templates/form.html
create mode 100644 templates/index.html
create mode 100644 templates/index2.html
create mode 100644 templates/layout.html
create mode 100644 test.py
または
[master 43b15f] newsample
1 file changed, 1 insertion(+)
create mode 100644 runtime.txt
git log
⇓
commit (英数字の羅列 おそらくgitのIDかなにか) (HEAD -> master)
Author: Sample <herokuにて登録しているメールアドレス>❗
Date: Fri Jun 17 19:28:48 2022 +0900
またはcommit (英数字の羅列 おそらくgitのIDかなにか) (HEAD -> master)
Author: Sample <herokuにて登録しているメールアドレス>
Date: Fri Jun 17 20:59:02 2022 +0900
newsample
commit (英数字の羅列 おそらくgitのIDかなにか) (HEAD -> master)
Author: Sample <herokuにて登録しているメールアドレス>
Date: Fri Jun 17 19:28:48 2022 +0900
<適当なコミットメッセージ>
(END)
Herokuのアカウント作成
https://jp.heroku.com/
Herokuのtoolbelt インストール
https://devcenter.heroku.com/articles/heroku-cli
brew tap heroku/brew && brew install heroku
を実行
コマンドライン上でherokuコマンドが使えるようになる
brew tap heroku/brew && brew install heroku
⇓
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
You have 29 outdated formulae installed.
You can upgrade them with brew upgrade
or list them with brew outdated.
To link this version, run:
brew link heroku
Herokuのバージョンを確認
heroku -v
⇓
heroku/7.53.0 darwin-x64 node-v12.21.0
SSHキー
ssh-keygen -t rsa
実行
⇓
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/◎◎/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/◎◎/.ssh/id_rsa.
Your public key has been saved in /Users/◎◎/.ssh/id_rsa.pub.
The key fingerprint is:
(英数字の羅列+++++++++++++++++++++++)
The key's randomart image is:
+---[英数字でなにか]----+
|英語と記号の羅列 が何行か|
|英語と記号の羅列 |
|英語と記号の羅列 |
|英語と記号の羅列 |
|英語と記号の羅列 |
+----[英数字でなにか]-----+
作成したHerokuアカウントにキーを追加
herokuにログイン
heroku login
Uploading /◎◎/◎◎/.ssh/id_rsa.pub SSH key... done
追加に成功していれば、以下のコマンドで追加したSSHキーが確認
heroku keys
実行
⇓
(登録しているメールアドレス ❗現在のもの❗) keys
(英数字と記号の羅列)= (use名)@(PCの機種).local
(違うアカウントやE-mailが出た場合)
(directory : ~/.git/config
)
git config --global user.name 'Your Name' git config
--global user.email '<your_email>'
⇓
(何も出ないが他Herokuアカウントが追加される)
Herokuにアプリケーション を作成
cd ◎◎
⇓
Herokuにアプリケーションを作成
(※Herokuのアプリ名には英数字とハイフンしか使えない。)
heroku apps:create ** (Herokuのアプリ名。英数字とハイフンのみ)
⇓
※
(Creating ⬢ flask1... !)
( ▸ Name flask1 is already taken ) →※この意味はすでに使われているという意味
そのためまだ作れていない
⇓
Creating ⬢ (Herokuのアプリ名)... done
https://(Herokuのアプリ名).herokuapp.com/ | https://git.heroku.com/(Herokuのアプリ名).git
Herokuのリモートリポジトリを確認
git remote -v
⇓
heroku https://git.heroku.com/newsample.git (fetch)
heroku https://git.heroku.com/newsample.git (push)
origin https://github.com/(Gitのアカウント名)/flask2.git (fetch)
origin https://github.com/(Gitのアカウント名)/flask2.git (push)
=========
Herokuのアプリケーション名変更
git:remote -a sampleflask1
⇓
› Error: Couldn't find that app.
›
› Error ID: not_found
===========
Herokuへデプロイ
ローカルリポジトリをHerokuへpush
git push heroku master(main)
(※master
以外のローカルブランチをpushする場合は、以下のコマンドを実行)
git push heroku <ブランチ名>:master
⇓
今現在のpythonのver ⇛Python 3.8.5 (default, Sep 4 2020, 02:22:02)
Counting objects: 26, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (26/26), 9.40 KiB | 283.00 KiB/s, done.
Total 26 (delta 2), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-20 stack
remote: -----> Determining which buildpack to use for this app
remote: -----> Python app detected
remote: -----> Using Python version specified in runtime.txt
remote: ! Python has released a security update! Please consider upgrading to python-3.8.13
remote: Learn More: https://devcenter.heroku.com/articles/python-runtimes
remote: -----> Installing python-3.8.5
remote: -----> Installing pip 22.1.2, setuptools 60.10.0 and wheel 0.37.1
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote: Collecting absl-py==0.9.0
remote: Downloading absl-py-0.9.0.tar.gz (104 kB)
remote: Preparing metadata (setup.py): started
remote: Preparing metadata (setup.py): finished with status 'done'
remote: Collecting astor==0.8.1
remote: Downloading astor-0.8.1-py2.py3-none-any.whl (27 kB)
remote: Collecting bleach==3.1.5
remote: Downloading bleach-3.1.5-py2.py3-none-any.whl (151 kB)
remote: Collecting bottle==0.12.18
remote: Downloading bottle-0.12.18-py3-none-any.whl (89 kB)
remote: Collecting click==7.1.2
remote: Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
remote: Collecting certifi==2020.6.20
remote: Downloading certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
remote: Collecting chardet==3.0.4
remote: Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
remote: Collecting flask==2.0.1
remote: Downloading Flask-2.0.1-py3-none-any.whl (94 kB)
remote: Collecting future==0.18.2
remote: Downloading future-0.18.2.tar.gz (829 kB)
remote: Preparing metadata (setup.py): started
remote: Preparing metadata (setup.py): finished with status 'done'
remote: Collecting gast==0.3.3
remote: Downloading gast-0.3.3-py2.py3-none-any.whl (9.7 kB)
remote: Collecting grpcio==1.31.0
remote: Downloading grpcio-1.31.0-cp38-cp38-manylinux2014_x86_64.whl (3.4 MB)
remote: Collecting gunicorn==20.0.4
remote: Downloading gunicorn-20.0.4-py2.py3-none-any.whl (77 kB)
remote: Collecting h5py==2.10.0
remote: Downloading h5py-2.10.0-cp38-cp38-manylinux1_x86_64.whl (2.9 MB)
remote: Collecting html5lib==1.1
remote: Downloading html5lib-1.1-py2.py3-none-any.whl (112 kB)
remote: Collecting itsdangerous==2.0
remote: Downloading itsdangerous-2.0.0-py3-none-any.whl (18 kB)
remote: Collecting idna==2.10
remote: Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
remote: Collecting Jinja2==3.0.1
remote: Downloading Jinja2-3.0.1-py3-none-any.whl (133 kB)
remote: Collecting line-bot-sdk==1.16.0
remote: Downloading line_bot_sdk-1.16.0-py2.py3-none-any.whl (59 kB)
remote: Collecting Markdown==3.2.2
remote: Downloading Markdown-3.2.2-py3-none-any.whl (88 kB)
remote: Collecting MarkupSafe==2.0
remote: Downloading MarkupSafe-2.0.0-cp38-cp38-manylinux2010_x86_64.whl (30 kB)
remote: Collecting numpy==1.18.0
remote: Downloading numpy-1.18.0-cp38-cp38-manylinux1_x86_64.whl (20.6 MB)
remote: Collecting oauthlib==3.1.0
remote: Downloading oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
remote: Collecting pillow==7.2.0
remote: Downloading Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
remote: Collecting protobuf==3.12.4
remote: Downloading protobuf-3.12.4-cp38-cp38-manylinux1_x86_64.whl (1.3 MB)
remote: Collecting PyYAML==5.4.1
remote: Downloading PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl (662 kB)
remote: Collecting python-dotenv==0.14.0
remote: Downloading python_dotenv-0.14.0-py2.py3-none-any.whl (17 kB)
remote: Collecting requests==2.25.1
remote: Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)
remote: Collecting scipy==1.4.1
remote: Downloading scipy-1.4.1-cp38-cp38-manylinux1_x86_64.whl (26.0 MB)
remote: Collecting six==1.15.0
remote: Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
remote: Collecting tensorboard==2.3.0
remote: Downloading tensorboard-2.3.0-py3-none-any.whl (6.8 MB)
remote: Collecting tensorflow-cpu==2.3.0
remote: Downloading tensorflow_cpu-2.3.0-cp38-cp38-manylinux2010_x86_64.whl (137.4 MB)
remote: Collecting termcolor==1.1.0
remote: Downloading termcolor-1.1.0.tar.gz (3.9 kB)
remote: Preparing metadata (setup.py): started
remote: Preparing metadata (setup.py): finished with status 'done'
remote: Collecting urllib3==1.26.5
remote: Downloading urllib3-1.26.5-py2.py3-none-any.whl (138 kB)
remote: Collecting Werkzeug==2.0.0
remote: Downloading Werkzeug-2.0.0-py3-none-any.whl (288 kB)
remote: Collecting packaging
remote: Downloading packaging-21.3-py3-none-any.whl (40 kB)
remote: Collecting webencodings
remote: Downloading webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
remote: Collecting tensorboard-plugin-wit>=1.6.0
remote: Downloading tensorboard_plugin_wit-1.8.1-py3-none-any.whl (781 kB)
remote: Collecting google-auth<2,>=1.6.3
remote: Downloading google_auth-1.35.0-py2.py3-none-any.whl (152 kB)
remote: Collecting google-auth-oauthlib<0.5,>=0.4.1
remote: Downloading google_auth_oauthlib-0.4.6-py2.py3-none-any.whl (18 kB)
remote: Collecting tensorflow-estimator<2.4.0,>=2.3.0
remote: Downloading tensorflow_estimator-2.3.0-py2.py3-none-any.whl (459 kB)
remote: Collecting wrapt>=1.11.1
remote: Downloading wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (81 kB)
remote: Collecting google-pasta>=0.1.8
remote: Downloading google_pasta-0.2.0-py3-none-any.whl (57 kB)
remote: Collecting opt-einsum>=2.3.2
remote: Downloading opt_einsum-3.3.0-py3-none-any.whl (65 kB)
remote: Collecting keras-preprocessing<1.2,>=1.1.1
remote: Downloading Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)
remote: Collecting astunparse==1.6.3
remote: Downloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB)
remote: Collecting pyasn1-modules>=0.2.1
remote: Downloading pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
remote: Collecting rsa<5,>=3.1.4
remote: Downloading rsa-4.8-py3-none-any.whl (39 kB)
remote: Collecting cachetools<5.0,>=2.0.0
remote: Downloading cachetools-4.2.4-py3-none-any.whl (10 kB)
remote: Collecting requests-oauthlib>=0.7.0
remote: Downloading requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
remote: Collecting pyparsing!=3.0.5,>=2.0.2
remote: Downloading pyparsing-3.0.9-py3-none-any.whl (98 kB)
remote: Collecting pyasn1<0.5.0,>=0.4.6
remote: Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
remote: Building wheels for collected packages: absl-py, future, termcolor
remote: Building wheel for absl-py (setup.py): started
remote: Building wheel for absl-py (setup.py): finished with status 'done'
remote: Created wheel for absl-py: filename=absl_py-0.9.0-py3-none-any.whl size=121939 sha256=28e42f7ac416ae3cdb1b7baf75c41647b007b5761703273c73b034d9806be73b
remote: Stored in directory: /tmp/pip-ephem-wheel-cache-nw5e4f9c/wheels/1d/10/8e/2f79b924179ff1e6510933d63eb851bea01054fff262343b7a
remote: Building wheel for future (setup.py): started
remote: Building wheel for future (setup.py): finished with status 'done'
remote: Created wheel for future: filename=future-0.18.2-py3-none-any.whl size=491070 sha256=a6907538bffc20ab8b8167ca380437922a7c8eb58c64125d802046ce5ee3b35e
remote: Stored in directory: /tmp/pip-ephem-wheel-cache-nw5e4f9c/wheels/8e/70/28/3d6ccd6e315f65f245da085482a2e1c7d14b90b30f239e2cf4
remote: Building wheel for termcolor (setup.py): started
remote: Building wheel for termcolor (setup.py): finished with status 'done'
remote: Created wheel for termcolor: filename=termcolor-1.1.0-py3-none-any.whl size=4848 sha256=60791da2a76c3b8f01238054e2602f5c38d4a788022003ba8000f2b37d9500fb
remote: Stored in directory: /tmp/pip-ephem-wheel-cache-nw5e4f9c/wheels/a0/16/9c/5473df82468f958445479c59e784896fa24f4a5fc024b0f501
remote: Successfully built absl-py future termcolor
remote: Installing collected packages: webencodings, termcolor, tensorflow-estimator, tensorboard-plugin-wit, python-dotenv, pyasn1, chardet, certifi, bottle, wrapt, Werkzeug, urllib3, six, rsa, PyYAML, pyparsing, pyasn1-modules, pillow, oauthlib, numpy, MarkupSafe, Markdown, itsdangerous, idna, gunicorn, gast, future, click, cachetools, astor, scipy, requests, protobuf, packaging, opt-einsum, keras-preprocessing, Jinja2, html5lib, h5py, grpcio, google-pasta, google-auth, astunparse, absl-py, requests-oauthlib, line-bot-sdk, flask, bleach, google-auth-oauthlib, tensorboard, tensorflow-cpu
remote: Successfully installed Jinja2-3.0.1 Markdown-3.2.2 MarkupSafe-2.0.0 PyYAML-5.4.1 Werkzeug-2.0.0 absl-py-0.9.0 astor-0.8.1 astunparse-1.6.3 bleach-3.1.5 bottle-0.12.18 cachetools-4.2.4 certifi-2020.6.20 chardet-3.0.4 click-7.1.2 flask-2.0.1 future-0.18.2 gast-0.3.3 google-auth-1.35.0 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 grpcio-1.31.0 gunicorn-20.0.4 h5py-2.10.0 html5lib-1.1 idna-2.10 itsdangerous-2.0.0 keras-preprocessing-1.1.2 line-bot-sdk-1.16.0 numpy-1.18.0 oauthlib-3.1.0 opt-einsum-3.3.0 packaging-21.3 pillow-7.2.0 protobuf-3.12.4 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-3.0.9 python-dotenv-0.14.0 requests-2.25.1 requests-oauthlib-1.3.1 rsa-4.8 scipy-1.4.1 six-1.15.0 tensorboard-2.3.0 tensorboard-plugin-wit-1.8.1 tensorflow-cpu-2.3.0 tensorflow-estimator-2.3.0 termcolor-1.1.0 urllib3-1.26.5 webencodings-0.5.1 wrapt-1.14.1
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 257.9M
remote: -----> Launching...
remote: Released v3
remote: https://clinic-checker.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/clinic-checker.git
* [new branch] master -> master
アプリケーションにアクセス
heroku open
(Homebrew をアップデート)
brew update
(python をアップデート)
brew upgrade python3
アプリを実行 上手く行けばアプリが出る
heroku open
<<私のコード自体が パスが相対パスだったりエラーが有ったのと そもそもHerokuは使わないほうが良かったので一旦ここまで>
================
エラー1:
fatal: Not a git repository (or any of the parent directories): .git
エラー2;
remote: ! Your account(Herokuの登録しているメールアドレス) does not have access to newsample.
fatal: unable to access 'https://git.heroku.com/newsample.git/': The requested URL returned error: 403
git push heroku master をすると403エラーが発生する - スタック・オーバーフロー
エラー3;
error: failed to push some refs to 'https://git.heroku.com/clinic-checker.git'
**
Counting objects: 26, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (26/26), 9.40 KiB | 137.00 KiB/s, done.
Total 26 (delta 2), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-22 stack
remote: -----> Using buildpack: heroku/python
remote: -----> Python app detected
remote: -----> Using Python version specified in runtime.txt
remote: ! Requested runtime (python-3.8.5) is not available for this stack (heroku-22).
remote: ! Aborting. More info: https://devcenter.heroku.com/articles/python-support
remote: ! Push rejected, failed to compile Python app.
remote:
remote: ! Push failed
remote: !
remote: ! ## Warning - The same version of this code has already been built: 4309db9e87801c563af9e7776c083d43d6561fc3
remote: !
remote: ! We have detected that you have triggered a build from source code with version 4309db9e87801c563af9e7776c083d43d6561fc3
remote: ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote: !
remote: ! If you are developing on a branch and deploying via git you must run:
remote: !
remote: ! git push heroku <branchname>:main
remote: !
remote: ! This article goes into details on the behavior:
remote: ! https://devcenter.heroku.com/articles/duplicate-build-version
remote:
remote: Verifying deploy...
remote:
remote: ! Push rejected to clinic-checker.
remote:
To https://git.heroku.com/clinic-checker.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/clinic-checker.git'
**
heroku のアップグレードをしたので
Anaconda内のpythonのverが合っていなかった
( Heroku Python Support | Heroku Dev Center)
しかしAnacondaのアップグレードがとても時間がかかったので下記URLを実行
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
MACの場合、Command + スペース キーにて Spotlight検索を出す
Anacondaを起動
AnacondaNavigater の仮想環境にて(ここではbaseにて) ▶を左クリック(右クリックにするとロード?になりしばらく触れなくなるので左クリック)
Open Terminal をクリックし Anaconda Promptを開く
conda update --all
をコマンドにて実行
にて
yを入れてエンター(リターンキー)
AnacondaPromptを閉じる
conda update --all
をコマンドにて実行
# All requested packages already installed.
pythonのverを該当のものをインストール
conda install python-3.10.5
終了
============