Flaskで公開するポートを指定する方法解説
2024年7月26日

こんにちは!
今回の記事では、Flaskで公開するポートを指定する方法について解説します。
Flaskを起動すると、5000番ポートや8000番ポートで起動することが多いと思います。他のサーバーでも同じポートを使っている場合、ポート番号を変更しなければいけません。
そこで、今回は公開するポートを指定する方法を丁寧に解説します!
そもそもポート番号とは?
そもそもポート番号とは何なのでしょうか?
ポート番号は、ネットワーク通信において特定のサービスやアプリケーションを識別するための数値です。
IPアドレスがネットワーク上の特定のデバイスを示すのに対し、ポート番号はそのデバイス上の特定のプロセスやサービスを識別します。
例えば、ウェブサーバーは通常ポート80や443を使用し、メールサーバーはポート25や587を使用します。
ポート番号は0から65535まであり、0から1023はよく知られたサービス用に予約されています。ポート番号を適切に設定することで、異なるアプリケーションが同じデバイスで同時に動作できます。
また、同じポート番号を使用することはできません。例えば、5000番ポートをすでに使用している場合、別のサービスは5000番以外のポートを使用する必要があります。このような場合にFlaskでポート番号を指定する必要があります。
Flaskで公開するポートを指定する方法解説
Flaskで公開するポートを指定する方法は、Flaskを起動させるコマンドによって変わります。
Flaskを開発環境で起動する場合と、Flaskを本番環境で起動する場合です。
それぞれ、python app.pyコマンドとgunicornコマンドを使うので、それぞれのポートの指定方法について解説します。
python app.pyで起動する場合
開発環境でFlaskを使う場合は、python app.pyコマンドを使用します。
その際、ポートを指定する場合は、app.run()メソッドの引数としてportを設定します。
以下に具体的な例を示します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(port=5100)
以下のように、port=の部分にポート番号を指定しましょう。上記の例では、5100番ポートに変更しています。
app.run(port=[ポート番号])
ポート番号を指定しない場合、デフォルトではポート番号5000が使用されます。
gunicornで起動する場合
本番環境でFlaskを使う場合は、gunicornコマンドを使用します。
デフォルトでは、Gunicornはポート8000でアプリケーションを起動します。
異なるポート番号を指定するには、-bオプションを使用します。
例えば、ポート8080で起動するには以下のコマンドを使用します。
gunicorn -b 0.0.0.0:8080 app:app
-bオプションは、バインドアドレスとポート番号を指定します。0.0.0.0はすべてのネットワークインターフェースからの接続を受け付ける設定です。ポート番号は8080に設定しています。
Gunicornについては、以下の記事で詳しく解説しています。
まとめ
今回の記事では、Flaskで公開するポートを指定する方法について解説しました。
ポート番号の変更はさまざまな場面で必要になります。そのためには、ポートの概要はもちろん、ポートの指定方法などを知っておく必要があります。
今回の記事が何かのお役に立てれば幸いです。
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

インフラの学習はInfraAcademy

おすすめの記事









