エックスサーバーにPythonのWebアプリをデプロイ【Miniconda、Flask、FastCGIを使用】

Python

エックスサーバーにはPythonが入っていますが、デフォルト設定ではroot権限がないため、直接pipコマンドを使えません。

本記事では、エックスサーバー上でPython製のWebアプリをデプロイする手順について説明します。

まずMinicondaをインストールし、そのあとにPythonのフレームワークであるFlaskをいれて、エックスサーバー上でpipコマンドが使えるようにします。そのあと、”Hello World”と表示されるシンプルなWebアプリのデプロイ手順を説明しています。

Condaによる仮想環境の構築から、Pythonを動かすためのFastCGIの設定まで、エックスサーバー上でPythonアプリケーションを実行するための基本的な手順をひととおりお伝えました。

エックスサーバー上にPython のWebアプリをデプロイする際に、参考にしてください。

★本記事がおすすめな方★
エックスサーバー上でpipコマンドを実行したい方
エックスサーバーにSSH接続して、コマンドで処理する方法が分かる方

Minicondaとは?

まず最初に、Minicondaについてお伝えしますね。

Minicondaは、Anacondaと同様、Pythonのディストリビューションです。つまり、Pythonを使うための様々なツールが入っています。

Anacondaはわりと有名かと思います。便利なものがそろっていて良いのですが、重すぎるのが欠点です。

MinicondaはAnacondaよりも最初から入っているパッケージが少ない分、軽いのが特徴です。

限られたリソースを持つ環境や、必要最小限のパッケージのみをインストールしたい場合には、Minicondaのほうが良い選択肢といえるでしょう。

今回はエックスサーバーに入れるので、軽めのほうが良いかと思い、Minicondaを選択しました。必要なものは都度インストールできます。

ただもちろん、Anacondaを使いたい場合には、Anacondaをいれる方法を解説した記事が色々とあるので、そちらを検索して参考されることをおすすめします。

基本的には、手順はほとんど同じです。

エックスサーバーでPythonのpipコマンドを使えるようにする手順① Minicondaとflaskのインストール

それではここから、実際の手順の説明にはいっていきます。まずはエックスサーバーのアカウントを用意します。

Webアプリをデプロイする際、既存のプロジェクトや設定に影響を与えることを避けたい場合は、テスト用に新しいアカウントを作成すると良いでしょう。エックスサーバーでは通常、新規アカウント作成時に10日間の無料お試し期間があります。

【エックスサーバーアカウント作成はこちらから】

(エックスサーバーのページが表示されます)

↓↓↓


わたしも、最初にテストアカウントで試してから、本番用アカウントにWebアプリをデプロイしました。

エックスサーバーの準備

アカウント作成後、エックスサーバー上にドメイン、サブドメイン等を準備し、下記のような最初のページが表示できるようにしてください。

また、SSH通信を可能にしておきます。

このあたりは割愛しますが、エックスサーバーでエックスサーバーにSSH通信を行う方法については、下記の記事を参考にしてください。

Minicondaのインストール

エックスサーバーにSSHでログインし、下記コマンドでMinicondaをダウンロードします。

これにより、ホームディレクトリにMinicondaのインストーラをダウンロードできます。続いて、下記コマンドでMinicondaをインストールします。

インストールスタート。最初に利用規約が表示されます。Enterキーを押し続けます。

これは結構長いです。ひたすらEnterキーを押し続けます。

最後までいったら【yes】を入力。

そのあと >>> の部分でインストール場所を聞かれます。特に提示された場所で問題なければ、そのままEnterキーを押すと、インストールがスタートします。

インストールが終わると、次のように

“Do you wish to update your shell profile to automatically initialize conda?”

と表示されます。yesかnoを聞かれるので、今回は【no】にします。Enterキーを押すと、【no】を選択したことになります。

上記の画面では、conda initについて書かれています。noを押すと、conda initを使用しないということになります。その場合は、ユーザーは手動で conda activate コマンドを実行する必要があります。

conda仮想環境の使用開始

Minicondaをいれると、conda というコマンドラインツールを使用して仮想環境を管理できるようになります。

他のプロジェクトへの影響を避け、依存関係を整理するために、仮想環境で作業を進めることをお勧めします。

まず、以下のコマンドを実行して、condaの初期化を行います。このステップは、condaコマンドを新しいシェルセッションで利用可能にします。

