ポート 80 をポート 8000 に「リダイレクト」
sudo を使用せずにポート 80 にバインドすることはできません。これは、ルートのみがバインドできる保護されたポートです。(1024 未満のポートと同様)
これは、ポート 8000 へのリクエストをポート 80 に転送する単純な iptables ルールです。これにより、ポート 8000 でサービスを提供しながら、ポート 80 でサーバーにアクセスするふりをすることができます。
これはループバック インターフェイスでのみ機能します (たとえば、自分のコンピューターで自分自身と通信している場合など)、それは開発に必要なものです。
iptables -t nat -I OUTPUT --source 127.0.0.1 --destination 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8000
必要な場合、外部クライアントの場合、ルールは次のとおりです。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8000
(必要に応じてインターフェイスを編集します)
代替ソリューション
ただし、この質問を見ることができます:非ルートプロセスが Linux の「特権」ポートにバインドする方法はありますか? は、問題の別の解決策を示しています。
インタプリタ言語(pythonなど)については注意が必要です。
警告の言葉
これは明らかに開発目的のみを目的としています。アプリを実行するには、nginx + gunicorn または apache + mod_wsgi を使用する必要があります。