Pythonで作ったものを公開(デプロイ)、Webサービスの基礎すべて無料でやってみた!【Django】

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約28分で読めます。

PythonでWebサービスを作り無料サーバーにアップするところまで紹介します。
パソコンにインストすることなく無料のWEBサービスのみ使用
大手でよくある無料だけど
クレジットカード登録しないとアカウントができないとかもない。
Django(Webアプリケーションフレームワーク)を使います。
プログラムの中身ではなく
開発環境、GitHub、無料サーバーへのアップを重点にした記事です。
一通りの手順を確認しておくメリットとして
プログラミング学習の途中で、
「このままやってうまくいくのだろうか?」と疑問が出たとき
最初に最後までやっておくと見通しがたって安心できます。

ローカル(Windows)でPython実行環境がある人向けにGit入門を書きました。

個人開発者のためのGit入門:コード管理からデプロイまで
はじめに個人で開発をしていると、こんな経験はありませんか?- 変更したら動かなくなったけど、前は動いてた…- バックアップを手動でとっているけど、どれが最新かわからなくなった- せっかく作ったアプリ、インターネットに公開してみたいこうした悩…

Djangoはサーバーで動かします。サーバー側についてあまり知らない方は
侍エンジニアこの動画が分かりやすいです。

Djangoアプリを無料でデプロイ(公開)できたHerokuが2022/11末から有料になります。なので下の記事で紹介しているところに引っ越しました。

【Django】Heroku無料枠がなくなるのでRenderを使ってみた。
Heroku が 2022年11月末から有料になったため、代わりになるRenderを使ってみました。どうにかデプロイできたので、その様子をご紹介します。Heroku で動いていたものを Render で動かすことができましたが、Railwa…

2023/7Railwayはクレカ登録が必要になったので使わなくなりました。

【Django】Heroku無料枠がなくなるのでRailwayを使ってみた。
Herokuが2022/11/末から有料になるため代わりを探しました。Railwayがよかったです。どうにかデプロイできたので、その様子をご紹介します。Herokuで動いていたものを動かすことができました。GitHubからだと簡単にできます…

無料だと1個しかデプロイできませんが使ってみました。

【Django入門】PythonAnywhereを使ってみた。
ローカルで動いているDjangoのプロジェクトをPythonAnywereにデプロイしてみました。クレカ登録はせずBeginner: Free0/monthで使います。デプロイできるのは1個です。デプロイしたものは3か月に1回、ログインして…

Pythonで作ったものを公開するならStreamlitが簡単でおすすめ!Djangoみたいに複雑なことはできませんが、デプロイまで簡単です。

【Python】Anaconda+VSCode環境でStreamlit実行方法
Streamlitはpythonの知識だけで簡単なWebアプリが作れます。またPythonで作ったものを公開する場合、1番、楽な方法だと思います。pandasやmatplotlibの出力結果も簡単に表示できます。この記事はAnacondaが…

VPSとDockerでDjangoを動かしてみる場合

さくらのVPSでDockerでNginx+WordPress+Djangoを動かしてみた!
さくらのVPS のさくらのVPS 1G でport80をWordPress、port81をDjangoでアクセスできるようにつくりました。ドメインを取っていないため、このような形になっています。完全に実験用なので実用的ではありません。この方…

VPSを使うといろいろ勉強になります。
(2024/4から私はWordPress(このブログ)とDjango他のアプリをVPSで動かしてます。)

お名前ドットコムVPSへ移行への道

2024/4お名前.comのレンタルサーバーからVPSへ移行したときの記録になります。

Djangoで音声を扱うにはこちら。

DjangoでデータベースSQLite3にmp3を保存してみた
文字列などをSQLite3に保存するとdb.sqliteファイルに保存される。mp3も同じようにdb.sqliteに保存されるのか?と予想していましたが。mp3を実際に保存してみるとmanage.pyが置いてあるルートのディレクトリにmp3…

フロント側だけで完結できるこちらもおすすめです。

