Cara Meng -host Django dengan Nginx di Ubuntu 18.04 Bionic Beaver Linux

Cara Meng -host Django dengan Nginx di Ubuntu 18.04 Bionic Beaver Linux

Objektif

Instal dan Konfigurasikan Ubuntu 18.04 untuk menjadi tuan rumah kerangka kerja Django.

Distribusi

Ubuntu 18.04

Persyaratan

Instalasi kerja Ubuntu 18.04 dengan hak istimewa root

Kesulitan

Sedang

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Perkenalan

Jika Anda ingin membangun dan meng -host aplikasi web dengan Python, Django adalah pilihan paling populer. Karena Python sangat terintegrasi ke dalam Linux, tidak terlalu sulit untuk menyiapkan server Django di Ubuntu.

Tidak ada satu cara yang ditetapkan untuk menjadi tuan rumah proyek Django, tetapi tumpukan yang terdiri dari PostgreSQL, Nginx, Gunicorn, dan Django cukup banyak standar.

Pasang paket

Sebelum Anda memulai, Anda perlu menginstal paket yang diperlukan. Tidak banyak, tetapi pastikan Anda menonaktifkan Apache atau server web lain yang berjalan di port 80 sebelum memulai.

$ sudo apt instal python3 python3-venv nginx postgresql


Buat database

Anda juga perlu membuat database untuk menyimpan informasi dari aplikasi Django Anda. PostgreSQL akan mengisi peran itu. Jika Anda belum pernah menggunakan PostgreSQL sebelumnya, itu tidak sama dengan mysql. Sintaksnya berbeda, dan menangani login pengguna juga secara berbeda.

Untuk masuk ke postgresql dan mengelolanya, Anda perlu menggunakan postgres Pengguna di mesin Anda yang dibuat saat Anda menginstal paket PostgreSQL. Beralih ke pengguna itu dengan su.

$ sudo su postgres

Setelah Anda berada di postgres Pengguna, Anda mengakses database Anda dengan psql memerintah.

Setelah Anda masuk, Anda harus menambahkan kata sandi ke pengguna admin Anda sebelum Anda melakukan hal lain.

postgres =# ubah postgres pengguna dengan kata sandi terenkripsi 'yourpassword';

Selanjutnya, buat database Anda.

Postgres =# Buat Database Your_DB;

Buat pengguna reguler baru untuk mengelola database. Ini adalah pengguna yang akan masuk Django.

postgres =# buat peran django_user dengan kata sandi terenkripsi 'yourpassword';

Kemudian, berikan izin pengguna itu untuk menggunakan database.

postgres =# berikan semua hak istimewa pada database your_db ke django_user;

Setelah selesai, keluar dengan \Q. Keluar postgres Pengguna juga.

Siapkan Direktori Anda

Biasanya bukan ide bagus untuk memasang paket python di seluruh sistem. Jauh lebih sulit untuk mengelola versi paket dan menjaga semuanya stabil.

Python 3 mendukung lingkungan virtual yang memungkinkan Anda untuk memadukan proyek Python Anda berdasarkan direktori. Setiap lingkungan memiliki set paket Python sendiri, dan Anda dapat menginstal dan mengelolanya sebagai pengguna biasa.

Pilih tempat di mana Anda ingin meng -host situs web Anda. /var/www/milikmu biasanya merupakan pilihan yang baik. Gunakan perintah bawaan untuk menciptakan lingkungan virtual Anda.

$ sudo python3 -m venv/var/www/yoursite

Buka direktori Anda dan aktifkan.

$ cd/var/www/yourite $ source bin/activate

Setelah selesai di direktori, Anda dapat dengan mudah menonaktifkannya.

$ Nonaktifkan


Instal Django

Dengan lingkungan virtual Anda dimulai, Anda dapat menginstal Django sendiri bersama dengan beberapa paket Python lainnya yang Anda perlukan untuk menghubungkan semuanya.

$ pip menginstal django psycopg2 gunicorn

Ini akan memakan waktu beberapa detik, tetapi Pip akan menginstal semua yang Anda butuhkan untuk mengatur proyek Django Anda.

Buat Proyek Django

Sekarang Anda memiliki Django, Anda benar -benar dapat membuat proyek Anda. Pastikan bahwa Anda berada di lingkungan virtual Anda dan diaktifkan.

$ django-admin startProject proyek Anda

Setelah Anda memiliki proyek, Anda harus mengubah konfigurasi untuk mengatur database Anda. Secara default, Django diatur untuk menggunakan SQLite3 sebagai database -nya. Itu lebih untuk tujuan pembangunan. Untuk menggunakan PostgreSQL, Anda harus mengedit konfigurasi Django utama di Proyek Anda/Proyek/Pengaturan Anda.py. Temukan file itu, dan buka. Cari Database blokir, dan edit agar terlihat seperti yang di bawah ini.

Databases = 'default':  #'engine': 'django.db.backend.sqlite3 ', #' name ': OS.jalur.Bergabunglah (base_dir, 'db.sqlite3 '),' mesin ':' django.db.backend.postgresql_psycopg2 ',' name ':' your_db ',' user ':' django_user ',' password ':' yourpassword ',' host ':' localhost ',' port ': ",

Simpan dan keluar. Sekarang, sekarang Anda dapat menerapkan migrasi awal dan membuat pengguna admin Anda. Kembali ke direktori root proyek Anda, dan jalankan perintah Linux berikut.

$ Python mengelola.PY memigrasi $ python kelola.Py CreateKuperUser

Konfigurasikan Gunicorn

Konfigurasi Gunicorn cukup sederhana, tetapi masih penting untuk dilakukan. Membuat Gunicorn direktori di root situs Anda. Anda pada dasarnya perlu memberi tahu di mana menjalankan soketnya, berapa banyak pekerja untuk ditelur, dan di mana harus masuk. Buat file Python yang dipanggil Gunicorn-Config.py, dan membuatnya terlihat seperti yang di bawah ini.

