ฉันมีเซิร์ฟเวอร์ aerv.nl มันมี django (เฟรมเวิร์ก python) แต่เมื่อฉันรันเซิร์ฟเวอร์ django มันบอกว่า: เซิร์ฟเวอร์เริ่มต้นที่: http://127.0.0.1:8000/ ฉันจะปล่อยให้เซิร์ฟเวอร์ทำงานได้อย่างไร: http://www.aerv.nl/~filip/ ? (URL จริง)
Django บน url อื่นที่ไม่ใช่ localhost [ซ้ำกัน]
คำตอบ (2)
คุณจะต้องกำหนดค่าเซิร์ฟเวอร์ http และ Django ของคุณ ตัวอย่างเช่น หากคุณใช้ apache คุณจะต้องทำสิ่งนี้:
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/
สิ่งที่คุณกำลังทำที่นี่คือการตั้งค่าเซิร์ฟเวอร์ของคุณให้จัดการคำขอ http ผ่านแอป django ของคุณ
คุณจะต้องเข้าใจวิธีการทำงานของ DNS จากนั้นใช้การเปลี่ยนเส้นทาง จากนั้นใช้เซิร์ฟเวอร์ที่เหมาะสม (เช่น nginx
หรือ apache
เช่น gunicorn
) ไม่ใช่เซิร์ฟเวอร์การพัฒนา django ซึ่งไม่ควรใช้ในการผลิต ไม่มีทางที่คุณจะสามารถทำตามที่คุณขอเพียงแค่ใช้ ./manage runserver
ได้ สิ่งที่คุณทำได้คือเปลี่ยนที่อยู่ IP และพอร์ตเป็นสิ่งที่แตกต่างออกไป เช่น ./manage.py runserver 192.168.0.12:9999
ตัวอย่างเช่น คอมพิวเตอร์เครื่องอื่นๆ ในเครือข่ายของคุณอาจเข้าถึงไซต์ของคุณบน IP และพอร์ตเฉพาะนี้
ตัวอย่าง
คุณเป็นเจ้าของโดเมน example.com
คุณมีเซิร์ฟเวอร์ที่คุณต้องการเซิร์ฟเวอร์เว็บไซต์ของคุณด้วยที่อยู่ IP เช่น 5.130.2.19
. คุณต้องไปที่ผู้ให้บริการโดเมนของคุณและเพิ่มระเบียน A ซึ่งเชื่อมโยงสิ่งเหล่านี้เข้าด้วยกัน: example.com
-> 5.130.2.19
จากนั้นบนเซิร์ฟเวอร์ของคุณ คุณตั้งค่าเว็บเซิร์ฟเวอร์ เช่น nginx
และปล่อยให้มันทำงานด้วยเช่น การกำหนดค่านี้สำหรับเซิร์ฟเวอร์/ไซต์เฉพาะของคุณ:
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;
}
จากนั้นคุณจะต้องเรียกใช้ gunicorn
ด้วยสิ่งที่ต้องการ
gunicorn example.wsgi:application --bind=unix:/var/www/example/gunicorn.sock
นั่นควรจะเป็นทั้งหมด แต่แน่นอนว่ามันสั้นมาก เพียงแทนที่ example.com
สำหรับ URL ของคุณ ขึ้นอยู่กับคุณว่านี่จะเป็นบันทึกเฉพาะใน nginx
config (คิดว่านี่เป็นจุดเริ่มต้น) หรือจะเป็นเส้นทางใดเส้นทางหนึ่งที่ระบุในโปรเจ็กต์ django ของคุณ
มันทำงานอย่างไร?
ผู้ใช้ใส่ example.com
ลงในแถบที่อยู่ จากนั้นคอมพิวเตอร์ของคุณถามเซิร์ฟเวอร์ DNS ทั่วโลก: ที่อยู่ IP example.com ชี้ไปที่ที่อยู่ IP ใด การตอบกลับ DNS: มันคือ 5.130.2.19
จากนั้นเบราว์เซอร์ของผู้ใช้จะส่งคำขอ HTTP บน IP นั้น โดยที่ nginx
ได้รับคำขอนี้และดูภายในการกำหนดค่าว่ามี example.com
ตัวจัดการ หรือไม่ พบว่ามีอยู่และเขาควรค้นหาไฟล์ใน unix:/var/www/example/gunicorn.sock
เขามองไปที่นั่นและดูการทำงาน gunicorn
ซึ่งโดยพื้นฐานแล้วแยกวิเคราะห์โปรเจ็กต์ python django เป็นสิ่งที่ nginx
สามารถนำเสนอเป็นเว็บไซต์ของคุณได้