【初心者向け】【FirestoreとHosting編】Vuetify3(Vue.js3)とFirebaseを使って掲示板アプリをつくってみました。
Vuetifyは、Vue.jsベースのユーザーインターフェースが簡単に作れます。Firebaseは、Googleが提供するモバイルおよびWebアプリケーションのためのプラットフォームです。今回その中のCloud Firestore(データベ…

この記事を書いた当時はストレージが30Gしかないパソコン使っていたので
Paizacloudを使いましたが。新しくパソコン買ってからはローカルでやってます。

【Docker】Windows11でプログラミング環境構築(Python、Django、Vue)
パソコン買ったのでプログラミング環境を整えました。その様子です。Python、Django、Vueの環境を設定していきます。Docker導入でハマった点と解決策をご紹介します。追記(2023/11):最近、Docker DesktopがWi…
  1. 公開までに必要なもの Codespaces、(PaizaCloud+GitHub)、Render(Herokuは有料になった)
  2. Codespaces
    1. ステップ1: Codespaceの起動
    2. ステップ2: 画面下部のターミナルでDjangoをインストール
    3. django-admin startproject myproject .のピリオドの役目
      1. ① ピリオドなし
      2. ② ピリオドあり
      3. 🧠 なぜピリオドを使うのか?
      4. ポイント
    4. ステップ3: 設定の変更(仮)
    5. ステップ4: サーバーの起動とプレビュー
    6. Codespacesで公開について
  3. GitHubレポジトリへPush
    1. 手順(vscode.dev内)
    2. リポジトリ名変更
  4. Gitgurdianからメールが来る
    1. 1. GitGuardianとは?
    2. 2. Djangoの初期設定のままPushした時の検知
      1. 該当箇所のコード
    3. 3. 対策:.env ファイルを使った安全な管理方法
      1. 手順 1: .env ファイルの作成
      2. 手順 2: python-dotenv のインストール
      3. 手順 3: settings.py の書き換え
      4. 手順 4: .gitignore への追加(最重要)
    4. 4. デフォルトの SECRET_KEY の意味と本番運用
      1. 先頭にある django-insecure- の意味
      2. 本番環境でそのまま使っていいか?
      3. 本番環境ではどうすればいいか?
    5. Codespacesで対策してみる
      1. .env の配置場所
      2. Codespacesでの作成・設定手順
      3. settings.py修正
      4. コミットしてプッシュ
    6. 💡 Codespacesならではの裏技:「Codespaces Secrets」を使う
      1. 設定手順
  5. Djangoの簡単な例
  6. PaizaCloud
  7. PaizaCloudでDjangoの初期ウェルカム画面(ロケットマークの画面)を表示させてみる
    1. プログラムが保存できない場合がある
    2. Connection Closed になる
    3. 1日たって再開できたけどファイルの変更が反映されない
  8. PaizaCloudからGitHubへPushする方法
    1. 準備:GitHubでトークン(PAT)を発行する
      1. 漏れのリスクはある?
      2. 万が一、トークンが外部に漏れた場合は?
      3. 漏洩時の対処法(即座に行うこと)
      4. 漏洩を防ぐためのポイント
      5. repo(フルコントロール権限)で安全か?
      6. なぜ repo 権限が必要なのか?
    2. リポジトリ作成の手順
      1. 作成後の画面について
    3. paizaCloudでの送信手順
    4. 架空メールアドレスでもいい?
      1. 架空のメールアドレスを使うデメリット(GitHub連携時)
      2. アドレスが違ってもレポジトリは削除できます。
  9. 公開:Render(Heroku)
  10. DjangoではなくHtml(Pythonも書けるPyscript)を無料サーバーにアップしたい場合
  11. 所感
広告
MINISFORUM日本公式ストア

公開までに必要なもの Codespaces、(PaizaCloud+GitHub)、Render(Herokuは有料になった)

登録に必要なものはメールアドレスもしくはソーシャルログイン。
みんな有料プランがありますが今回無料の範囲内しか使ってません。

GitHub(Codespacesも使える)(プログラムコードの管理)メールアドレス、無料。
PaizaCloud (よく止まるのでCodespacesのほうがいい)メールアドレス、無料、時間制限がある。
Heroku(ホスティングサービス)メールアドレス、2022/11末から有料
↓代わりは
Render(ホスティングサービス)がおすすめです。メールアドレスまたはソーシャルログイン。無料枠だと一時停止したら、再度立ち上がるまで数分かかる。

Codespaces

  • 特徴: GitHub公式のクラウド開発環境。月120時間まで無料で使えます。使い切ったらよく月までブロックされます。個人用アカウントによる無料使用と有料使用
  • Django実行: ターミナルで runserver を叩くだけで、自動的にポート転送URLを発行してブラウザ確認させてくれます。一番使いやすくおすすめです。
    GitHub Codespacesを使って、ブラウザ上だけでDjangoを起動・プレビューする最もシンプルな手順です。

GitHubのアカウントがあれば、パソコンの設定を汚さずに数分でDjango環境が完成します。


ステップ1: Codespaceの起動

  1. GitHubにサインインした状態で、GitHub Codespacesのページ(左メニュー > 「Codespaces」)を開きます。
  2. 「Blank(空のテンプレート)」の [Use this template] ボタンをクリックします。
  3. ブラウザ上に VS Code(開発画面)が立ち上がるまで1〜2分待ちます。

ステップ2: 画面下部のターミナルでDjangoをインストール

画面下部にあるターミナル(黒い画面)に、以下のコマンドを順番に貼り付けて実行(Enter)します。

# 1. Djangoのインストール
pip install django

# 2. プロジェクトの作成(末尾のドット「.」を忘れないでください)
django-admin startproject myproject .

# 3. データベースの初期化
python manage.py migrate

django-admin startproject myproject .のピリオドの役目

  • ピリオドなし → 新しいフォルダ myproject/ が作られ、その中に設定ファイルが入る
  • ピリオドあり → 今いるフォルダに直接設定ファイルが展開される(フォルダを増やさない)

① ピリオドなし

django-admin startproject myproject

作られる構造:

myproject/
    manage.py
    myproject/
        settings.py
        urls.py
        asgi.py
        wsgi.py

👉 新しいフォルダ myproject が作られる

② ピリオドあり

django-admin startproject myproject .

作られる構造:

manage.py
myproject/
    settings.py
    urls.py
    asgi.py
    wsgi.py

👉 今いるフォルダに直接展開される(新しいフォルダは作られない)

🧠 なぜピリオドを使うのか?

django-admin startproject myproject . を、もし最後のピリオドを付けずに実行すると myproject/myproject/ のようにフォルダが二重構造になってしまいます。 この構造でも開発環境では一見問題なく動くことがありますが、 本番環境では Django が設定ファイルやアプリのパスを正しく解決できず、アプリケーションが起動できなくなる原因になります。 つまり、デプロイ手順が悪いのではなく、プロジェクト構造が誤っていることが本番での起動エラーにつながります。

ポイント

  • 開発環境では manage.py が相対パスでうまく拾ってくれるため動いてしまう
  • 本番環境(Gunicorn、uWSGI、ASGI、Django runserver 以外の起動方法)では モジュールパスの解決が厳密になるため、二重フォルダ構造が致命的になる

ステップ3: 設定の変更(仮)

Codespacesの外部URLからDjangoにアクセスできるようにするため、許可するホスト(ドメイン)を設定します。

  1. 左側のファイル一覧から myproject フォルダを開き、settings.py をクリックします。
  2. 28行目付近にある ALLOWED_HOSTS = [] を探し、以下のように '*'(アスタリスク)を書き換えて保存(Ctrl + S または Cmd + S)します。
ALLOWED_HOSTS = ['*']

本番では、*ではなく、ちゃんとURLを入れましょう。

ステップ4: サーバーの起動とプレビュー

  1. ターミナルで以下のコマンドを実行し、Djangoサーバーを起動します。
python manage.py runserver
  1. 起動すると、画面右下に 「A service is running on port 8000. Open in Browser」 というポップアップが表示されます。
  2. [Open in Browser] ボタンをクリックします。
    • もしボタンが消えてしまった場合は、ターミナル横の「ポート」タブを開き、8000 の横にある地球儀マーク(Open in Browser)をクリックします。 [4]
  3. 新しいタブが開き、Djangoおなじみの「ロケットの画面(The install worked successfully!)」が表示されれば成功です!

💡 補足

  • 開発を中断するときは、ターミナルで Ctrl + C を押すとサーバーが止まります。
  • 再開したいときは、いつでもGitHub Codespacesのページからこの環境を開き直して、python manage.py runserver を叩くだけで続きから開発できます。

Codespacesで公開について

Djangoサーバー(runserver)を起動した状態で、以下の操作を行います。

  1. 画面下部(ターミナルと同じ並び)にある 「Ports」タブ をクリックします。
  2. ポート 8000(Django)の行を右クリックします。
  3. 「Port Visibility(ポートの公開範囲)」 をクリック 「Private」を 「Public」 を選択します。
  4. 「転送されたアドレス」列にあるURL(https://...-8000.app.github.dev)をコピーして、他の人に共有します。

これで、URLを受け取った人はGitHubアカウントを持っていなくても、あなたのDjango画面にアクセスできるようになりますが・・・
inprivateウィンドウでアクセス(他の人が見るときを想定)すると「You are about to access a development port served by someone’s codespace」という警告が出ます。
「Continue」 または 「Proceed」 をクリックすると見れます。

⚠️ 注意点(知っておくべきこと)

  • Codespacesを閉じるとアクセスできなくなります(無料枠の時間を使い切っても同じ)
    これはあくまで「あなたの開発環境を一時的にのぞき見させている」状態です。あなたがブラウザを閉じたり、サーバーを止めたり(Ctrl + C)すると、他の人も見られなくなります。
  • 24時間ずっと公開したい場合は?
    もし「自分がパソコンを閉じている間も、世界中の人にいつでも使ってもらいたい」という場合は、Codespacesではなく、前述した Render や PythonAnywhere などの「ホスティングサービス」へコードをデプロイ(設置)する必要があります。

GitHubレポジトリへPush

GitHub Codespacesは最初から自分のGitHubアカウントと認証連携されているため、トークンの入力や remote の設定作業が不要になります。

手順(vscode.dev内)

  1. 左側のサイドバーでソース管理を開く
    • 左メニューの 枝分かれアイコン(Source Control)をクリック
      (ショートカット:Ctrl + Shift + G)
  2. 「Publish to GitHub(GitHubに公開)」をクリック→「拡張機能 ‘GitHub’ が GitHub を使用してサインインしようとしています。」と聞かれるので許可→ アカウント選択→何も表示されなくなったら、もう一度「Publish to GitHub」→「publish to GitHub private repository~」を選択(publicを選ぶとコードが公開されてしまいます)
  3. 「どのファイルをレポジトリに含めるか」と聞かれるので
    • 含めたいものをチェック後、OK
  4. GitHubに新しいレポジトリが作られています。
  5. 以降、コードを変更したら、「ソース管理」にコミットボタンがあるので変更理由を書いて「コミット」を押すと更新されます。

リポジトリ名変更

最初はcodespaces-blankになっています。新しいものを同じ手順で作ると、また、codespaces-blankになってかぶります。なので、名前を変えておいた方がいいです。

  1. GitHub の該当リポジトリを開く
  2. 上部メニューの Settings をクリック
  3. 一番上の Repository name を変更
  4. Renameをクリックで変更できます。

Gitgurdianからメールが来る

GitHubにpushした後、Gitgurdianというところから以下のメールが来ます。

1 internal secret incident detected!
Django Secret Key

1. GitGuardianとは?

GitGuardianは、GitHubなどのリポジトリにソースコードをPushした際、APIキーやパスワード、秘密鍵などの機密情報(シークレット)が誤って公開されていないかをリアルタイムで検知・監視するセキュリティサービスです。

公開リポジトリ(Public Repository)だけでなく、プライベートリポジトリへのPushや過去のコミット履歴も含めて自動スキャンを行い、機密情報が見つかると即座に警告メールで通知してくれます。

2. Djangoの初期設定のままPushした時の検知

Djangoプロジェクトを作成した直後の状態のままGitHub等へPushすると、GitGuardianから先ほどのような通知メールが届きます。

該当箇所のコード

# settings.py
SECRET_KEY = "django-insecure-uaem4rt=2n=swg+e)b7e61ipb11^+qdjk2_ztstpq=)6k#t0l^"

GitGuardianは、コード内に直書きされたこの特定のパターンを自動識別し、「危険なシークレットが含まれている」と判断して警告を出しています。

3. 対策:.env ファイルを使った安全な管理方法

機密情報をコードに直書きせず、環境変数ファイル(.env)へ切り出して読み込むのが一般的な対策です。.envは、GitHubに保存されないので、git cloneでサーバーへコードをクローンしても、.envはない。なので自分で保存・管理し、サーバーへ自分でアップロードしなければならない。後述する「Codespaces Secrets」のようにほとんどのホスティングサービスは.envを使わずに環境変数を設定する機能があります。

手順 1: .env ファイルの作成

プロジェクト直下に .env ファイルを作成し、SECRET_KEY を移します。

# .env
SECRET_KEY=django-insecure-uaem4rt=2n=swg+e)b7e61ipb11^+qdjk2_ztstpq=)6k#t0l^

