Django pada url selain localhost [duplikat]

Saya memiliki server aerv.nl. ia memiliki Django (kerangka kerja python) tetapi ketika saya menjalankan server Django dikatakan: server dimulai pada: http://127.0.0.1:8000/ bagaimana saya bisa membiarkan server berjalan di: http://www.aerv.nl/~filip/ ? (url asli)


person filipKAAS    schedule 13.12.2015    source sumber


Jawaban (2)


Anda harus mengkonfigurasi server http dan Django Anda. Misalnya jika Anda menggunakan Apache, Anda harus melalui ini:

https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/

Apa yang Anda lakukan di sini adalah menyiapkan server Anda untuk menangani permintaan http melalui aplikasi Django Anda.

person MarkHarley    schedule 13.12.2015
comment
Saya dapat memberikan jawaban yang lebih rinci jika Anda dapat memberikan sedikit lebih banyak detail mengenai pengaturan server Anda (dan penyedia). Misalnya. apakah Anda menggunakan Apache, unicorn, nginx, ... dan apakah ini dihosting di webfaction, linode, ... - person MarkHarley; 13.12.2015

Anda perlu memahami cara kerja DNS, kemudian menggunakan pengalihan dan kemudian beberapa server yang tepat (seperti nginx atau apache dengan misalnya gunicorn), bukan server pengembangan Django, yang tidak boleh digunakan pada produksi. Tidak mungkin Anda dapat melakukan apa yang Anda minta hanya dengan ./manage runserver. Yang dapat Anda lakukan hanyalah mengubah alamat IP dan port ke sesuatu yang berbeda dengan misalnya: ./manage.py runserver 192.168.0.12:9999 jadi misalnya komputer lain di jaringan Anda mungkin mengakses situs Anda pada IP dan port spesifik ini.

Contoh

Anda adalah pemilik domain example.com, Anda memiliki server tempat Anda ingin server situs Anda dengan alamat IP misalnya. 5.130.2.19. Anda perlu pergi ke penyedia domain Anda dan menambahkan catatan A yang menghubungkan ini bersama-sama: example.com -> 5.130.2.19.

Kemudian di server Anda, Anda menyiapkan server web, mis. nginx dan biarkan berjalan dengan mis. konfigurasi ini untuk server/situs khusus Anda:

server {

    listen   80;
    server_name example.com;

    client_max_body_size 4G;

    location /static/ {
        autoindex on;
        alias   /var/www/example/django/static/;
    }

    location /media/ {
        autoindex on;
        alias   /var/www/example/django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Host $http_host;

        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://upstream_server;
            break;
        }
    }

upstream upstream_server {
  server unix:/var/www/example/gunicorn.sock fail_timeout=10s;
}

maka Anda perlu menjalankan gunicorn dengan sesuatu seperti

gunicorn example.wsgi:application --bind=unix:/var/www/example/gunicorn.sock 

Seharusnya itu saja, tapi tentu saja sangat singkat. Ganti saja example.com dengan URL Anda. Terserah kepada Anda apakah ini akan menjadi catatan spesifik dalam nginx config (anggap ini sebagai titik masuk) atau jika ini akan menjadi salah satu rute yang ditentukan dalam proyek Django Anda.

Bagaimana cara kerjanya?

Pengguna memasukkan example.com ke bilah alamat, komputer Anda kemudian menanyakan server DNS global: Ke alamat IP mana yang ditunjuk example.com?, balasan DNS: Ini 5.130.2.19. Browser pengguna kemudian mengirimkan permintaan HTTP pada IP tersebut, di mana nginx mendapatkan permintaan ini dan melihat ke dalam konfigurasinya jika ada example.com penangan. Ternyata itu ada di sana dan dia harus mencari file di unix:/var/www/example/gunicorn.sock. Dia melihat ke sana dan melihat gunicorn berfungsi, yang pada dasarnya mengurai proyek python Django menjadi sesuatu yang nginx dapat hadirkan sebagai situs web Anda.

person kotrfa    schedule 13.12.2015
comment
aha! jadi ketika saya melakukan itu tetapi arahkan ke aerv.nl/~filip apakah itu akan berhasil? atau apakah saya harus mengubah konfigurasi HTTPD? - person filipKAAS; 13.12.2015
comment
Itu sangat tergantung pada konfigurasi Anda secara keseluruhan. Saya memperbarui jawaban saya untuk memberi Anda gambaran singkat. - person kotrfa; 13.12.2015