Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Men-deploy aplikasi Django ke Elastic Beanstalk
Tutorial ini memandu dalam deployment situs web Django
Dalam tutorial ini, Anda akan melakukan hal berikut:
Prasyarat
Untuk mengikuti tutorial ini, Anda harus memiliki semua Prasyarat Umum untuk Python yang diinstal, termasuk paket-paket berikut:
-
Python 3.7 atau yang lebih baru
-
pip
-
virtualenv
-
awsebcli
Kerangka kerja Django
catatan
Membuat lingkungan dengan EB CLI membutuhkan peran layanan. Peran layanan dapat dibuat dengan membuat lingkungan di konsol Elastic Beanstalk. Jika Anda tidak memiliki peran layanan, EB CLI mencoba membuatnya saat Anda menjalankannyaeb create
.
Menyiapkan lingkungan virtual Python dan menginstal Django
Buat lingkungan virtual dengan virtualenv
dan menggunakannya untuk menginstal Django dan dependensinya. Dengan menggunakan lingkungan virtual, Anda dapat mengetahui dengan tepat paket mana yang dibutuhkan aplikasi Anda, sehingga paket yang diperlukan diinstal pada EC2 instance Amazon yang menjalankan aplikasi Anda.
Langkah-langkah berikut menunjukkan perintah yang harus Anda masukkan untuk Windows dan sistem berbasis Unix, yang ditampilkan pada tab terpisah.
Untuk mempersiapkan lingkungan virtual Anda
-
Buat dan aktifkan lingkungan virtual bernama
eb-virt
. -
Aktifkan lingkungan virtual.
Anda akan melihat
(eb-virt)
ditambahkan ke prompt perintah Anda, yang menunjukkan bahwa Anda berada di lingkungan virtual.catatan
Prompt perintah Linux
~$
di direktori home Anda ditunjukkan hingga akhir dari instruksi ini. Di Windows iniC:\Users\
, di manaUSERNAME
>USERNAME
adalah nama login Windows Anda. -
Gunakan
pip
untuk menginstal Django.(eb-virt)~$
pip install django==2.2
catatan
Versi Django yang Anda pasang harus kompatibel dengan versi Python pada konfigurasi Phyton Elastic Beanstalk yang Anda pilih untuk men-deploy aplikasi Anda. Untuk informasi tentang deployment, lihat Menyebarkan situs Anda dengan EB CLI dalam topik ini.
Untuk informasi lebih lanjut tentang versi platform Python saat ini, lihat Python di dokumen Platform AWS Elastic Beanstalk .
Untuk kesesuaian versi Django dengan Python, lihat Versi Python apa yang dapat saya gunakan dengan Django?
-
Untuk memverifikasi bahwa Django terpasang, masukkan berikut ini.
(eb-virt)~$
pip freeze
Django==2.2 ...Perintah ini mencantumkan semua paket yang diinstal di lingkungan virtual Anda. Kemudian, Anda menggunakan output dari perintah ini untuk mengonfigurasi proyek Anda untuk digunakan dengan Elastic Beanstalk.
Buat proyek Django
Sekarang Anda siap untuk membuat proyek Django dan menjalankannya pada mesin Anda, menggunakan lingkungan virtual.
catatan
Tutorial ini menggunakanSQLite, yang merupakan mesin database yang disertakan dalam Python. Basis data di-deploy dengan file proyek Anda. Untuk lingkungan produksi, kami menyarankan Anda menggunakan Amazon Relational Database Service (RDSAmazon), dan Anda memisahkannya dari lingkungan Anda. Untuk informasi selengkapnya, lihat Menambahkan instans Amazon RDS DB ke lingkungan Python Elastic Beanstalk Anda.
Untuk menghasilkan aplikasi Django
-
Aktifkan lingkungan virtual Anda.
Anda akan melihat prefiks
(eb-virt)
ditambahkan ke prompt perintah Anda, yang menunjukkan bahwa Anda berada di lingkungan virtual.catatan
Prompt perintah Linux
~$
di direktori home Anda dan direktori home Linux~/
ditunjukkan hingga akhir instruksi ini. Di Windows ini adalahC:\Users\
, di manaUSERNAME
>USERNAME
adalah nama login Windows Anda. -
Gunakan perintah
django-admin startproject
untuk membuat proyek Django bernamaebdjango
.(eb-virt)~$
django-admin startproject ebdjango
Perintah ini membuat sebuah situs Django standar bernama ebdjango dengan struktur direktori berikut.
~/ebdjango |-- ebdjango | |-- __init__.py | |-- settings.py | |-- urls.py | `-- wsgi.py `-- manage.py
-
Jalankan situs Django Anda secara lokal dengan
manage.py runserver
.(eb-virt) ~$
cd ebdjango
(eb-virt) ~/ebdjango$
python manage.py runserver
-
Di peramban web, buka
http://127.0.0.1:8000/
untuk melihat situs. -
Periksa log server untuk melihat output dari permintaan Anda. Untuk menghentikan server web dan kembali ke lingkungan virtual Anda, tekan Ctrl+C.
Django version 2.2, using settings 'ebdjango.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [07/Sep/2018 20:14:09] "GET / HTTP/1.1" 200 16348
Ctrl+C
Konfigurasikan aplikasi Django Anda untuk Elastic Beanstalk
Sekarang setelah Anda memiliki situs bertenaga Django pada mesin lokal Anda, Anda dapat mengonfigurasi untuk deployment dengan Elastic Beanstalk.
Secara default, Elastic Beanstalk mencari file bernama application.py
untuk memulai aplikasi Anda. Karena ini tidak ada di proyek Django yang Anda buat, Anda perlu membuat beberapa penyesuaian pada lingkungan aplikasi Anda. Anda juga harus mengatur variabel lingkungan sehingga modul aplikasi Anda dapat dimuat.
Mengonfigurasi situs Anda untuk Elastic Beanstalk
-
Aktifkan lingkungan virtual Anda.
-
Jalankan
pip freeze
, kemudian simpan output ke file bernamarequirements.txt
.(eb-virt) ~/ebdjango$
pip freeze > requirements.txt
Elastic
requirements.txt
Beanstalk digunakan untuk menentukan paket mana yang akan diinstal EC2 pada instance yang menjalankan aplikasi Anda. -
Membuat sebuah direktori bernama
.ebextensions
.(eb-virt) ~/ebdjango$
mkdir .ebextensions
-
Di direktori
.ebextensions
, tambahkan file konfigurasi bernamadjango.config
dengan teks berikut.contoh ~/ebdjango/.ebextensions/django.config
option_settings: aws:elasticbeanstalk:container:python: WSGIPath: ebdjango.wsgi:application
Pengaturan ini,
WSGIPath
, menentukan lokasi WSGI skrip yang digunakan Elastic Beanstalk untuk memulai aplikasi Anda.catatan
Jika Anda menggunakan versi platform Amazon Linux AMI Python (sebelum Amazon Linux 2), ganti nilainya dengan.
WSGIPath
ebdjango/wsgi.py
Nilai dalam contoh berfungsi dengan WSGI server Gunicorn, yang tidak didukung pada versi AMI platform Amazon Linux. -
Nonaktifkan lingkungan virtual Anda dengan perintah
deactivate
.(eb-virt) ~/ebdjango$
deactivate
Aktifkan kembali lingkungan virtual setiap kali Anda perlu menambahkan paket ke aplikasi Anda atau menjalankan aplikasi secara lokal.
Menyebarkan situs Anda dengan EB CLI
Anda telah menambahkan semua yang dibutuhkan untuk men-deploy aplikasi Anda pada Elastic Beanstalk. Direktori proyek Anda seharusnya terlihat seperti ini.
~/ebdjango/
|-- .ebextensions
| `-- django.config
|-- ebdjango
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- db.sqlite3
|-- manage.py
`-- requirements.txt
Selanjutnya, Anda akan membuat lingkungan aplikasi dan men-deploy aplikasi Anda yang dikonfigurasi dengan Elastic Beanstalk.
Segera setelah deployment, Anda akan mengedit konfigurasi Django untuk menambahkan nama domain yang ditetapkan Elastic Beanstalk untuk aplikasi Anda ke ALLOWED_HOSTS
Django. Kemudian Anda akan men-deploy kembali aplikasi Anda. Ini adalah persyaratan keamanan Django, yang dirancang untuk mencegah serangan HTTP Host
header. Untuk informasi lebih lanjut, lihat Validasi header host
Untuk membuat lingkungan dan men-deploy aplikasi Django Anda
catatan
Tutorial ini menggunakan EB CLI sebagai mekanisme penyebaran, tetapi Anda juga dapat menggunakan konsol Elastic Beanstalk untuk menyebarkan file.zip yang berisi konten proyek Anda.
-
Inisialisasi CLI repositori EB Anda dengan perintah. eb init
~/ebdjango$
eb init -p python-3.7 django-tutorial
Application django-tutorial has been created.Perintah ini membuat aplikasi bernama
django-tutorial
. Ini juga mengkonfigurasi repositori lokal Anda untuk membuat lingkungan dengan versi platform Python 3.7 terbaru. -
(Opsional) Jalankan eb init lagi untuk mengonfigurasi key pair default sehingga Anda dapat menggunakannya SSH untuk menyambung ke EC2 instance yang menjalankan aplikasi Anda.
~/ebdjango$
eb init
Do you want to set up SSH for your instances? (y/n):y
Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]Pilih pasangan kunci jika Anda sudah memilikinya, atau ikuti prompt untuk membuatnya. Jika Anda tidak melihat prompt atau perlu mengubah pengaturan Anda nanti, jalankan eb init -i.
-
Buat lingkungan baru dan deploy aplikasi Anda dengan eb create.
~/ebdjango$
eb create django-env
catatan
Jika Anda melihat pesan kesalahan “diperlukan peran layanan”, jalankan
eb create
secara interaktif (tanpa menentukan nama lingkungan) dan EB CLI membuat peran untuk Anda.Perintah ini membuat lingkungan Elastic Beanstalk dengan beban seimbang bernama
django-env
. Membuat lingkungan membutuhkan waktu sekitar 5 menit. Karena Elastic Beanstalk menciptakan sumber daya yang dibutuhkan untuk menjalankan aplikasi Anda, Elastic Beanstalk mengeluarkan pesan informasi yang disampaikan EB ke terminal Anda. CLI -
Ketika proses pembuatan lingkungan selesai, temukan nama domain lingkungan baru Anda dengan menjalankan eb status.
~/ebdjango$
eb status
Environment details for: django-env Application name: django-tutorial ... CNAME:eb-django-app-dev.elasticbeanstalk.com
...Nama domain lingkungan Anda adalah nilai dari properti
CNAME
. -
Buka file
settings.py
dalam direktoriebdjango
. Temukan pengaturanALLOWED_HOSTS
, dan kemudian tambahkan nama domain aplikasi yang Anda temukan di langkah sebelumnya ke nilai pengaturan. Jika Anda tidak dapat menemukan pengaturan ini dalam file, tambahkan itu ke baris baru.... ALLOWED_HOSTS = ['
eb-django-app-dev.elasticbeanstalk.com
'] -
Simpan file, dan kemudian deploy aplikasi Anda dengan menjalankan eb deploy. Saat Anda menjalankaneb deploy, EB CLI menggabungkan konten direktori proyek Anda dan menerapkannya ke lingkungan Anda.
~/ebdjango$
eb deploy
catatan
Jika Anda menggunakan Git dengan proyek Anda, lihat Menggunakan EB CLI dengan Git.
-
Ketika proses pembaruan lingkungan selesai, buka situs web Anda dengan eb open.
~/ebdjango$
eb open
Ini akan membuka jendela peramban menggunakan nama domain yang dibuat untuk aplikasi Anda. Anda seharusnya melihat situs web Django yang sama seperti yang Anda telah buat dan uji secara lokal.
Jika aplikasi tidak berjalan, atau menerima pesan kesalahan, lihat Pemecahan masalah deployment untuk bantuan tentang cara menentukan penyebab kesalahan.
Jika Anda benar-benar melihat aplikasi Anda berjalan, maka selamat, Anda telah men-deploy aplikasi Django pertama Anda dengan Elastic Beanstalk!
Perbarui aplikasi Anda
Sekarang setelah menjalankan aplikasi Elastic Beanstalk, Anda dapat memperbarui dan men-deploy kembali aplikasi Anda atau konfigurasinya, dan Elastic Beanstalk melakukan pekerjaan memperbarui instans dan memulai versi aplikasi baru Anda.
Untuk contoh ini, kita akan mengaktifkan konsol admin Django dan mengonfigurasi beberapa pengaturan lain.
Mengubah pengaturan situs Anda
Secara default, situs web Django Anda menggunakan zona UTC waktu untuk menampilkan waktu. Anda dapat mengubah ini dengan menentukan zona waktu di settings.py
.
Untuk mengubah zona waktu situs Anda
-
Modifikasi pengaturan
TIME_ZONE
dalamsettings.py
.contoh ~/ebdjango/ebdjango/settings.py
... # Internationalization LANGUAGE_CODE = 'en-us' TIME_ZONE =
'US/Pacific'
USE_I18N = True USE_L10N = True USE_TZ = TrueUntuk daftar zona waktu, kunjungi halaman ini
. -
Men-deploy aplikasi ke lingkungan Elastic Beanstalk Anda.
~/ebdjango/$
eb deploy
Membuat administrator situs
Anda dapat membuat administrator situs untuk aplikasi Django Anda untuk mengakses konsol admin langsung dari situs web. Detail login administrator disimpan dengan aman di citra basis data lokal yang disertakan dalam proyek default yang dihasilkan Django.
Untuk membuat administrator situs
-
Inisialisasi basis data lokal aplikasi Django Anda.
(eb-virt) ~/ebdjango$
python manage.py migrate
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK -
Jalankan
manage.py createsuperuser
untuk membuat administrator.(eb-virt) ~/ebdjango$
python manage.py createsuperuser
Username:admin
Email address:me@mydomain.com
Password:********
Password (again):********
Superuser created successfully. -
Untuk memberitahu Django tempat menyimpan file statis, tentukan
STATIC_ROOT
dalamsettings.py
.contoh ~/ebdjango/ebdjango/settings.py
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = '/static/'
STATIC_ROOT = 'static'
-
Jalankan
manage.py collectstatic
untuk mengisistatic
direktori dengan aset statis (JavaScript,CSS, dan gambar) untuk situs admin.(eb-virt) ~/ebdjango$
python manage.py collectstatic
119 static files copied to ~/ebdjango/static -
Men-deploy aplikasi Anda.
~/ebdjango$
eb deploy
-
Lihat konsol admin dengan membuka situs di browser Anda, menambahkan
/admin/
ke situsURL, seperti berikut ini.http://
djang-env.p33kq46sfh.us-west-2
.elasticbeanstalk.com/admin/ -
Masuk dengan nama pengguna dan kata sandi yang Anda konfigurasikan pada langkah 2.
Anda dapat menggunakan prosedur pembaruan/pengujian lokal serupa diikuti oleh eb deploy. Elastic Beanstalk melakukan pekerjaan pembaruan server langsung Anda, sehingga Anda dapat fokus pada pengembangan aplikasi bukan administrasi server!
Menambahkan file konfigurasi migrasi basis data
Anda dapat menambahkan perintah ke skrip .ebextensions
yang dijalankan saat situs Anda diperbarui. Hal ini memungkinkan Anda untuk menghasilkan migrasi basis data secara otomatis.
Untuk menambahkan langkah migrasi saat aplikasi Anda di-deploy
-
Buat file lonfigurasi bernama
db-migrate.config
dengan konten berikut.contoh ~/ebdjango/.ebextensions/db-migrate.config
container_commands: 01_migrate: command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate" leader_only: true option_settings: aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE: ebdjango.settings
File konfigurasi ini mengaktifkan lingkungan virtual server dan menjalankan
manage.py migrate
perintah selama proses penyebaran, sebelum memulai aplikasi Anda. Karena berjalan sebelum aplikasi dimulai, Anda juga harus mengonfigurasi variabel lingkunganDJANGO_SETTINGS_MODULE
secara eksplisit (biasanyawsgi.py
akan mengurus hal ini untuk Anda selama startup). Menentukanleader_only: true
dalam perintah akan memastikan bahwa itu hanya akan dijalankan sekali ketika Anda men-deploy ke beberapa instans. -
Men-deploy aplikasi Anda.
~/ebdjango$
eb deploy
Bersihkan
Untuk menghemat jam instans dan AWS sumber daya lainnya di antara sesi pengembangan, hentikan lingkungan Elastic Beanstalk Anda dengan. eb terminate
~/ebdjango$ eb terminate django-env
Perintah ini mengakhiri lingkungan dan semua sumber AWS daya yang berjalan di dalamnya. Perintah tersebut bagaimana pun juga tidak akan menghapus aplikasi, sehingga Anda selalu dapat membuat lebih banyak lingkungan dengan konfigurasi yang sama dengan menjalankan eb create lagi. Untuk informasi selengkapnya tentang CLI perintah EB, lihatMengelola beberapa lingkungan Elastic Beanstalk sebagai grup dengan EB CLI.
Jika Anda telah selesai dengan aplikasi sampel, Anda juga dapat menghapus folder proyek dan lingkungan virtual.
~$ rm -rf ~/eb-virt
~$ rm -rf ~/ebdjango
Langkah selanjutnya
Untuk informasi selengkapnya tentang Django, termasuk tutorial secara mendalam, lihat Dokumentasi resmi
Jika Anda ingin mencoba kerangka kerja web Python lain, lihat Men-deploy aplikasi Flask ke Elastic Beanstalk.