Impor multiprocessing bind = 'unix:/tmp/gunicorn.pekerja kaus kaki = multiproses.cpu_count () * 2 + 1 Reload = True Daemon = True AccessLog = './mengakses.log 'errorLog ='./kesalahan.catatan'

Setelah Anda mengaturnya sesuai keinginan Anda, simpan dan keluar.

Anda dapat memulai Gunicorn dari direktori root proyek Anda dengan perintah yang mirip dengan ini:

$ Gunicorn -C Gunicorn/Gunicorn -Config.Py proyek Anda.WSGI


Konfigurasikan nginx

Semua konfigurasi nginx bersandar pada /etc/nginx. Ada banyak file di direktori itu, tetapi Anda tidak perlu khawatir tentang semuanya. Anda hanya benar -benar membutuhkan /etc/nginx/nginx.conf dan file khusus situs yang akan Anda buat /etc/nginx/situs-tersedia/tempat Anda. Sebenarnya, konfigurasi NGINX utama tidak terlalu diperlukan kecuali Anda ingin mengoptimalkan situs Anda dalam produksi. Anda tidak perlu mengacaukannya hanya untuk menjalankan situs Anda.

Jadi, buat file untuk situs Anda di /etc/nginx/situs-tersedia/tempat Anda.

Bagian pertama dari file yang Anda butuhkan adalah ke hulu memblokir. Blok ini memberi tahu NGINX bahwa kode aplikasi web sedang dijalankan di tempat lain (Gunicorn, dalam hal ini), dan harus bertukar permintaan dengan soket atau alamat itu.

Hulu-Anda-Gunicorn Server Unix:/Tmp/Gunicorn.Sock fail_timeout = 0; 

Blok ini kurang lebih membuat variabel berdasarkan nama yang Anda tentukan setelahnya ke hulu dan memberikannya nilai server tujuan. Server bisa menjadi soket unix atau alamat IP dan nomor port. Karena Gunicorn akan berjalan secara lokal, menggunakan soket unix lebih baik. Ingatlah bahwa Anda mengaturnya di konfigurasi Gunicorn sebelumnya, jadi arahkan konfigurasi nginx Anda.

Selanjutnya, Anda dapat pindah ke blok utama untuk Nginx, server memblokir. Tambahkan itu.

server 

Opsi dasar memberi tahu Nginx port apa yang harus didengarkan dan url apa yang harus diwaspadai.

Dengarkan 80 default; client_max_body_size 4g; server_name situs Anda.com; Keepalive_Timeout 70;

Kemudian, tambahkan lokasi log Anda.

access_log/var/log/nginx/situs Anda.Access_log Main; ERROR_LOG/VAR/LOG/NGINX/SITE ANDA.Info aligasi_log;

Titik nginx di direktori root situs Anda.

root/var/www/virtualenv/situs Anda;

Gunicorn tidak menyajikan file statis, jadi Anda harus mengatur Nginx untuk menyajikan file statis situs Anda. Tepat di mana file -file tersebut berada ditentukan dalam file Pengaturan Django Anda. Biasanya, ada dua direktori, satu untuk file statis situs dan lainnya untuk file yang diunggah. Blok berbagi struktur yang sama. Contoh di bawah ini mengasumsikan bahwa file statis Anda ada di direktori yang disebut statis di akar proyek Anda.

Lokasi / Static / AutoIndex on; alias/var/www/virtualEnv/Anda-situs/statis/; kedaluwarsa 1m; Access_log off; add_header cache-control "public"; proxy_ignore_headers "set-cookie"; 

Ada beberapa opsi lain di sana yang membuat default yang baik untuk caching.

Selanjutnya Lokasi memblokir yang Anda butuhkan benar -benar akan menangani koneksi dengan Gunicorn. Menyukai ke hulu Ini menetapkan jenis variabel lain dan memberitahukannya untuk mewariskan koneksi ke blok hulu Anda.

lokasi @proxy_to_app proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_redirect off; proxy_pass http: //-gunicorn Anda; 

Akhirnya, atur blok yang memberi tahu Nginx untuk mencari file statis agar sesuai dengan permintaan yang masuk. Jika tidak ada yang ditemukan, lewati ke Gunicorn.

Lokasi / try_files $ uri @proxy_to_app; 

Hanya itu yang benar -benar Anda butuhkan. Anda dapat melakukan lebih banyak penyetelan kinerja, tetapi tidak penting untuk menjalankan Django. Simpan dan keluar.

Buat tautan antara file baru Anda dan Situs-Enabled map. Hapus yang ada bawaan file di sana.

$ sudo rm/etc/nginx/situs-diable/default $ sudo ln -s/etc/nginx/situs-tersedia/situs Anda/etc/nginx/situs-diable/

Restart nginx.

$ sudo systemctl restart nginx

Sekarang, Anda harus dapat membuka browser Anda dan melihat halaman Django default.

Menutup pikiran

Baiklah, jadi ini semacam jalan yang panjang. Apakah Anda ingin melalui konfigurasi sebanyak ini di server pengembangan sepenuhnya terserah Anda. Namun, untuk produksi, ini memberikan dasar yang solid untuk menjadi tuan rumah proyek Django Anda. Perlu diingat, pasti ada lebih banyak optimasi yang dapat Anda lakukan di konfigurasi Django dan nginx.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Ubuntu 20.04: WordPress dengan instalasi nginx
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Cara memeriksa status nginx di ubuntu
  • Cara menginstal nginx di linux
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Cara memeriksa versi nginx di linux
  • Ubuntu 20.04 Panduan
  • Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui