注意
この情報は2023/10/24時点でのものになります。また、Windows上でAnacondaを利用して仮想環境の作成からアップロードまでを行っています。
前書き
現状管理しているDjango+PythonanywhereのWebサイトに加えて、新しく別のWebサイトを作成することにしました。それで、以前は特に理由もなかったのでパブリックなレポジトリを利用していましたが、今回は諸々の理由と勉強を兼ねてプライベートなレポジトリを利用することにしました。
例のごとくGitHubを利用してコードを管理し、そこからPythonanywhereにデプロイすることにしましたが、そもそものGitHubにコードをアップする段階でしこたまつまづきました。
地獄
皆さんご存じでしょうが、GitHubはコードホスティングプラットフォームです。多くの利用者に対応するため、様々なシステムから使えるようになっています。また、その歴史も古く設立は2008年だとかなんとか。今なお利便性やセキュリティ向上のために、繰り返しシステムがアップデートされています。多分名実ともに世界一のサービスでしょうね。
それで、結果として何が生まれるかというと、そもそも自分とシステムの構成が異なる方だったり、既に変わってしまった仕様で溢れる情報地獄です。有志の方々が無償で公開してくれる情報にはいつも助けてもらっていますが、こればっかりは参ってしまいます。多分Googleとこの手の調べ事が致命的に相性が良くないのでしょうね。
私自身、GitHubの仕組みをしっかりと理解できているとは言えませんし、本当に苦戦しました。とりあえずなんとかかんとかpushまではこぎつけたので、次は苦しまないように備忘録代わりに過程を残しておきます。
手順
以下が、一連の手順となります。
1.) 仮想環境の作成
これがなければ始まりません。Anacondaを起動して、以下のコマンドラインでdjangoとgitをダウンロードします。
conda create -n 仮想環境名 python=3.8 django git
2.) フォルダの作成+初期化
プロジェクト用のフォルダを作成し、中に入った上で初期化を行います。README.mdも併せて作成しています。
mkdir website
cd website
echo "first commit" >> README.md
git init
3.) プライベートレポジトリの作成
次はGitHubにアクセスして、プライベートレポジトリを作成します。レポジトリの欄から、Newをクリックし、PublicからPrivateにレポジトリを切り替えて作成するだけです。
4.) addとcommit、ブランチの切り替え
途中まではGitHubのサイト上に記載してある手順と同じです。
git add README.md
git commit -m "first commit."
git branch -M main
ただ、ここからが異なっていて、以下の手順そのままに入力すると、ユーザ名とパスワードの入力を求められますが、正しく入力しても「2021年8月13日にパスワードによる認証は撤廃されたよ」と出てきて認証エラーを吐きます。(これは結構な罠なのでは…)
git remote add origin https://github.com/ユーザ名/レポジトリ名.git
git push -u origin main
5.) パーソナルアクセストークンの作成と再認証
ここでGitHubのサイトに戻ります。そのまま右上のユーザーアイコンをクリックし、Settings->Developer Settingsへ移行。画面左側にあるPersonal Access TokenからClassicなキーを作成します。権限は適当にrepoでチェックをいれておけば良いです。作成したらクリップボードのマークをクリックして、コピーしておきましょう。
※2023/10/24追記
このトークンは後ほど利用します。テキストファイルなどで保存しておくようにしましょう。
6.) あらためてremoteしてpush
先程remoteしたせいで、以下が「もう設定されているよ」と言われて通りません。多分はじめからこれやってたら通ると思います。
git remote add origin https://コピーしたアクセストークン@github.com/ユーザ名/レポジトリ名.git
ということで以下のオプションをつけて再設定
git remote set-url origin https://コピーしたアクセストークン@github.com/ユーザ名/レポジトリ名.git
最後にpush。
git push --set-upstream origin main
7.) PythonAnywhere上でのデプロイ(2023/10/24追記)
デプロイできました。なんだか若干動作が怪しいですが、とりあえずPythonAnywhere上で動いているのでヨシしてます。
で、結論からいうと、途中まではQiitaやDjangoGirls上で説明してもらっている内容と同じです。APIトークンを作成し、Bash上でpythonanywhereをインストールします。
pip3 install --user pythonanywhere
異なるのはその後で、自動的にダウンロードしてデプロイしてもらう段階で、以下のコードを走らせると、つづがなくデプロイが終わります。
pa_autoconfigure_django.py --python=3.9 https://コピーしたアクセストークン@github.com/GitHubのユーザ名/リポジトリ名.git
ステータスメッセージを見ても今ひとつ何が起きているかわからないので、自分のようにここでつまずく人も多いのではないでしょうか。
まとめ
以上になります。明らかに効率が悪いですが、とりあえずpushできて、デプロイまでできたのでOKです。
参考サイト様
GitHubアクセストークン認証
DjangoアプリをPythonAnywhereにデプロイする方法
DjangoGirls: デプロイ!