手順 2: python-dotenv のインストール

環境変数を読み込むためのライブラリをインストールします。

pip install python-dotenv

手順 3: settings.py の書き換え

settings.py の先頭付近で .env を読み込むように設定します。

# settings.py
import os
from pathlib import Path
from dotenv import load_dotenv

# .env ファイルの読み込み
load_dotenv()

# 環境変数から SECRET_KEY を取得
SECRET_KEY = os.environ.get("SECRET_KEY")

動作解説:
load_dotenv().env ファイルがあれば読み込む → なければ何もしない(エラーにもならない)os.environ.get("SECRET_KEY") → OS(=ホスティングサービス)が提供する環境変数を読む → .env がなくても ホスティング側で設定した SECRET_KEY がそのまま使われる

手順 4: .gitignore への追加(最重要)

.env ファイル自体がGitの追跡対象にならないよう、.gitignore に必ず追記します。これで,envファイルはGitHubにpushされません。

# .gitignore
.env

4. デフォルトの SECRET_KEY の意味と本番運用

先頭にある django-insecure- の意味

django-admin startproject でプロジェクトを新規作成すると、SECRET_KEY の先頭に django-insecure- という文字列が自動付与されます。

これはDjango公式が意図的に埋め込んでいるもので、「このキーは初期生成されたものであり、開発・テスト用として安全ではない(insecure)」 ことを明示しています。

