Variabel Lingkungan Pengaturan Ubuntu untuk Django

Saya memiliki proyek Django yang berjalan di Ubuntu 16.04 dengan Nginx dan Gunicorn. Saya mencoba menyetel variabel lingkungan untuk memuat file pengaturan berbeda untuk produksi. Saya telah mencoba yang berikut ini tetapi tidak berhasil.

Di dll/lingkungan saya menambahkan variabel saya. Filenya terlihat seperti ini,

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

PRODUCTION="Production_Variable"

Nilai variabel tidak relevan.

Ketika saya menjalankan printenv saya dapat melihat bahwa variabel ini benar-benar ada! Namun proyek Django saya masih tidak "melihatnya".

try:  
    if 'PRODUCTION' in os.environ:

        from .prod import *

except:
    pass

Saya agak bingung karena printenv menunjukkan bahwa variabel lingkungan ada, namun Django tidak dapat melihatnya. Apakah ada yang salah dengan apa yang saya coba?


person Tyler Bell    schedule 02.09.2017    source sumber
comment
Apakah Anda meluncurkan Django sebelum mengatur lingkungan? Pengaturan hanya dievaluasi saat startup.   -  person wmorrell    schedule 02.09.2017
comment
Saya memastikan itu dimulai ulang setelah variabel ditetapkan.   -  person Tyler Bell    schedule 02.09.2017
comment
Dan Anda memvalidasi bahwa pernyataan import Anda dijalankan, dan tidak ada pengecualian yang diberikan?   -  person wmorrell    schedule 02.09.2017
comment
Ya, saya khawatir tentang hal yang sama dan mengonfirmasi bahwa tidak ada pengecualian.   -  person Tyler Bell    schedule 02.09.2017
comment
Oke, dan ini seluruh file pengaturan Anda? Apa tata letak proyek Anda?   -  person wmorrell    schedule 02.09.2017
comment
Saya akhirnya berhasil. Saya akan memposting jawabannya   -  person Tyler Bell    schedule 02.09.2017


Jawaban (2)


Oke, saya harap ini membantu seseorang di masa depan yang mengalami masalah yang sama. Saya akhirnya mengedit file gunicorn.service saya dan menambahkan baris berikut..

Environment="Production=production"

Jadi file saya terlihat seperti ini

[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

Lihat file pengaturan Django sendiri.

Pengaturan Django

Bagian ini mungkin bisa membantu

tambahkan variabel env khusus di file pengaturan:

MY_CUSTOM_SETTINGS = 'hello'

maka Anda dapat mengaksesnya menggunakan:

from django.conf import settings
In [5]: print(settings.MY_CUSTOM_SETTINGS)
hello
person Sumit Gupta    schedule 02.09.2017
comment
Terima kasih untuk tautannya. Saya sudah memikirkannya sebelumnya, namun bukan itu yang ingin saya capai. - person Tyler Bell; 02.09.2017
comment
Jawaban hanya tautan itu buruk. Setidaknya salinlah pada bagian yang menurut Anda berkaitan dengan masalah yang dihadapi. - person wmorrell; 02.09.2017
comment
salahku, tambahkan bagian yang relevan dari tautan. Terima kasih atas sarannya. - person Sumit Gupta; 02.09.2017