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)
Django pada url selain localhost [duplikat]
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.
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.