web-dev-qa-db-ja.com

Django:エラー:そのポートにアクセスする権限がありません

私はこのセットアップ全体に非常に新しいので、ニースになってください。 devでは、コマンドは通常エラーなしで機能しますが、Djangoに対してさまざまなコマンドを試しているので、何かが間違っています。

python manage.py runserver 0.0.0.0:80

このポートを使用する権限がありません。ポート8080を使用できますが、URLの通常のホスト名の末尾にポートを追加すると、Webサイトが機能しません。私がポート80を使用したとき、とにかくURLに:80を追加する必要はありませんでした。

ログファイルへのアクセス許可がないというエラーが発生しましたが、そのファイルのアクセス許可を変更しました。現在、権限を持っていないものがたくさんあるようです。

Django 1.8.5。仮想環境を使用しており、プロジェクトに2つのアプリがあります。

9
Helpme

Linuxを使用している場合は、このエラーが表示されます。

何よりもまず、Djangoには本番サーバーがなく、非常に基本的な開発サーバーであり、デフォルトでポート8080を使用します。

コマンドを実行したとき

python manage.py runserver

Djangoに開発サーバーを起動するように指示すると、開発サーバーが実行されるため、運用サーバーにデプロイする前にWebアプリをテストできます。

Djangoドキュメンテーション-> Django-admin->サーバーを実行

サーバーにアクセスする方法は、ブラウザーを使用して、アドレスバーにURLを接続することです。

localhost:8080

特に記載がない限り、デフォルトでは、ほとんどのHTTPアプリケーションはポート80で実行されます。たとえば、MySQLサーバーはデフォルトでポート3306で実行できます。

基本的に、ポートは、あなたが通信したい相手にあなたを接続する古い学校の電話回線と考えることができます。

これについては、特別なことは何もありません。最初に基本を理解するために、ボトルで遊ぶ必要があるでしょう。ただ友好的な提案です。

あなたはウェブサイト上の詳細を掘り下げることができます。 安全ではありませんがSudoを使用してポート80で実行できますが、セキュリティ上の理由から、これは避けてください。

@ mtt2pが serverfault について言及している理由

ローカル接続のみを許可するようにサーバーに指示する方法は確かにありますが、0.0.0.0:80を使用するのは、他の人に作業を自慢したり、他のデバイスでWebアプリがどのように見えるかを確認したりする場合のみです。

長期的には、Sudoの方が簡単で高速ですが、遅延が発生し、安全ではありません。

これは、virtualenvのコンテキストで説明するリンクです。

ポートを指定するときのDjango runserverエラー

答えは

Sudoコマンドはスーパーユーザーコンテキストでプロセスを実行し、スーパーユーザーコンテキストにはvirtualenv設定がないと思います。

シェルスクリプトを作成してvirtualenvを設定し、manage.py runserverを呼び出してから、代わりにこのスクリプトをSudoします。

Virtualenvベースのコンテキストを説明する答えも安全ではないことに注意してください。次のように実行する必要があります

Sudo python manage.py runserver 80

ない

Sudo bash script-name

virtualenvの外。これを行うと、アプリケーションをサンドボックス化する目的が無効になります。これを無視すると、 競合状態 にさらされることになります。

3
user3159377

「aira」というvirtualenvをセットアップし、ルート環境にvirtualenvwrapperをインストールしました(/root/.bashrcの私のvirtualenvwrapper設定が一番下にあります)。これにより、runserverを動作させるために-cにカスケードする必要があるSudoコマンドの数が減ります。

Sudo sh -c "workon aira && python manage.py runserver --insecure 0.0.0.0:80"

Djangoアプリのvirtualenvvirtualenvwrapperなしで設定した場合は、手動で正しいディレクトリに変更し、Sudoコマンドシーケンス内でvirtualenvをアクティブにする必要があります。私の仮想環境はairaと呼ばれ、 my virtualenvs in /root/.virtualenvs。My Djangoプロジェクトは、ubuntuユーザーのホームディレクトリにあります。

Sudo sh -c "source $HOME/.virtualenvs/aira/bin/activate && cd /ubuntu/src/aira/ && python manage.py runserver --insecure 0.0.0.0:80"

Djangoおよびシステムサイトパッケージにrequirements.txtをインストールした場合)、Sudoを使用してサーバーを実行できます。 。

Sudo python manage.py runserver --insecure 0.0.0.0:80"

--insecureオプションを使用すると、staticfilesで静的アセット(画像、CSS、JavaScript)を提供できます。

完全を期すために、Ubuntu 16.04の/root/.bashrcにある私のvirtualenvwrapper構成変数を以下に示します。

# python3 is used for virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 

# *root* reuses the virtualenvs in *ubuntu*'s home directory
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=/home/ubuntu/src

source /usr/local/bin/virtualenvwrapper.sh
1
hobs
Sudo python manage.py runserver 0.0.0.0:80

ポート80の管理者権限が必要です

1
mtt2p