Cara menjadi tuan rumah Django dengan nginx di Ubuntu 18.04 Bionic Beaver Linux
- 3349
- 748
- Jerome Quitzon
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
- « Cara menggunakan persekitaran boneka di Linux untuk mengemas kini ejen dengan selamat
- Cara Memasang Pelayan Couchbase di Ubuntu 18.04 Bionic Beaver Linux »