> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# FastAPI アプリケーションのホスティング方法

> Square Cloud で FastAPI アプリケーションを作成してホスティングする方法を学びます。

export const PortNote = ({lang}) => {
  const t = {
    'en': {
      q: 'What port should I use for my server?',
      a1: <>You should use port <b>80</b> for your server. Port 80 is the default port for HTTP traffic, which is handled by Square Cloud to route it to 443, HTTPS, for a secure connection.</>,
      a2: 'Make sure to configure it before compressing and uploading your project.'
    },
    'pt-br': {
      q: 'Qual porta devo usar para o meu servidor?',
      a1: <>Você deve usar a porta <b>80</b> para o seu servidor. A porta 80 é a porta padrão para tráfego HTTP; a Square Cloud a encaminha para 443 (HTTPS) para estabelecer uma conexão segura.</>,
      a2: 'Certifique-se de configurá-la antes de compactar e enviar seu projeto.'
    },
    'es': {
      q: '¿Qué puerto debo usar para mi servidor?',
      a1: <>Debes usar el puerto <b>80</b> para tu servidor. El puerto 80 es el puerto predeterminado para el tráfico HTTP; Square Cloud lo redirige al 443 (HTTPS) para establecer una conexión segura.</>,
      a2: 'Asegúrate de configurarlo antes de comprimir y subir tu proyecto.'
    },
    'fr': {
      q: 'Quel port dois-je utiliser pour mon serveur ?',
      a1: <>Vous devez utiliser le port <b>80</b> pour votre serveur. Le port 80 est le port par défaut du trafic HTTP ; Square Cloud le redirige vers le port 443 (HTTPS) pour établir une connexion sécurisée.</>,
      a2: "Assurez-vous de le configurer avant de compresser et d'envoyer votre projet."
    },
    'de': {
      q: 'Welchen Port sollte ich für meinen Server verwenden?',
      a1: <>Verwenden Sie Port <b>80</b> für Ihren Server. Port 80 ist der Standardport für HTTP-Traffic; Square Cloud leitet ihn für eine sichere Verbindung an Port 443 (HTTPS) weiter.</>,
      a2: 'Stellen Sie sicher, dass Sie ihn konfigurieren, bevor Sie Ihr Projekt komprimieren und hochladen.'
    },
    'it': {
      q: 'Quale porta devo usare per il mio server?',
      a1: <>Devi usare la porta <b>80</b> per il tuo server. La porta 80 è la porta predefinita per il traffico HTTP; Square Cloud la instrada verso la 443 (HTTPS) per stabilire una connessione sicura.</>,
      a2: 'Assicurati di configurarla prima di comprimere e caricare il tuo progetto.'
    },
    'ja': {
      q: 'サーバーにはどのポートを使えばよいですか？',
      a1: <>サーバーにはポート<b>80</b>を使用してください。ポート80はHTTPトラフィックのデフォルトポートで、Square Cloudが安全な接続のために443（HTTPS）へルーティングします。</>,
      a2: 'プロジェクトを圧縮してアップロードする前に、必ず設定してください。'
    },
    'zh': {
      q: '我的服务器应该使用哪个端口？',
      a1: <>您的服务器应使用端口 <b>80</b>。端口 80 是 HTTP 流量的默认端口，Square Cloud 会将其路由到 443（HTTPS）以建立安全连接。</>,
      a2: '请务必在压缩并上传项目之前完成配置。'
    }
  };
  const c = t[lang] || t['en'];
  return <Note>
            <b>{c.q}</b><br />
            {c.a1}<br />
            {c.a2}
        </Note>;
};

export const PyDepFiles = ({lang}) => {
  const desc = {
    "en": {
      requirements: "Standard file used in Python projects to list all the external libraries and dependencies that your project needs. Each line in this file specifies a package to be installed using pip, the Python package manager.",
      pyproject: "A modern configuration file for Python projects that can specify build system requirements and project metadata. It is used by tools like Poetry to manage dependencies and packaging."
    },
    "pt-br": {
      requirements: "Arquivo padrão usado em projetos Python para listar todas as bibliotecas externas e dependências necessárias para o seu projeto. Cada linha neste arquivo especifica um pacote a ser instalado usando o pip, o gerenciador de pacotes do Python",
      pyproject: "Um arquivo de configuração moderno para projetos Python que permite especificar requisitos do sistema de compilação e metadados do projeto. É utilizado por ferramentas como o Poetry para gerenciar dependências e empacotamento."
    },
    "es": {
      requirements: "Archivo estándar usado en proyectos Python para listar todas las bibliotecas externas y dependencias que tu proyecto necesita. Cada línea de este archivo especifica un paquete que se instalará usando pip, el gestor de paquetes de Python.",
      pyproject: "Un archivo de configuración moderno para proyectos Python que permite especificar los requisitos del sistema de compilación y los metadatos del proyecto. Lo utilizan herramientas como Poetry para gestionar dependencias y empaquetado."
    },
    "fr": {
      requirements: "Fichier standard utilisé dans les projets Python pour lister toutes les bibliothèques externes et dépendances nécessaires à votre projet. Chaque ligne de ce fichier spécifie un paquet à installer avec pip, le gestionnaire de paquets de Python.",
      pyproject: "Un fichier de configuration moderne pour les projets Python qui permet de spécifier les exigences du système de build et les métadonnées du projet. Il est utilisé par des outils comme Poetry pour gérer les dépendances et le packaging."
    },
    "de": {
      requirements: "Standarddatei in Python-Projekten, die alle externen Bibliotheken und Abhängigkeiten Ihres Projekts auflistet. Jede Zeile dieser Datei gibt ein Paket an, das mit pip, dem Paketmanager von Python, installiert wird.",
      pyproject: "Eine moderne Konfigurationsdatei für Python-Projekte, die Build-System-Anforderungen und Projektmetadaten festlegen kann. Sie wird von Tools wie Poetry zur Verwaltung von Abhängigkeiten und Packaging verwendet."
    },
    "it": {
      requirements: "File standard usato nei progetti Python per elencare tutte le librerie esterne e le dipendenze necessarie al tuo progetto. Ogni riga di questo file specifica un pacchetto da installare con pip, il gestore di pacchetti di Python.",
      pyproject: "Un file di configurazione moderno per i progetti Python che consente di specificare i requisiti del sistema di build e i metadati del progetto. È utilizzato da strumenti come Poetry per gestire dipendenze e packaging."
    },
    "ja": {
      requirements: "Python プロジェクトで、必要な外部ライブラリと依存関係をすべて列挙するための標準ファイルです。このファイルの各行は、Python のパッケージマネージャーである pip でインストールするパッケージを指定します。",
      pyproject: "ビルドシステムの要件やプロジェクトのメタデータを指定できる、Python プロジェクト向けのモダンな設定ファイルです。Poetry などのツールが依存関係とパッケージングの管理に使用します。"
    },
    "zh": {
      requirements: "Python 项目中用于列出项目所需的所有外部库和依赖项的标准文件。文件中的每一行指定一个通过 pip（Python 的包管理器）安装的包。",
      pyproject: "Python 项目的现代配置文件，可指定构建系统要求和项目元数据。Poetry 等工具使用它来管理依赖项和打包。"
    }
  };
  const d = desc[lang] || desc.en;
  return <CardGroup cols={2}>
            <Card title="requirements.txt" icon="file-lines" href="../../articles/how-to-create-your-requirements">
            {d.requirements}
            </Card>
            <Card title="pyproject.toml" icon="file" href="../../articles/how-to-create-your-pyproject">
            {d.pyproject}
            </Card>
        </CardGroup>;
};

export const RecommendedPlan = ({lang, plan, tier, cpu, appType}) => {
  const siteLang = lang === 'pt-br' ? 'pt-br' : 'en';
  const url = `https://squarecloud.app/${siteLang}/pay?plan=${plan.toLowerCase()}&tier=${tier}`;
  const proUrl = `https://squarecloud.app/${siteLang}/pay?plan=pro`;
  const notes = {
    'en': <Note>
        <b>Wondering how much RAM and CPU your plan needs to host {appType}?</b><br />
        Don't worry, we're here to help.
        Our <a href={url}>{plan}</a> plan offers <b>{tier}GB</b> of RAM and <b>{cpu}vCPU</b>, which should be sufficient for most {appType}.
        However, if you are working on a larger project and seeking extra stability, we recommend considering our <b>Pro</b> plan. With additional resources, you can maintain stability even during demand spikes.
        To purchase, simply click <a href={proUrl}>here</a>.
      </Note>,
    'pt-br': <Note>
        <b>Está se perguntando quanta RAM e CPU seu plano precisa para hospedar {appType}?</b><br />
        Não se preocupe, estamos aqui para ajudar.
        Nosso plano <a href={url}>{plan}</a> oferece <b>{tier}GB</b> de RAM e <b>{cpu}vCPU</b>, o que deve ser suficiente para a maioria dos {appType}.
        No entanto, se você estiver trabalhando em um projeto maior e precisar de mais estabilidade, recomendamos considerar nosso plano <b>Pro</b>.
        Com recursos adicionais, você pode manter a estabilidade mesmo durante picos de demanda.
        Para comprar, basta clicar <a href={proUrl}>aqui</a>.
      </Note>,
    'es': <Note>
        <b>¿Te preguntas cuánta RAM y CPU necesita tu plan para alojar {appType}?</b><br />
        No te preocupes, estamos aquí para ayudarte.
        Nuestro plan <a href={url}>{plan}</a> ofrece <b>{tier}GB</b> de RAM y <b>{cpu}vCPU</b>, lo que debería ser suficiente para la mayoría de {appType}.
        Sin embargo, si estás trabajando en un proyecto más grande y buscas mayor estabilidad, te recomendamos considerar nuestro plan <b>Pro</b>.
        Con recursos adicionales, puedes mantener la estabilidad incluso durante picos de demanda.
        Para comprarlo, simplemente haz clic <a href={proUrl}>aquí</a>.
      </Note>,
    'fr': <Note>
        <b>Vous vous demandez combien de RAM et de CPU votre plan doit offrir pour héberger {appType} ?</b><br />
        Pas d'inquiétude, nous sommes là pour vous aider.
        Notre plan <a href={url}>{plan}</a> offre <b>{tier} Go</b> de RAM et <b>{cpu} vCPU</b>, ce qui devrait suffire pour la plupart des {appType}.
        Cependant, si vous travaillez sur un projet plus important et recherchez une stabilité accrue, nous vous recommandons notre plan <b>Pro</b>.
        Avec des ressources supplémentaires, vous conservez la stabilité même lors des pics de demande.
        Pour l'acheter, cliquez simplement <a href={proUrl}>ici</a>.
      </Note>,
    'de': <Note>
        <b>Sie fragen sich, wie viel RAM und CPU Ihr Plan zum Hosten von {appType} benötigt?</b><br />
        Keine Sorge, wir helfen Ihnen gerne.
        Unser <a href={url}>{plan}</a>-Plan bietet <b>{tier} GB</b> RAM und <b>{cpu} vCPU</b>, was für die meisten {appType} ausreichen sollte.
        Wenn Sie jedoch an einem größeren Projekt arbeiten und zusätzliche Stabilität benötigen, empfehlen wir unseren <b>Pro</b>-Plan.
        Mit zusätzlichen Ressourcen bleibt Ihre Anwendung auch bei Lastspitzen stabil.
        Zum Kauf klicken Sie einfach <a href={proUrl}>hier</a>.
      </Note>,
    'it': <Note>
        <b>Ti stai chiedendo quanta RAM e CPU serve al tuo piano per ospitare {appType}?</b><br />
        Non preoccuparti, siamo qui per aiutarti.
        Il nostro piano <a href={url}>{plan}</a> offre <b>{tier}GB</b> di RAM e <b>{cpu}vCPU</b>, che dovrebbero essere sufficienti per la maggior parte di {appType}.
        Tuttavia, se stai lavorando a un progetto più grande e cerchi maggiore stabilità, ti consigliamo il nostro piano <b>Pro</b>.
        Con risorse aggiuntive puoi mantenere la stabilità anche durante i picchi di richieste.
        Per acquistarlo, fai clic <a href={proUrl}>qui</a>.
      </Note>,
    'ja': <Note>
        <b>{appType}のホスティングに必要なRAMとCPUの容量が気になりますか？</b><br />
        ご安心ください。私たちがサポートします。
        <a href={url}>{plan}</a>プランは<b>{tier}GB</b>のRAMと<b>{cpu}vCPU</b>を提供しており、ほとんどの{appType}には十分です。
        より大規模なプロジェクトでさらなる安定性を求める場合は、<b>Pro</b>プランをおすすめします。追加リソースにより、需要のピーク時でも安定性を維持できます。
        ご購入は<a href={proUrl}>こちら</a>をクリックしてください。
      </Note>,
    'zh': <Note>
        <b>想知道托管{appType}需要多少 RAM 和 CPU 吗？</b><br />
        别担心，我们来帮您。
        我们的 <a href={url}>{plan}</a> 套餐提供 <b>{tier}GB</b> RAM 和 <b>{cpu}vCPU</b>，对大多数{appType}来说已经足够。
        如果您的项目规模更大、需要更高的稳定性，我们推荐 <b>Pro</b> 套餐。借助额外资源，即使在需求高峰期也能保持稳定。
        点击<a href={proUrl}>这里</a>即可购买。
      </Note>
  };
  return notes[lang] || notes['en'];
};

export const appType_0 = "a FastAPI application"

## はじめに