各コマンドには、最初に[〇〇〇@sv11111]$ と表示されますが、ユーザー名は、〇〇〇にあたる部分ですね。

つづいて、下記コマンドを実行。

無事バージョンが表示されていれば、インストールは成功しています。

仮想環境の作成とアクティベーション

続いて仮想環境を作ります。

仮想環境の名前と、pythonのバージョンを指定してコマンドを実行します。今回はflaskpredictという名前にしておきます。名前はお好みで変えてください。

 

途中 Procees ([y]/n)? とでます。そのままEnterキーを押すと、[y]を選択したという意味になり、その先に進んでいきます。

次に、作成した仮想環境をアクティベートします。

なお、仮想環境を終えたい時は、下記を実行します。

再度仮想環境に入るには、アクティベート用コマンドを実行してください。

flaskインストール

仮想環境をアクティベートした状態で、次にflaskをインストールします。

途中、”The following NEW packages will be INSTALLED:” と聞かれるので、Enterキーを押します。

インストール後、which pythonコマンドを行って、Pythonのパス(赤線)を確認しておきます。

このパスは後で使用します。

【パスの確認(赤線)】

エックスサーバーでPythonのpipコマンドを使えるようにする手順② fastCGIのインストールとファイルの作成

ここまででpipコマンドを使えるようになりました。ここからは、実際にFlaskアプリケーションを公開する準備を進めていきましょう。

通常、Webアプリケーションはエックスサーバーの public_html ディレクトリ内またはサブドメインに関連付けられたディレクトリ内に配置されます。

public_html ディレクトリにアクセスすると、通常は index.html がデフォルトで表示されます。これは、Webサーバーが最初に読み込むファイルです。

ここからは、この場所に3つのファイルを準備していきます。

FastCGIのインストール

まずは下記コマンドを実行し、FastCGIをインストールします。

ちなみに今回はFastCGIを使いましたが、CGIを使っても動かせます。ただ、セキュリティやパフォーマンス上の理由からFastCGIを選びました。

3つのファイルの作成

3つのファイルを作成し、上記の場所に設置します。

  • hello.py
  • .htaccess
  • index.fcgi

【hello.py】

【.htaccess】

こちらは隠しファイルとなるので、最初に .をいれます。

すべてのリクエストを index.fcgi スクリプトに転送し、FastCGIを介してPythonアプリケーションが処理されるようにします。

【index.fcgi】

一番上は、先ほど確認したPythonのパス(先ほど赤線で表示したパス)をいれます。

which pythonコマンドを行って確認してくださいね。

権限をかえる

index.fcgiファイルの権限を755変えます。このコマンドは、ファイルの所有者に読み書き実行の権限を与え、グループと他のユーザーには読み取りと実行の権限のみを与えます。

.htaccessは644にします。この設定により、ファイルの所有者はファイルを読み書きでき、グループメンバーと他のユーザーはファイルを読み取ることのみができます。

表示してみる

ブラウザを確認してみます。下記のように【Hello, World!】が表示されていれば、成功です。

うまくいかないとき

権限の変更を行っているか、確認してみてください。

また、記事内で赤線で表示したPythonのパスが間違えていると、エラーになったりします。パスを確認してください。

コピーした時に余計なものがはりつけられていないか、また、ユーザー名など、チェックしてくださいね。

さいごに

さらっと書くつもりが、なかなか長い手順になってしまいました^^;

本記事ではhello worldを表示するだけの簡単な方法をご紹介しました。

本格的なWebアプリをデプロイする際には、requirements.txtのライブラリをインストールする手順が必要となります。途中でエラーになることがあるかもしれません。

わたしはなりました。

エラーの際には、エラーの原因をつきとめて、修正していきましょう。

エックスサーバーのコントロールパネルを通じてログを確認するのも有効です。

【エックスサーバー】

また python app.py といったコマンドを実行すると、エラーをコマンドライン上で確認することができます。

本記事が参考になれば嬉しいです。

ちなみに、わたしが作成したサンプルのPythonアプリはこちら。機械学習モデルを搭載しており、入力したデータに基づいて平均月収を算出するアプリです。

よかったら、試してみてくださいね^^

エックスサーバーにアップしたサンプルアプリを試す

Python デプロイ・エックスサーバー系

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました