Bagaimana pula dengan salam kepada semua, ini adalah artikel pertama saya dalam <» FromLinux (daripada beberapa yang saya ada dalam draf saya xD), saya harap ia berguna untuk anda 
Nah, dalam pekerjaan saya yang baru dan sekarang, pada masa ini penghijrahan beberapa sistem ke Django sedang dilakukan (betapa anehnya eh ?? xD) dan salah satu tugas saya, selain daripada pembangunan, adalah memasukkannya ke dalam produksi, jadi betapa baiknya perantis, kerana ini adalah kali pertama saya memasukkan aplikasi ke dalam pengeluaran pada pelayan yang sebenarnya: $ Saya mula membaca dokumen rasmi setiap pakej timbunan yang diperlukan (Gunicorn dan Supervisord yang paling penting), dan melihat bahawa tutorial di Sepanyol mereka tidak begitu jelas dalam beberapa aspek, saya memutuskan untuk membuat panduan mini dengan langkah-langkah yang saya ikuti untuk memasukkan aplikasi ke dalam produksi, berdasarkan timbunan Django, Gunicorn, Supervisord, Nginx dan Postgresql.
Sekiranya saya bekerja, pelayan masih menjalankan Debian Squeeze, tetapi panduannya mesti sah sepenuhnya untuk pengedaran lain ... jadi mari kita teruskan dan mulakan:
Saya akan bekerja sebagai pengguna super. Pertama sekali, pakej berikut diperlukan:
PIP -> Alat untuk memasang dan menguruskan pakej untuk Python
aptitude install python-pip
Nginx -> Pelayan web (kami akan menggunakannya sebagai proksi terbalik dan untuk menyimpan cache fail statik 'img, js, css') Kami memasangnya dengan:
aptitude install nginx
Supervisord -> Aplikasi untuk mengurus dan memantau aplikasi kami, walaupun digunakan untuk lebih banyak lagi. Kami memasangnya dengan:
aptitude install supervisor
virtualenv -> Ini membantu kita membuat persekitaran pelaksanaan maya yang disesuaikan untuk aplikasi kita. Kami memasangnya dengan:
aptitude install python-virtualenv
Gunicorn -> Pelayan web untuk Python (kami belum akan memasangnya lagi)
Saya menganggap mereka semestinya sudah memasang dan mengkonfigurasi postgresql
psycopg2 -> Penyambung PostgreSQL untuk Python (kami juga tidak akan memasangnya lagi)
Buat persekitaran maya dengan virtualenv:
Mula-mula kita akan beralih ke direktori kerja yang akan kita gunakan untuk dimasukkan ke dalam pengeluaran:
cd /var/www/
Kemudian di direktori ini kita akan membuat persekitaran maya:
virtualenv ENV-nombreApp
Kami beralih ke direktori yang baru saya buat virtualenv
cd ENV-nombreAPP
Kami menyalin aplikasi dalam direktori ini dan sekarang kami terus mengaktifkan persekitaran dengan:
source bin/activate
Permintaan sekarang akan kelihatan seperti (ENV)usuario@host:
Ini akan memastikan bahawa semua yang kita lakukan kini disimpan dalam direktori /var/www/ENV-appname/ tanpa menjejaskan pakej sistem.
Sekarang kita beralih ke direktori aplikasi:
cd nombreApp
Kami terus memasang senarai kebergantungan aplikasi (jika perlu), di mana ia ditentukan dalam fail keperluan.txt:
pip install -r requirements.txt
Kita juga boleh memasang pakej secara individu, misalnya untuk memasang penyambung postgresql:
pip install psycopg2
Pemasangan dan konfigurasi GUnicorn:
Untuk memasangnya, kami melakukannya dengan cara yang sama:
pip install gunicorn
Sekarang mari kita konfigurasikannya. Untuk melakukan ini, kita akan mencipta fail bernama gunicorn-deploy.py dalam root aplikasi kita (walaupun namanya boleh jadi apa sahaja) dengan kandungan berikut:
bind = "127.0.0.1:8001" # dirección a donde accederá Nginx
logfile = "/var/www/logs/nombreApp/gunicorn.log" # dirección donde estarán los logs de la aplicación
workers = 1 # dependerá en medida de la carga de trabajo que tenga la aplicación, también depende del hardware con que se cuente
loglevel = 'info' # tipo de logging
Konfigurasi penyelia:
Sekarang mari kita konfigurasikan supervisord ; untuk itu, kita jana fail konfigurasi dengan
echo_supervisord_conf > /etc/supervisord.conf
Sekarang kita mengedit fail konfigurasi:
vim /etc/supervisord.conf
Dan kami melepaskan baris berikut dengan membuang; (titik koma):
[unix_http_server] file = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervisord.pid nodaemon = minprocs palsu = 1024 = 200 [rpcinterface: supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [program: appname] command = / var / www / ENV-appname / bin / django_unicorn -c / var / www / EN Direktori -Nama / appname / gunicorn-deploy.py = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Nama pengguna redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervisord.log
Sekarang kita akan membuat skrip untuk penyelia untuk memulakan dengan sistem, untuk itu kita akan membuat fail:
vim /etc/init.d/supervisord
Dan kami menambah kandungan berikut:
# Supervisord auto-start # # description: Auto-begin supervisord # processname: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorctl case $ 1 dalam permulaan) echo -n "Memulakan penyelia:" $ SUPERVISORD echo ;; berhenti) echo -n "Menghentikan penyelia:" $ SUPERVISORCTL gema penutupan ;; mulakan semula) echo -n "Menghentikan penyelia:" $ SUPERVISORCTL shutdown echo echo -n "Memulakan penyelia:" $ SUPERVISORD gema ;; bahawa C
Dan sekarang kami memberikan izin pelaksanaan fail sehingga dapat dimulakan dengan sistem:
sudo chmod +x /etc/init.d/supervisord
Kami mengemas kini pautan untuk memulakan perkhidmatan:
sudo update-rc.d supervisord defaults
Kami memulakan perkhidmatan:
sudo /etc/init.d/supervisord start
Menyiapkan nginx:
Langkah ini juga agak mudah; kami akan mencipta fail konfigurasi nginx berikut untuk aplikasi kami:
vim /etc/nginx/sites-enabled/nombreApp
Dan kami akan menambahkan kandungan berikut kepada anda
pelayan {dengar 9001; # port di mana mereka mahu nginx server_name mendengarkan www.domain.com; # atau 192.168.0.100, alamat yang akan kita akses access_log /var/log/nginx/Appname.access.log; # di mana kita akan mempunyai lokasi log aplikasi / {# di mana nginx akan memanggil semasa mengakses www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header Host $ http_host; } lokasi / statik / {# di mana nginx akan mengakses apabila kita memasukkan www.domain.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}
Dan kami mulakan semula nginx:
service nginx restart
Menyiapkan Django:
Mari ubah fail konfigurasi django:
vim nombreApp/settings.py
Kita cari baris yang menyatakan DEBUG = True dan ubah nilainya , meninggalkan DEBUG = False
Kami menambah parameter DB:
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # atau mysql, atau apa sahaja yang mereka gunakan 'NAMA': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'password DB', 'HOST': 'localhost', # atau yang mereka perlukan 'PORT': '', # atau yang mereka gunakan}}
Kita cari baris ALLOWED_HOSTS=[] dan tambah domain atau alamat yang akan kita akses, menghasilkan sesuatu seperti ALLOWED_HOSTS=['www.domain.com']
Kami mengkonfigurasi direktori untuk fail statik, kami mencari garis yang mengatakan STATIC_ROOT = ' ' dan kami mengubah nilainya, meletakkan jalan mutlak di mana kami mahu fail statik kami berada, dalam kes saya, saya meninggalkannya lebih kurang seperti ini STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Hampir selesai, kami melaksanakan perintah berikut:
./manage.py collectstatic
Ini akan mewujudkan folder bernama ' statics' dalam laluan yang kami tentukan dalam settings.py , di mana semua fail statik kami akan ditempatkan.
Dan akhirnya kami memulakan semula penyelia untuk mengambil perubahan baru:
supervisorctl restart nombreApp
Dan itu sahaja, akhirnya ia bukan masalah besar, bukan? Ia kelihatan mudah bagi saya 
Semoga bermanfaat untuk anda, salam sejahtera 