Square Cloud で {appType_0} を開発してホストするには、構成と前提条件の体系的な手順に従うことが不可欠です。この技術ガイドでは、初期セットアップから本番環境へのデプロイまで、プロセス全体を解説します。

### 前提条件

* **Square Cloud アカウント**: [登録ページ](https://squarecloud.app/ja/signup)からメールアドレスを使って登録します。
* **有効な有料プラン**: アプリケーションに専用リソースと最適化されたパフォーマンスを提供します。[利用可能なプラン](https://squarecloud.app/ja/pricing)を確認し、ニーズに最も適したものを選択してください。

<RecommendedPlan appType="FastAPIアプリケーション" plan="Standard" tier="4" cpu="4" lang="ja" />

## プロジェクトの作成

FastAPI アプリケーションを作成するには、手順を進める前にシステムに Python と pip がインストールされている必要があります。

### ライブラリのインストール

Python と pip がインストールされていれば、FastAPI プロジェクトを作成できます。まず、必要な依存関係をインストールします。

```bash Terminal theme={null}
pip install fastapi uvicorn
```

### プロジェクトの開発

Python ファイル（例: `main.py`）を作成し、次のコードを追加して基本的な FastAPI アプリケーションを実装します。

```python main.py theme={null}
# Import the FastAPI class and the uvicorn ASGI server
from fastapi import FastAPI
import uvicorn

# Create an instance of the FastAPI class
app = FastAPI()

# Define a route for the root URL (/) that returns 'Hello, World!'
@app.get("/")
def hello_world():
  return {"message": "Hello, World!"}

# Check if this script is being run directly (not imported as a module)
if __name__ == "__main__":
  # Run the FastAPI application on host 0.0.0.0 (all available network interfaces) and port 80
  uvicorn.run(app, host="0.0.0.0", port=80)
```

上記のコードでは、アクセスすると「Hello, World!」を返すシンプルなルートを実装しています。アプリケーションは、HTTP のデフォルトポートであるポート 80 で実行されるように設定されています。

次に、依存関係ファイルを作成する必要があります。Python では requirements.txt または pyproject.toml があります。

<PyDepFiles lang="ja" />

## 本番サーバーの選択

Uvicorn はすでに本番環境に適した ASGI サーバーであるため、追加の WSGI サーバーは不要です。Square Cloud では、`python main.py` を実行する代わりに、設定ファイルの `START` フィールドに Uvicorn を直接起動するコマンドを設定します。

```systemd squarecloud.config theme={null}
START=python -m uvicorn main:app --host 0.0.0.0 --port 80
```

<Note>トラフィックが多いアプリケーションでは、Uvicorn ワーカーを追加できます。例: `START=python -m uvicorn main:app --host 0.0.0.0 --port 80 --workers 4`。</Note>

## デプロイ

プロジェクトファイルの準備が整ったら、それらを Square Cloud にアップロードしてプロジェクトをホスティングできます。
そのためには、すべてのプロジェクトファイルを含む ZIP ファイルを作成します。

<PortNote lang="ja" />

### ダッシュボード経由

<Steps>
  <Step title="アップロードページにアクセス">
    [アップロードページ](https://squarecloud.app/ja/dashboard/new)にアクセスし、プロジェクトの zip ファイルをアップロードします。
  </Step>

  <Step title="環境を設定">
    zip をアップロードした後、プロジェクトの名前、メインファイルまたはランタイム環境、その他の設定を構成する必要があります。\
    ウェブプロジェクトをアップロードする場合は、必ず「Web Publication」を選択し、プロジェクトにサブドメインを設定してください。
  </Step>

  <Step title="プロジェクトをデプロイ">
    最後に「Deploy」ボタンをクリックして、プロジェクトを Square Cloud にホストします。\
    デプロイ後、ダッシュボードからプロジェクトのステータスとログを監視できます。

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading.gif" alt="Square Cloud へのアプリケーションのアップロード" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="アプリが稼働していることを確認">
    最初のデプロイは、通常 1 分もかからずに完了します。[ダッシュボード](https://squarecloud.app/ja/dashboard)でアプリケーションのステータスが running になるのを待ち、起動時のエラーがないかログを確認してください。\
    ウェブサイトや API をデプロイした場合は、ブラウザで `https://<your-subdomain>.squareweb.app` を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
    <Tip>アプリが起動しませんか？よくある原因と修正方法は[トラブルシューティングガイド](/ja/platform/troubleshooting/app-wont-start)を参照してください。</Tip>
  </Step>
</Steps>

### CLI 経由

この方法を使用するには、プロジェクトのルートディレクトリに `squarecloud.app` という名前の設定ファイルを作成する必要があります。このファイルには、プロジェクトに必要な設定が含まれます。

<Card title="設定ファイルガイド" icon="link" href="/ja/getting-started/config-file">
  アプリケーションの環境を定義する `squarecloud.app` 設定ファイルの作成方法を学びます。
</Card>

<Steps>
  <Step title="CLI をインストール">
    まず、環境に CLI がインストールされている必要があります。まだの場合は、ターミナルで次のコマンドを実行してください:

    ```
    npm install -g @squarecloud/cli
    ```

    すでにお持ちの場合は、更新することを推奨します。更新するには、ターミナルで次のコマンドを実行してください:

    <Tabs>
      <Tab title="Windows">
        ```bash theme={null}
        squarecloud update
        ```
      </Tab>

      <Tab title="Linux, macOS, and WSL">
        ```bash theme={null}
        curl -fsSL https://cli.squarecloud.app/install | bash
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="認証">
    次に、認証して他の CLI コマンドを使用するには、[こちら](https://squarecloud.app/ja/account/security)で「Request API Key」をクリックして認証キーを取得します。認証キーを取得したら、次のコマンドを実行してください:

    ```bash theme={null}
    squarecloud auth login
    ```
  </Step>

  <Step title="プロジェクトをアップロード">
    最後に、CLI を使用してアプリケーションを Square Cloud にデプロイするには、次のコマンドを実行する必要があります:

    ```bash theme={null}
    squarecloud upload 
    ```

    または、zip を手動で作成した場合は、次を使用できます:

    ```bash theme={null}
    squarecloud upload --file <path/to/zip> 
    ```
  </Step>

  <Step title="アプリが稼働していることを確認">
    最初のデプロイは、通常 1 分もかからずに完了します。ターミナルから直接、アプリケーションのステータスとログを確認してください。

    ```bash theme={null}
    squarecloud app status
    squarecloud app logs
    ```

    ウェブサイトや API をデプロイした場合は、ブラウザで `https://<your-subdomain>.squareweb.app` を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
    <Tip>アプリが起動しませんか？よくある原因と修正方法は[トラブルシューティングガイド](/ja/platform/troubleshooting/app-wont-start)を参照してください。</Tip>
  </Step>
</Steps>

## トラブルシューティング

<CardGroup cols={1}>
  ### カスタムドメイン

  <Card horizontal>
    デフォルトの URL `mysite.squareweb.app` の代わりにカスタムドメイン（例: `mysite.com`）を使用するには、**Standard プラン以上**が必要です。サブドメインは設定ファイルの **SUBDOMAIN** フィールドで定義します。
  </Card>

  ### 最小 RAM 要件

  <Card horizontal>
    シンプルなウェブサイト/API の場合は**最小 512MB RAM**です。フレームワーク（Next.JS、React、Vue、Angular など）を使用するサイトでは、常に**最低 1GB RAM**を推奨します。より大規模なアプリケーションでは、メモリ不足でアプリケーションがクラッシュするのを防ぐため、より多くの RAM を割り当ててください。
  </Card>

  ### このサイトが見つかりませんでした。

  <Card horizontal>
    **サブドメイン/ドメイン**が **SUBDOMAIN** フィールドまたは**カスタムドメイン設定**で構成されている内容と一致しているか確認してください。サイトをアップロードしたばかりの場合は、Square が**初回アクセス**を有効化するまで**最大 60 秒**お待ちください。
  </Card>

  ### サイトの応答に時間がかかりすぎました...

  <Card horizontal>
    アプリケーションで**ポート 80** と**ホスト 0.0.0.0** を正しく設定しているか確認してください。Square の強制環境変数である `.env` ファイルの **PORT** と **HOST** を使用することを推奨します。
  </Card>
</CardGroup>

## 追加リソース

FastAPI とその高度なツールについての詳細は、[FastAPI 公式ドキュメント](https://fastapi.tiangolo.com/) を参照してください。
FastAPI の機能を最大限に活用するための詳細な技術ガイド、専門的なチュートリアル、完全な API ドキュメントが用意されています。

## お問い合わせ

**技術的な問題**が解決しない場合は、**専門のサポートチーム**がお手伝いします。[**お問い合わせ**](https://squarecloud.app/ja/support)いただければ、どのような問題でも喜んで解決をサポートいたします — サポートの質の高さも、開発者が Google と Trustpilot で Square Cloud に[**402 件のレビューで 4.9/5**](https://www.trustpilot.com/review/squarecloud.app)という評価をつけている理由の 1 つです。
