
Pythonアプリをサーバーで動かすということ
ローカル環境(ご自身のPC)で開発したPythonアプリをインターネット上で公開したり、定期的に自動実行させたりするには、レンタルサーバーにそのアプリのファイル一式を置き、サーバー上でPythonがそのアプリを解釈して実行できるように設定する必要があります。
大きく分けて、以下のステップが必要になります。
- アプリの準備: サーバーで動かすための最終準備をします。
- ファイルのアップロード: 開発したアプリのファイルをサーバーに送ります。
- サーバー環境設定: サーバー上でPythonが正しく動くように環境を整えます。
- 実行設定と起動: アプリが実際に動くように設定し、起動します。
- 動作確認: 正しく動いているか確認します。
準備するもの
Pythonアプリケーションのファイル一式:
- Pythonスクリプト (
.py
ファイル) - Webアプリの場合:HTMLテンプレート、CSSファイル、JavaScriptファイルなど
- その他、アプリが必要とする設定ファイルやデータファイル
requirements.txt
: アプリが依存するライブラリとそのバージョンをまとめたファイル。ローカルの開発環境で pip freeze > requirements.txt
コマンドで作っておきましょう。
レンタルサーバーの接続情報:
- FTP/SFTP情報(ホスト名、ユーザー名、パスワード、ポート番号)
- SSH接続情報(ホスト名、ユーザー名、パスワードまたは秘密鍵、ポート番号)※SSHが使えるプランの場合
主なアップロードと実行の流れ
ステップ1:ファイルをサーバーにアップロードしよう
開発したアプリのファイルを、ご自身のPCからレンタルサーバーに転送します。主な方法は以下の通りです。
FTP/SFTPクライアントソフトを使う方法 (初心者向け)
- FileZilla、Cyberduck、WinSCPなどのFTP/SFTPクライアントソフトをPCにインストールします。
- レンタルサーバーから提供されたFTP/SFTP接続情報を設定し、サーバーに接続します。
- サーバーの指定されたディレクトリ(通常は
public_html
の中や、それと同階層にアプリ用のディレクトリを作成することが多いです)に、PCからアプリのファイル一式をドラッグ&ドロップなどでアップロードします。
注意点: Webアプリの場合、ドキュメントルート(例: public_html
, www
など、Webブラウザからアクセスされる起点となるフォルダ)との関係を意識してアップロード場所を決めます。
Gitを使う方法 (少しステップアップ)
- ローカルのアプリ開発をGitでバージョン管理している場合、GitHubやGitLabなどのリモートリポジトリにプッシュします。
- サーバーにSSHで接続し、リモートリポジトリから
git clone
またはgit pull
します。 - この方法は、更新の管理がしやすく、複数人での開発にも向いています。レンタルサーバーによっては、管理画面からGitリポジトリを指定してデプロイできる機能がある場合もあります(例: cPanelの「Git Version Control」)。
ステップ2:サーバーでPython環境を整えよう
アップロードしたアプリがサーバー上で正しく動作するように、Pythonの実行環境を設定します。多くの場合、SSHでサーバーに接続してコマンドラインで作業します。
Pythonのバージョン確認・設定:
レンタルサーバーが提供しているPythonのバージョンを確認します。サーバーのコントロールパネルで設定できる場合もあります。
ローカルの開発環境とサーバーのPythonバージョンをできるだけ合わせるのが理想です。
必要であれば、pyenv
などを使って特定のバージョンのPythonをインストールできるサーバーもあります(ただし、共有サーバーでは制限があることが多いです)。
仮想環境の作成と有効化 (強く推奨)
他のプロジェクトやサーバー全体のPython環境に影響を与えないように、プロジェクト専用の仮想環境を作成します。
cd /path/to/your/app # アプリをアップロードしたディレクトリに移動
python -m venv venv # 'venv' という名前の仮想環境を作成 (python3 のエイリアスが python の場合)
source venv/bin/activate # 仮想環境を有効化
プロンプトの先頭に (venv)
などと表示されれば、仮想環境に入れています。
必要なライブラリのインストール:
作成した requirements.txt
を使って、アプリが必要とするライブラリを仮想環境内にインストールします。
pip install -r requirements.txt
ステップ3:アプリを動かす設定をしよう (アプリの種類別)
A) Webアプリケーション (Flask, Djangoなど) の場合
Webアプリをインターネット経由でアクセスできるようにするには、WSGI (Web Server Gateway Interface) サーバーというものを使ってPythonアプリを動かし、それをさらにWebサーバー (ApacheやNginxなど) と連携させる設定が必要です。
レンタルサーバーの専用機能を使う (一番簡単)
- cPanel採用サーバー (ColorfulBox, mixhostなど): cPanel内の「Setup Python App」や「Pythonセレクター」のような機能を使います。GUIで設定できます。
- ConoHa WING: コントロールパネルの「アプリケーション」機能からPythonアプリケーションを追加・設定できます。
- Xserver: mod_passengerを利用する設定がサーバーパネルからできる場合があります。
WSGIサーバー (Gunicornなど) を自分で設定・起動する方法 (やや上級者向け)
- 仮想環境にGunicornなどのWSGIサーバーをインストールします (
pip install gunicorn
)。 - SSHでサーバーにログインし、Gunicornを起動するコマンドを実行します。
# 例: Flaskアプリ (app.py の中の 'app' オブジェクト) を動かす場合
gunicorn --bind 0.0.0.0:8000 app:app
多くの場合、これをバックグラウンドで永続的に動作させるために、systemd
や supervisor
などのプロセス管理ツールを使うか、レンタルサーバーが提供するプロセス監視の仕組みを利用する必要があります。
さらに、外部からアクセスできるようにWebサーバー(Apache/Nginx)でリバースプロキシ設定が必要になることがあります。
B) 簡単なスクリプトの場合
CGIとして動かす:
- スクリプトの1行目にShebang (例:
#!/usr/bin/env python
) を記述します。 - スクリプトファイルに実行権限を与えます (
chmod 755 script.py
)。 - サーバーのCGI実行が許可されているディレクトリにスクリプトを置きます。
- ブラウザからそのスクリプトのURLにアクセスすると実行されます。
cronで決まった時間に動かす:
- レンタルサーバーのコントロールパネルにあるcron設定画面から設定します。
- 実行コマンドとして、Pythonのフルパスとスクリプトのフルパスを指定します。仮想環境を使っている場合は、仮想環境内のPythonを指定します。
# 例:
# /path/to/your/app/venv/bin/python /path/to/your/app/script.py
# または
# cd /path/to/your/app && /path/to/your/app/venv/bin/python script.py
SSHでログインして直接実行:手動で一時的に実行したい場合に利用します。
source venv/bin/activate
python script.py
ステップ4:パーミッション設定 (必要に応じて)
アップロードしたファイルやディレクトリ、特にスクリプトファイルやログを書き込むディレクトリなどには、適切なパーミッション(読み取り・書き込み・実行権限)を設定する必要があります。FTPソフトやSSHの chmod
コマンドで設定します。
ステップ5:動作確認とエラーが出たときのヒント
- ブラウザでアクセス: Webアプリの場合は、指定されたURLにブラウザでアクセスして正しく表示・動作するか確認します。
- エラーログの確認: 問題が発生した場合、エラーログが手がかりになります。cPanelの「エラーログ」や、WSGIサーバーの出力ログ、Webサーバー(Apache/Nginx)のエラーログなどを確認しましょう。
レンタルサーバーごとの便利な機能やポイント
- cPanel採用サーバー (ColorfulBox, mixhostなど): 「Setup Python App」機能が非常に強力です。
- Xserver, ConoHa WING: 独自のサーバーパネルからPythonのバージョン選択やアプリケーションのデプロイ支援機能が提供されています。
- Lolipop!, さくらのレンタルサーバ (スタンダードプランなど): SSH接続が基本となり、手動での環境構築が多くなる傾向があります。
初心者がつまずきやすいポイントとアドバイス
- ファイルの置き場所: 静的ファイル(CSS, JavaScript, 画像など)のパスに注意しましょう。
- パーミッションの設定ミス: ファイルが実行できない、書き込めない問題はパーミッションが原因のことが多いです。
- データベース接続設定: ローカル環境とサーバー環境でデータベース情報が異なる場合、設定ファイルを適切に修正しましょう。
- 環境変数の扱い: APIキーなどの機密情報は環境変数として設定しましょう。
- まずは簡単なアプリで練習: いきなり大規模なアプリではなく、簡単なものから試しましょう。
まとめ
レンタルサーバーでPythonアプリを動かすのは、最初は少し戸惑うかもしれませんが、一度流れを掴めば様々なことができるようになります。各サーバーのヘルプやマニュアルをよく読み、小さなステップで試しながら進めていくのが成功のコツです。頑張ってください!