本番環境でそのまま使っていいか?

NGです。

Djangoの SECRET_KEY は、以下の重要なセキュリティ機能の暗号化・署名に使われています。

  • セッションデータの暗号化(クッキーベースの認証など)
  • パスワードリセット用トークンの生成
  • CSRF対策トークンの生成

もし SECRET_KEY が漏洩していたりデフォルトのままだったりすると、攻撃者にセッションを偽装されたり、パスワードリセットURLを不正生成されたりするリスクが生じます。

本番環境ではどうすればいいか?

  • 新しくランダムな鍵を生成するPython standard libraryなどを使って、十分にランダムで複雑な文字列を新しく生成します。
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
  • 本番サーバーの環境変数として渡す
    生成した新しい鍵を、本番環境(VPS、Heroku、AWS等)の環境変数設定画面または本番用の .env ファイルにのみ設定します。
  • リポジトリ内の旧キーを無効化する
    一度でもGitHubなどにPushしてしまったキーは無効化されたとみなし、速やかに新しいキーへ差し替えてください。

GitHub Codespacesで開発する場合も、基本的な考え方はローカル環境と同じです。プロジェクトのルートディレクトリ(manage.py が置いてある場所と同じ階層)に .env ファイルを配置します。

Codespacesで対策してみる

.env の配置場所

ディレクトリ構造は次のようになります。

Plaintext

my_django_project/       ← リポジトリのルートフォルダ
├── .env                 ← ★ここに配置する
├── .gitignore           ← ★ここに .env を必ず記述する
├── manage.py            ← Djangoの管理スクリプト
└── my_django_project/
    ├── __init__.py
    ├── settings.py      ← python-dotenv で .env を読み込む
    ├── urls.py
    └── wsgi.py

Codespacesでの作成・設定手順

  1. VS Codeのファイルエクスプローラーを開く
    • サイドバーの左一番上にあるファイルアイコンをクリックします。
  2. ルート階層に新しいファイルを作成する
    • 空白部分を右クリックして「新しいファイル…」を選択するか、新規ファイル作成ボタンを押して名前を .env にします。
  3. 内容を書き込むコード スニペットSECRET_KEY=django-insecure-your-50文字の乱数
    個人開発・学習用のローカル環境(Codespaces含む)
    .env に移して .gitignore でリポジトリから除外してしまえば、django-insecure-50文字の乱数(全部で66文字)の文字列のままでも機能し、GitGuardianからの通知も止まります。
    インターネットに公開する本番環境(VPS、Heroku、AWSなど)
    練習用アプリであっても、Web上に公開(Deploy)する場合は必ず get_random_secret_key() などで生成した別の鍵に変更してください。get_random_secret_key()では50文字の乱数が作られます。
  4. .gitignore に追加されているか確認する
    • .gitignore ファイルを開き(なければ新しくつくる)、末尾に .env が含まれていることを確認します(含まれていない場合は追記してください)。

settings.py修正

「手順 2: python-dotenv のインストール」を実行し、「手順 3: settings.py の書き換え」のコードをSECRET_KEYが書いてあったところに差し替える。元あったSECRET_KEYの行は、コメントアウトだけでは、また、Gitgurdianからメール来ます。

コミットしてプッシュ

ソース管理で変更理由を記入しコミットをクイック→「すべての変更をステージして、直接コミットしますか?」ときかれるので→はい。→「変更の同期」をクリック→「このアクションは、”origin/main” との間でコミットをプルおよびプッシュします。」と聞かれるので→OK

💡 Codespacesならではの裏技:「Codespaces Secrets」を使う

Codespacesでは、.env ファイルを直接作成する代わりに、GitHubの機能(Codespaces Secrets)を使って環境変数を自動注入することも可能です。

この方法を使うと、Codespacesを立ち上げるたびに .env を手動で作る必要がなくなります。

設定手順

  1. GitHubのリポジトリページを開き、SettingsSecrets and variablesCodespaces を開く。
  2. New repository secret をクリック。
  3. Name: SECRET_KEY
  4. Secret: (生成したランダムなシークレットキーの値)を入力して保存。
  5. Codespacesを再起動(または新規作成)すると、OSの環境変数として SECRET_KEY が最初から設定された状態になります。

※この方法を使う場合、settings.py 側では os.environ.get("SECRET_KEY") で直接取得できるため、.env ファイルを作成・管理する手間を減らすことができます。つまりCodespacesを使うときだけ.envファイルを消してもいい。

Djangoの簡単な例

