menyebarkan berkas tetap¶
lihat juga
Untuk perkenalan ke penggunaan django.contrib.staticfiles
, lihat Mengelola berkas statis (sebagai contoh gambar, JavaScript, CSS).
Melayani berkas statis di produksi¶
Garis besar dasar dari menaruh berkas-berkas tetap kedalam produksi adalah sederhana: jalankan perintah collectstatic
ketika berkas-berkas tetap berubah, kemudian atur untuk direktori berkas-berkas tetap yang dikumpulkan. Tergantung pada STATICFILES_STORAGE
, berkas-berkas mungkin butuh dipindahkan ke tempat baru secara manual atau cara post_process
dari kelas Storage
mungkin mengurusinya.
Tentu saja, seperti semua tugas-tugas penyebaran, jahat adalah di dalam rincian. Setiap pengaturan produksi akan sedikit berbeda, jadi anda akan butuh mengadaptasi garis besar dasar untuk menyesuaikan kebutuhan anda. Dibawah ini adalah sedikit corak umum yang mungkin membantu.
Melayani situs dan berkas-berkas tetap anda dari peladen sama¶
Jika anda ingin melayani berkas-berkas tetap anda dari peladen sama yang sudah melayani situs anda, pengolahan mungkin terlihat sesuatu seperti:
Dorong kode anda ke atas ke peladen penyebaran.
Di peladen, jalankan
collectstatic
untuk menyalin semua berkas statis kedalamSTATIC_ROOT
.Konfigurasikan peladen jaringan anda untuk melayani berkas-berkas dalam
STATIC_ROOT
dibawah URLSTATIC_URL
. Sebagai contoh, ini how to do this with Apache and mod_wsgi.
Anda akan mungkin ingin mengotomatisasi pengolahan ini, khususnya jika anda mendapatkan banyak peladen jaringan. Ada banyak sejumlah cara melakukan otomatisasi ini, tetapi satu pilihan yang banyak pengembang Django nikmati adalah Fabric.
Dibawah ini, dan di bagian berikutnya, kami akan menampilkan sedikit contoh fabfile (yaitu tulisan Fabric) yang mengotomatisasi pilihan penyebaran berkas. Sintaksis dari fabfile adalah cukup mudah tetapi tidak akan dicakup disini; konsultasikan Fabric’s documentation, untuk penjelasan lengkap dari sintaksis.
Jadi, sebuah fabfile untuk menyebar berkas-berkas tetap ke sepasang peladen jaringan mungkin terlihat seperti ini:
from fabric.api import *
# Hosts to deploy onto
env.hosts = ['www1.example.com', 'www2.example.com']
# Where your project code lives on the server
env.project_root = '/home/www/myproject'
def deploy_static():
with cd(env.project_root):
run('./manage.py collectstatic -v0 --noinput')
Melayani berkas statis dari sebuah server tersendiri¶
Kebanyakan situs Django besar menggunakan peladen Jaringan terpisah – yaitu, satu yang tidak juga menjalankan Django – untuk melayani berkas-berkas tetap. Peladen ini sering berjalan jenis berbeda dari peladen jaringan – lebih cepat tetapi sedikit fitur-penuh. Beberapa pilihan umum adalah:
Konfigurasi peladen ini diluar cakupan dari dokumen ini; periksa setiap dokumentasi masing-masing peladen untuk perintah.
Sejak peladen berkas tetap anda tidak akan menjalankan Django, anda akan butuh merubah strategi penyebaran menjadi kelihatan sesuatu seperti:
Ketika berkas statis anda berubah, jalankan
collectstatic
secara lokal.Dorong
STATIC_ROOT
lokal anda sampai pada peladen berkas tetap kedalam direktori yang sedang dilayani. rsync adalah sebuah pilihan umum untuk langkah ini sejak dia hanya butuh memindahkan bit ke berkas-berkas tetap yang telah berubah.
Ini adalah bagaimana ini mungkin kelihatan dalam fabfile:
from fabric.api import *
from fabric.contrib import project
# Where the static files get collected locally. Your STATIC_ROOT setting.
env.local_static_root = '/path/to/static'
# Where the static files should go remotely
env.remote_static_root = '/home/www/static.example.com'
@roles('static')
def deploy_static():
local('./manage.py collectstatic')
project.rsync_project(
remote_dir=env.remote_static_root,
local_dir=env.local_static_root,
delete=True,
)
Melayani berkas statis dari layanan cloud atau CDN¶
Taktik umum lainnya adalah melayani berkas tetap dari penyedia penyimpanan awan seperti S3 Amazon dan/atau CDN (content delivery network). Ini membuat anda mengabaikan masalah dari melayani berkas tetap dan dapat sering membuat untuk memuat-lebih cepat halaman Jaringan (khususnya ketika menggunakan CDN).
Ketika menggunakan layanan ini, alurkerja dasar akan kelihatan sedikit seperti diatas, kecuali bahwa daripada menggunakan rsync
untuk memindahkan berkas-berkas tetap anda ke peladen anda akan butuh untuk memindahkan berkas-berkas tetap ke penyedia panyimpanan atau CDN.
Terdapat sejumlah jalan anda mungkin lakukan ini, tetapi jika penyedia mempunyai sebuah API custom file storage backend akan membuat pengolahan luar biasa sederhana. Jika anda telah menulis atau menggunakan backend penyimpanan penyesuaian pihak ke3, anda dapat memberitahu collectstatic
untuk digunakan oleh pengatur STATICFILES_STORAGE
ke mesin penyimpanan.
Sebagai contoh, jika anda telah menulis sebuah backend penyimpanan S3 dalam myproject.storage.S3Storage
anda dapat menggunakannya dengan:
STATICFILES_STORAGE = 'myproject.storage.S3Storage'
Sekali semua dilakukan, semua anda harus lakukan adalah menjalankan collectstatic
dan berkas-berkas tetap anda akan didorong melalui paket penyimpanan sampai ke S3. Jika anda kemudian membutuhkan mengganti ke penyedia penyimpanan berbeda, dia dapat semudah ketika merubah pengaturan STATICFILES_STORAGE
anda.
Untuk perincian pada bagaimana anda menulis satu dari backend ini, lihat Menulis sistem penyimpanan disesuaikan. Ada aplikasi pihak ke3 tersedia yang menyediakan backend penyimpanan untuk banyak API penyimpanan penyimpanan berkas. Titik awal yang bagus adalah overview at djangopackages.com.
Pelajari lagi¶
Untuk rincian lengkap pada semua pengaturan, perintah, cetakan etiket, dan potongan-potongan lainnya dalam django.contrib.staticfiles
, lihat the staticfiles reference.