Ubuntu การตั้งค่าตัวแปรสภาพแวดล้อมสำหรับ Django

ฉันมีโครงการ Django ที่ทำงานบน Ubuntu 16.04 พร้อม Nginx และ Gunicorn ฉันกำลังพยายามตั้งค่าตัวแปรสภาพแวดล้อมเพื่อโหลดไฟล์การตั้งค่าอื่นสำหรับการผลิต ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ก็ไม่ประสบผลสำเร็จ

ใน ฯลฯ/สภาพแวดล้อม ฉันเพิ่มตัวแปรของฉัน ไฟล์มีลักษณะเช่นนี้

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

PRODUCTION="Production_Variable"

ค่าของตัวแปรไม่เกี่ยวข้อง

เมื่อฉันรัน printenv ฉันจะเห็นว่าตัวแปรนี้มีอยู่จริง! อย่างไรก็ตามโครงการ django ของฉันยังคงไม่ "เห็น"

try:  
    if 'PRODUCTION' in os.environ:

        from .prod import *

except:
    pass

ฉันสับสนเล็กน้อยที่ printenv แสดงให้เห็นว่ามีตัวแปรสภาพแวดล้อมอยู่ แต่ Django ไม่สามารถมองเห็นได้ มีอะไรที่ดูผิดปกติอย่างโจ่งแจ้งกับสิ่งที่ฉันพยายามหรือไม่?


person Tyler Bell    schedule 02.09.2017    source แหล่งที่มา
comment
คุณเปิดตัว Django ก่อนที่จะตั้งค่าสภาพแวดล้อมหรือไม่? การตั้งค่าจะได้รับการประเมินระหว่างการเริ่มต้นเท่านั้น   -  person wmorrell    schedule 02.09.2017
comment
ฉันแน่ใจว่าระบบจะรีสตาร์ทหลังจากตั้งค่าตัวแปรแล้ว   -  person Tyler Bell    schedule 02.09.2017
comment
และคุณกำลังตรวจสอบว่าคำสั่งนำเข้าของคุณทำงานและไม่มีข้อยกเว้นใดเกิดขึ้นใช่หรือไม่   -  person wmorrell    schedule 02.09.2017
comment
ใช่ ฉันก็กังวลเรื่องเดียวกันและยืนยันว่าไม่มีข้อยกเว้น   -  person Tyler Bell    schedule 02.09.2017
comment
ตกลง และนี่คือไฟล์การตั้งค่าทั้งหมดของคุณใช่ไหม เค้าโครงโครงการของคุณคืออะไร?   -  person wmorrell    schedule 02.09.2017
comment
ในที่สุดฉันก็ทำให้มันทำงานได้ ฉันจะโพสต์คำตอบ   -  person Tyler Bell    schedule 02.09.2017


คำตอบ (2)


โอเค ฉันหวังว่านี่จะช่วยคนในอนาคตที่กำลังประสบปัญหาเดียวกันได้ ฉันแก้ไขไฟล์ gunicorn.service และเพิ่มบรรทัดต่อไปนี้

Environment="Production=production"

ไฟล์ของฉันจึงมีลักษณะเช่นนี้

[Unit]
Description=gunicorn daemon
After= network.target

[Service]
User=root
Group=www-data
Environment="Production=production"
WorkingDirectory= # stuff

[Install]
WantedBy=multi-user.target
person Tyler Bell    schedule 02.09.2017

ดูไฟล์การตั้งค่า django ของตัวเอง

การตั้งค่า Django

ส่วนนี้อาจเป็นประโยชน์

เพิ่มตัวแปร env ที่กำหนดเองในไฟล์การตั้งค่า:

MY_CUSTOM_SETTINGS = 'hello'

จากนั้นคุณสามารถเข้าถึงได้โดยใช้:

from django.conf import settings
In [5]: print(settings.MY_CUSTOM_SETTINGS)
hello
person Sumit Gupta    schedule 02.09.2017
comment
ขอบคุณสำหรับลิงค์ ก่อนหน้านี้ฉันได้ตรวจสอบเรื่องนี้แล้ว อย่างไรก็ตาม นี่ไม่ใช่สิ่งที่ฉันพยายามทำให้สำเร็จ - person Tyler Bell; 02.09.2017
comment
คำตอบเฉพาะลิงก์นั้นไม่ดี อย่างน้อยก็คัดลอกในส่วนที่คุณคิดว่าเกี่ยวข้องกับปัญหาที่เกิดขึ้น - person wmorrell; 02.09.2017
comment
แย่เลย เพิ่มส่วนที่เกี่ยวข้องจากลิงค์ ขอบคุณสำหรับข้อเสนอแนะ - person Sumit Gupta; 02.09.2017