簡単な例(お名前.comVPSにデプロイ
簡単な例(Renderデプロイ表示するまで数分かかることがあります。毎月20日~月末は停止します。)
をコードからGitHub→デプロイまで、まとめた記事↓もあります。
この記事の最初は1文画面に表示する簡単な例から始めてます。
データベースはつかってません。PaizaCloudのやり方が書いてありますが、Codespacesでも参考になります。

【Django入門】DjangoアプリをWeb開発環境で開発、公開するまでの手順-ステップ1(GitHub Codespaces、PaizaCloud)
無料のWeb開発環境(PaizaCloudやGitHub Codespaces)でDjangoアプリを開発する簡単な手順になります。この記事ではDjangoのプログラムの内容の詳しい解説はありません。Djangoアプリをサーバーでデプロイ(…

同じ開発環境でDjangoの公式チュートリアルもやっておりますので参考にしてください。

Django公式チュートリアルをインストールしない開発環境(PaizaCloud)で無料で勉強する方法「はじめての Django アプリ作成、その1」
開発環境はパソコンにインストールせずインストール済みのPython、DjangoがWEBで無料で使えるPaizaCloudを使用します。Django公式のチュートリアルを実際に使い分かりにくいところを補足していきます。パソコンのローカル環境…

PaizaCloud

PaizaCloud は講座もやっているようです。paizaラーニング
2022にこの記事を書いたときは使っていましたが、2026年Codespacesを見つけたので、そちらのほうがいいです。

PaizaCloudでDjangoの初期ウェルカム画面(ロケットマークの画面)を表示させてみる

paizaCloud(無料プラン)を使って、Djangoの初期ウェルカム画面(ロケットマークの画面)を表示させるまでの手順です。

1.paizaCloudにログイン・新規サーバー作成:環境の立ち上げ。

  1. paizaCloud にアクセスし、無料アカウントでログイン(または新規会員登録)します。
  2. ダッシュボードが開いたら、画面左側の 「新規サーバ作成」 ボタンをクリックします。
  3. Web開発:Djangoだけ選んで、画面下部の 「新規サーバ作成」 を押すと、数秒で開発サーバーが起動します。

2.ターミナルを開く:コマンド操作準備。

  1. サーバーが開いたら、画面左側のデスクトップアイコン一覧にある 「ターミナル(Terminal)」(黒い画面のアイコン)をクリックします。
  2. 画面下部に黒いターミナル画面が立ち上がります。

3.Djangoプロジェクトを作成する:プロジェクトファイルの生成。

ターミナルに以下のコマンドを入力して実行します。

Bash

# Djangoプロジェクトを作成
django-admin startproject myproject

# 作成されたプロジェクトフォルダに移動
cd myproject

4.settings.py を書き換える:**設定ファイルの編集。

paizaCloud左側のファイルツリーから myproject フォルダを開き、settings.py をクリックしてエディタで開きます。

28行目付近にある ALLOWED_HOSTS の記述を探し、以下のように変更します。

Python

# 変更前
ALLOWED_HOSTS = []

# 変更後(ワイルドカードですべてのホストを許可)
ALLOWED_HOSTS = ['*']

ファイル変更後、Ctrl + S(またはエディタ上部の保存ボタン)で保存します。

補足: 特定のドメインだけを許可したい場合は ALLOWED_HOSTS = ['sumoayui-1.paiza-user-free.cloud', 'localhost', '127.0.0.1'] と指定することも可能です。開発用環境では ['*'] とするのが手軽です。

5.開発用サーバーを起動する:ポート0.0.0.0でバインド。

paizaCloudのブラウザ機能でアクセスできるよう、外部ホストを指定してサーバーを起動します。

Bash

python3 manage.py runserver 0.0.0.0:8000

ターミナルに Starting development server at http://0.0.0.0:8000/ と表示されれば起動完了です。

5.Djangoマーク(ウェルカム画面)を確認する:ブラウザでの表示。

  1. サーバーが起動すると、画面左側のメニュー領域に 「8000」 と書かれたポートボタンが自動的に出現します。
  2. その 「8000」 ボタンをクリックします。
  3. 画面右側にブラウザ領域が開き、緑色のロケットマークとともに “The install worked successfully! Congratulations!” というDjangoの初期画面が表示されます。

ポイント

  • 無料プランのサーバーはブラウザを閉じたり一定時間操作がないと自動停止・削除されますので、作業中のコードはこまめに保存・手元にバックアップしておくことをおすすめします。
  • 開発サーバーを停止したい時は、ターミナルで Ctrl + C を押します。

プログラムが保存できない場合がある

保存できないというか、サーバーが停止して再開できずやり直すパターンです。
無料なのでしょうがないです。
ダウンロードはありますが、プロジェクトをダウンロードしようとしたら
プラン変更をうながされて使えませんでした。
GitHubに保存するのがいいです。勉強にもなる。
目次へ

Connection Closed になる

ちょっと席を外していると
「コンテナは一時停止中です」や 「Connection Closed」「Temporally~」などエラーが出て
有料プランに促されます。
「再開」や「キャンセル」で続けられる場合もありますが、
何度やってもエラーになる場合があります。

そういう場合はプラウザを1回閉じ
右上にあるプルダウンメニューからダッシュボードを表示させ
自分が作ったサーバーをクリックすると復活しやすいです。
またはスーパーリロード(Windowsの場合shift+F5)

どうにもならなくなったら
ダッシュボードでサーバーを削除
プラウザを閉じてから、しばらくしてPaizaCloudに戻り
新規サーバー作成からやり直します。
新規サーバー作成の画面のままの場合は右上にあるダッシュボードをクリックすると
出来上がったサーバーがあるので、それをクリックします。

エラーになる場合はサーバー名を前と変える。
***-1だったものを***-2にすると大体いけます。

Errorという画面が何やっても出るときがありますが
そういう時は1時間ぐらい間をあけると復活します。

サーバー削除したときはプログラムは残っていないので、1からやり直しになります。

ただGitHubに保存しておけば、
数行のコマンド打ち込んでプログラムを読み込めます。
プログラムがなくなることを前提に、ちょくちょくGitHubに保存して使いましょう。
GitHubについては下に書いてあります。

1日たって再開できたけどファイルの変更が反映されない

この状態の時はCTRL+Cでサーバー停止しても左の8000のアイコンが消えません。
一度開いてる全部のWindowを閉じると8000のアイコンも消えてうまくいきます。
ターミナルが開きっぱなしだったのが原因かもしれません。
目次へ

PaizaCloudからGitHubへPushする方法

よく忘れるのでcdで、ちゃんとルートディレクトリの下に移動しといてください。
動作がおかしいときルートに戻ってることがよくあるので。
コードをGitHubに送る手順です。

準備:GitHubでトークン(PAT)を発行する

GitHubのクラシックトークン(Personal access tokens (classic))は、特別な理由がない限り使わないほうがよいです。今回は簡単だから使ってます。GitHubではセキュリティ上の理由から、より権限を細かく絞れるFine-grained personal access tokensの利用を強く推奨しています。
私は、パソコンからGitHubは、トークンは使用せずGit for Windows + GCMを使用しています。

GitHubへコードを送る際、パスワードの代わりに Personal Access Token(個人用アクセストークン) が必要になります。

  1. GitHubにログインし、右上のアイコンから Settings → 画面左の Credentials を開きます。
  2. Personal access tokensTokens (classic) を選択し、Generate new token (classic) をクリックします。
  3. Noteに任意の名まえ(例: paizacloud)を入力し、Expiration(有効期限)を設定します。安全のため7days。
  4. repo(フルコントロール権限)のチェックボックスにチェックを入れます。
  5. 画面下の Generate token をクリックし、表示されたトークン(ghp_... から始まる文字列)をコピーしてメモしておきます(※このページを閉じると二度と表示されません)。

漏れのリスクはある?

  • HTTPS通信による保護: paizaCloudからGitHubへ送信する際、通信はすべて暗号化(HTTPS)されているため、通信経路でトークンが第三者に盗み見られる心配はありません。
  • 一時的な認証利用: git push 時のパスワード入力としてその場限りの認証で使うだけであれば、サーバー上に永続的なファイルとして勝手に保存されることも基本的にはありません。

万が一、トークンが外部に漏れた場合は?

仮にトークンが漏洩した場合、そのトークンを持っている人はあなたに成り代わってGitHub上のリポジトリを操作(コードの読み取り、変更、削除など)できる状態になります。

漏洩時の対処法(即座に行うこと)

漏洩に気づいた(または不安になった)場合は、GitHub上でトークンを失効(削除)させるだけで即座に無効化できます。

  1. GitHubの SettingsDeveloper SettingsPersonal access tokensTokens (classic) を開きます。
  2. 該当するトークンの右側にある Delete ボタンをクリックします。

これだけで、漏洩したトークンを使ったアクセスは一切拒否されるようになります。

漏洩を防ぐためのポイント

  1. GitHub上にコミットしない(超重要) ソースコード内のファイルにトークンを直書きして git push してしまう事故が最も多いパターンです。トークンをコード内に書かないよう注意してください。
  2. 有効期限(Expiration)を設定しておく トークン生成時に 7 days30 days などの有効期限を設定しておくことで、万が一削除し忘れても自動的に使えなくなります。
  3. paizaCloudの無料サーバー削除 paizaCloudの無料サーバーは一定時間でリセット・削除されるため、環境自体が放置されて第三者に覗かれるリスクも低いです。

repo(フルコントロール権限)で安全か?

結論から言うと、個人の学習やpaizaCloudでのテスト利用であれば repo 権限で問題ありませんが、セキュリティのベストプラクティス(最小権限の原則)としては「少し強めの権限」です。

なぜ repo 権限が必要なのか?

GitHubのClassicトークン(Tokens classic)の仕様上、プライベートリポジトリ(非公開)にpaizaCloudから git push するには、repo スコープ全体のチェックが必要になります。

  • パブリック(公開)リポジトリに送る場合: public_repo のチェックだけで十分です。
  • プライベート(非公開)リポジトリに送る場合: repo(フルコントロール)のチェックが必要になります。

GitHubで新しいリポジトリ(New repository)を作成する手順です。

リポジトリ作成の手順

1.新規作成ページを開く:画面右上。

  1. ページ右上にある 「+」 アイコンをクリックし、メニューから 「New repository」 を選択します。

2.リポジトリ情報を入力する:基本設定。

  1. Repository name(必須):リポジトリ名を入力します(例: myprojectdjango-app など)。
  2. Description(任意):プロジェクトの簡単な説明を入力します(空欄でも問題ありません)。

3.Public または Private を選ぶ:公開範囲の選択。
特別な理由がない限りPrivateを選んだ方が安全です。

  • Public: 誰でもコードを閲覧できるようにします。
  • Private: 自分(および許可したメンバー)だけが閲覧できるように非公開にします。

4.オプション(推奨設定):初期化設定。

  • Add a README file: チェックを入れなくてOKです(paizaCloud側から既存のコードを初めてpushする場合は、チェックを入れないほうが競合が発生せずスムーズです)。
  • Add .gitignore: 今回は「None」のままで問題ありません。
  • Choose a license: 今回は「None」のままで問題ありません。

5.作成を実行する:完了。

画面一番下にある緑色の 「Create repository」 ボタンをクリックします。

作成後の画面について

作成が完了すると、リポジトリのURL(例: https://github.com/ユーザー名/リポジトリ名.git)や、ターミナルで実行すべきコマンド一覧が表示されます。

paizaCloudからコードを送信する際は、そこに表示されているhttps://github.com/... のURLをコピーして使用します。

paizaCloudでの送信手順

1.Gitの初期ユーザー情報を設定する:最初の一回のみ。

paizaCloudのターミナルでコミット用のユーザー名とメールアドレスを登録します。
コピペするときは必ず「プレーンテキストで貼り付け」にしてください。特に”(ダブルクォーテーション)は日本語に変換されて貼り付けられてないかご注意ください。

git config --global user.name "Your GitHub Username"
git config --global user.email "your_email@example.com"

2.Gitローカルリポジトリを作成する:新規リポジトリ初期化。

Djangoプロジェクトフォルダmyproject)の中にいることを確認した上で、Git管理を開始します。

# 念のため myproject フォルダ内に移動
cd ~/myproject

# Gitの初期化
git init

# ブランチ名を main に変更
git branch -M main

# 追跡対象に全ファイルを追加
git add .

# 初回コミット
git commit -m "Initial commit"

3.GitHubのリポジトリと紐付ける:連携設定。

GitHub上で作成した空の新規リポジトリ(https://github.com/ユーザー名/リポジトリ名.git))のURLを指定します。

git remote add origin https://github.com/ユーザー名/リポジトリ名.git

4.GitHubへPushする:コードのアップロード。

以下のコマンドを実行します。

git remote add origin 

実行するとユーザー情報が求められます:

  • Username for 'https://github.com': GitHubのユーザー名を入力してEnter
  • Password for 'https://...': 準備手順で取得した Personal Access Token(ghp_... を貼り付けてEnter(※文字を入力しても画面には表示されませんが、そのまま貼り付けてEnterを押せば通ります)

注意(.gitignore について)

データベースファイル(db.sqlite3)や秘密鍵等、GitHubに上げたくないファイルがある場合は、myproject 直下に .gitignore ファイルを作成し、ファイル名を記述しておくと git add 対象から除外できます。

架空メールアドレスでもいい?

動作確認や一時的なバックアップだけであれば、架空のメールアドレスでもGitの操作(git addgit commit、GitHubへの push)自体は問題なく完了します。

架空のメールアドレスを使うデメリット(GitHub連携時)

  1. GitHubの草(コントリビューション)が生えないGitHubは、コミットに含まれるメールアドレスと「GitHubアカウントに登録されているメールアドレス」を照合して活動履歴(緑の草)を記録します。架空のアドレスだと、自分がコミットした履歴としてカウントされません。
  2. コミットの作成者が「匿名」になるGitHub上のコミット履歴で、自分のアイコンやアカウント名が表示されず、設定した名前だけのノンアクティブな表示になります。

アドレスが違ってもレポジトリは削除できます。

GitHub上のリポジトリの削除権限は、「どのGitHubアカウントでログインして削除操作をしたか」 のみで判定されます。

コミットに含まれるメールアドレス(git config user.email)は、単なる「作成者の名前ラベル」のようなデータに過ぎないため、リポジトリの設定や管理権限、削除可否には一切影響しません

  • 削除・設定の変更権限: ログイン中のGitHubアカウントに紐づきます。
  • コミットのメールアドレス: 履歴に「誰が書いたか」の文字が残るだけです。

そのため、コミットのメールアドレスを test@example.com などの架空のものにして git push した場合でも、後からGitHubのブラウザ画面(Settings → 画面下部の Delete this repository)から通常通りリポジトリを削除できます。

公開:Render(Heroku)

GitHub経由で公開します。

Herokuは2022/11/末から有料になります。なので私はこちらに引っ越しました。

【Django】Heroku無料枠がなくなるのでRenderを使ってみた。
Heroku が 2022年11月末から有料になったため、代わりになるRenderを使ってみました。どうにかデプロイできたので、その様子をご紹介します。Heroku で動いていたものを Render で動かすことができましたが、Railwa…

こちら↓も無料ではなくなった。

【Django】Heroku無料枠がなくなるのでRailwayを使ってみた。
Herokuが2022/11/末から有料になるため代わりを探しました。Railwayがよかったです。どうにかデプロイできたので、その様子をご紹介します。Herokuで動いていたものを動かすことができました。GitHubからだと簡単にできます…

DjangoではなくHtml(Pythonも書けるPyscript)を無料サーバーにアップしたい場合

Djangoはちょっと難しいかた向け。PythonをHTMLに入れることもできます。

【Python入門】Pyscriptで楽天APIを使ったアプリを作ってみた!
PyscriptとはPythonがhtmlファイルで使えるものです。HTML、CSS、JavaScriptの基本的な知識は必要です。まだできたばかりで本番では使用しない方がいいようです。htmlファイル一つ作ればいいだけなので開発環境はエデ…

取りあえずHtmlファイルをサーバーに
デプロイしてみたいという方はXFREEがあります。
こちらの記事

無料レンタルサーバーの使い方【初心者向け】プログラミングしたものをサーバーにアップロードする方法
プログラミング勉強し始めてHTML、CSS、JavaScript、PHPで作ったものを実際にネットにのせて試したくはないですか?開発環境内だけで動作させても実際はどんな感じになるのか?サーバーにアップロードしてみましょう。無料でできます。勉…

所感

Pythonで作ったものを公開(デプロイ)する目的は達成できました。

この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)



コメント

タイトルとURLをコピーしました