Cara menjadi tuan rumah Django dengan nginx di Ubuntu 18.04 Bionic Beaver Linux

Cara menjadi tuan rumah Django dengan nginx di Ubuntu 18.04 Bionic Beaver Linux

Objektif

Pasang dan konfigurasikan Ubuntu 18.04 Untuk menganjurkan rangka kerja Django.

Pengagihan

Ubuntu 18.04

Keperluan

Pemasangan kerja Ubuntu 18.04 dengan keistimewaan akar

Kesukaran

Medium

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
  • $ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Pengenalan

Sekiranya anda ingin membina dan menganjurkan aplikasi web dengan Python, Django adalah pilihan yang paling popular. Oleh kerana Python sangat terintegrasi ke Linux, tidak terlalu sukar untuk mendapatkan pelayan Django di Ubuntu.

Tidak ada satu cara untuk menjadi tuan rumah projek Django, tetapi timbunan yang terdiri daripada PostgreSQL, Nginx, Gunicorn, dan Django adalah standard.

Pasang pakej

Sebelum anda memulakan, anda perlu memasang pakej yang diperlukan. Tidak ada banyak, tetapi pastikan anda melumpuhkan Apache atau mana -mana pelayan web lain yang berjalan di port 80 sebelum memulakan.

$ sudo apt memasang python3 python3-venv nginx postgresql


Buat pangkalan data

Anda juga perlu membuat pangkalan data untuk menyimpan maklumat dari aplikasi Django anda. PostgreSQL akan mengisi peranan tersebut. Sekiranya anda tidak pernah menggunakan postgresql sebelum ini, ia tidak sama dengan mysql. Sintaksinya berbeza, dan ia juga mengendalikan log masuk pengguna secara berbeza.

Untuk log masuk ke PostgreSQL dan mengurusnya, anda perlu menggunakan Postgres Pengguna di mesin anda yang dibuat semasa anda memasang pakej PostgreSQL. Beralih kepada pengguna itu dengan su.

$ sudo su postgres

Sebaik sahaja anda berada di Postgres pengguna, anda mengakses pangkalan data anda dengan PSQL perintah.

Setelah log masuk, anda harus menambah kata laluan kepada pengguna admin anda sebelum melakukan perkara lain.

postgres =# mengubah postgres pengguna dengan kata laluan yang disulitkan 'yourpassword';

Seterusnya, buat pangkalan data anda.

postgres =# Buat pangkalan data your_db;

Buat pengguna biasa baru untuk menguruskan pangkalan data. Ini adalah pengguna yang akan masuk Django.

Postgres =# Buat peranan Django_user dengan kata laluan yang disulitkan 'yourpassword';

Kemudian, berikan kebenaran pengguna untuk menggunakan pangkalan data.

postgres =# memberikan semua keistimewaan pada pangkalan data anda_db ke django_user;

Apabila anda selesai, keluar dengan \ q. Keluar dari Postgres pengguna juga.

Sediakan Direktori Anda

Biasanya bukan idea yang bagus untuk memasang pakej python di seluruh sistem. Jauh lebih sukar untuk menguruskan versi pakej dan stabil semuanya stabil.

Python 3 menyokong persekitaran maya yang membolehkan anda memisahkan projek python anda dengan direktori. Setiap persekitaran mempunyai set pakej python tersendiri, dan anda boleh memasang dan mengurusnya sebagai pengguna biasa.

Pilih tempat di mana anda ingin menjadi tuan rumah laman web anda. /var/www/yoursite biasanya pilihan yang baik. Gunakan arahan terbina dalam untuk mewujudkan persekitaran maya anda.

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

Pergi ke direktori anda dan aktifkannya.

$ cd/var/www/yoursite $ sumber bin/aktifkan

Apabila anda selesai di direktori, anda boleh menyahaktifkannya dengan mudah.

$ menyahaktifkan


Pasang Django

Dengan persekitaran maya anda bermula, anda boleh memasang Django sendiri bersama dengan beberapa pakej python lain yang anda perlukan untuk menyambungkan segala -galanya.

$ pip memasang django psycopg2 gunicorn

Ia akan mengambil masa beberapa saat, tetapi Pip akan memasang semua yang anda perlukan untuk menyediakan projek Django anda.

Buat Projek Django

Sekarang anda mempunyai Django, anda sebenarnya boleh membuat projek anda. Pastikan anda berada di persekitaran maya anda dan memakainya.

$ django-admin startproject your-project

Sebaik sahaja anda mempunyai projek anda, anda perlu menukar konfigurasi untuk menyediakan pangkalan data anda. Secara lalai, Django ditubuhkan untuk menggunakan SQLite3 sebagai pangkalan datanya. Itu lebih untuk tujuan pembangunan. Untuk menggunakan postgresql, anda perlu mengedit konfigurasi django utama di Projek-projek anda/projek/tetapan anda.py. Cari fail itu, dan membukanya. Cari Pangkalan data blok, dan edit untuk kelihatan seperti yang di bawah.

Pangkalan data = 'default':  #'enjin': 'django.db.backends.SQLITE3 ', #' NAME ': OS.jalan.Sertai (base_dir, 'db.sqlite3 '),' enjin ':' django.db.backends.postgresql_psycopg2 ',' nama ':' your_db ',' user ':' django_user ',' kata laluan ':' yourpassword ',' host ':' localhost ',' port ': ",

Simpan dan keluar. Sekarang, sekarang anda boleh menggunakan migrasi awal dan buat pengguna admin anda. Kembali ke direktori root projek anda, dan jalankan arahan Linux berikut.

$ Python Manage.py bermigrasi $ python menguruskan.py createsuperuser

Konfigurasikan Gunicorn

Konfigurasi Gunicorn agak mudah, tetapi masih penting untuk dilakukan. Buat a Gunicorn direktori di akar laman web anda. Anda pada dasarnya perlu menceritakannya di mana untuk menjalankan soketnya, berapa banyak pekerja yang bertelur, dan di mana untuk log. Buat fail python yang dipanggil Gunicorn-Config.py, dan menjadikannya kelihatan seperti yang di bawah.

Import Multiprocessing Bind = 'Unix:/TMP/Gunicorn.pekerja kaus kaki = multiprocessing.cpu_count () * 2 + 1 Reload = true daemon = akseslog benar = './Akses.log 'errorLog ='./ralat.log '

Sebaik sahaja anda memilikinya menetapkan cara yang anda suka, simpan dan keluar.

Anda boleh memulakan Gunicorn dari direktori root projek anda dengan arahan yang serupa dengan ini:

$ GUNICORN -C GUNICORN/GUNICORN -CONFIG.Py projek anda.wsgi


Konfigurasikan nginx

Semua konfigurasi nginx terletak di /etc/nginx. Terdapat banyak fail dalam direktori itu, tetapi anda tidak perlu bimbang tentang semuanya. Anda hanya memerlukan /etc/nginx/nginx.Conf dan fail khusus tapak yang akan anda buat di /etc/nginx/laman web yang tersedia/tapak anda. Sebenarnya, konfigurasi nginx utama bukanlah semua yang diperlukan melainkan anda ingin mengoptimumkan laman web anda dalam pengeluaran. Anda tidak semestinya perlu mengacaukannya hanya untuk mendapatkan laman web anda.

Oleh itu, buat fail untuk laman web anda di /etc/nginx/laman web yang tersedia/tapak anda.

Sekeping pertama fail yang anda perlukan adalah hulu blok. Blok ini memberitahu Nginx bahawa kod aplikasi web sedang dijalankan di tempat lain (Gunicorn, dalam kes ini), dan ia harus menukar permintaan dengan soket atau alamat itu.

hulu anda-Gunicorn server unix:/tmp/gunicorn.Sock Fail_Timeout = 0; 

Blok ini lebih kurang mewujudkan pemboleh ubah berdasarkan nama yang anda tentukan selepas itu hulu dan memberikan nilai pelayan destinasi. Pelayan boleh menjadi soket unix atau alamat IP dan nombor port. Oleh kerana Gunicorn akan berjalan secara tempatan, menggunakan soket Unix lebih baik. Ingatlah bahawa anda menetapkannya dalam konfigurasi Gunicorn sebelum ini, jadi tunjukkan konfigurasi nginx anda.

Seterusnya, anda boleh beralih ke blok utama untuk nginx, pelayan blok. Tambah itu dalam.

pelayan 

Pilihan asas memberitahu nginx apa port untuk mendengar dan url apa yang harus diperhatikan.

Dengar 80 lalai; client_max_body_size 4g; server_name laman web anda.com; Keepalive_timeout 70;

Kemudian, tambahkan di lokasi log anda.

Access_log/var/log/nginx/tapak anda.akses_log utama; error_log/var/log/nginx/tapak anda.info error_log;

Titik nginx di direktori akar laman web anda.

root/var/www/virtualenv/tapak anda;

Gunicorn tidak menyampaikan fail statik, jadi anda perlu menyediakan nginx untuk menyampaikan fail statik laman web anda. Tepat di mana fail tersebut terletak ditentukan dalam fail tetapan Django anda. Biasanya, terdapat dua direktori, satu untuk fail statik tapak dan satu lagi untuk fail yang dimuat naik. Blok berkongsi struktur yang sama. Contoh di bawah mengandaikan bahawa fail statik anda wujud dalam direktori yang dipanggil statik Dalam akar projek anda.

lokasi / statik / autoindex on; alias/var/www/virtualenv/your-site/static/; tamat tempoh 1m; akses_log off; add_header Cache-Control "public"; proxy_ignore_headers "set-cookie"; 

Terdapat beberapa pilihan lain di sana yang membuat mungkir yang baik untuk caching.

Perkara seterusnya Lokasi Blok yang anda perlukan sebenarnya akan mengendalikan sambungan dengan Gunicorn. Seperti hulu Ia menetapkan satu lagi pemboleh ubah macam dan menceritakannya untuk melepaskan sambungan ke blok huluan 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: // your-gunicorn; 

Akhirnya, sediakan blok yang memberitahu Nginx untuk mencari fail statik untuk memadankan sebarang permintaan masuk. Sekiranya tidak ada, lulus ke Gunicorn.

lokasi / try_files $ uri @proxy_to_app; 

Itu sahaja yang anda perlukan. Anda boleh melakukan penalaan prestasi yang lebih banyak, tetapi tidak penting untuk mendapatkan Django berjalan. Simpan dan keluar.

Buat pautan antara fail baru anda dan Tapak yang dibolehkan folder. Keluarkan yang ada lalai fail di sana.

$ sudo rm/etc/nginx/sites-enabled/lalai $ sudo ln -s/etc/nginx/sites-available/your-site/etc/nginx/lites-enabled/

Mulakan semula nginx.

$ sudo systemctl mulakan semula nginx

Sekarang, anda sepatutnya dapat membuka penyemak imbas anda dan melihat halaman Django lalai.

Pemikiran penutupan

Baiklah, jadi ini adalah jalan panjang. Sama ada anda ingin melalui konfigurasi ini di pelayan pembangunan sepenuhnya terpulang kepada anda. Walau bagaimanapun, untuk pengeluaran, ia memberikan asas yang kukuh untuk menganjurkan projek Django anda. Walau bagaimanapun, perlu diingat, pasti ada pengoptimuman yang boleh anda lakukan dalam kedua -dua konfigurasi Django dan nginx.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Ubuntu 20.04: WordPress dengan pemasangan nginx
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Cara memeriksa status nginx di Ubuntu
  • Cara memasang nginx di linux
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Cara memeriksa versi nginx di linux
  • Ubuntu 20.04 Panduan
  • Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu