Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sebarkan django ke pengeluaran

Sebarkan django ke pengeluaran

Barbara Streisand
Barbara Streisandasal
2024-09-25 06:15:37982semak imbas

Saya baru-baru ini menggunakan aplikasi django saya sendiri untuk pengeluaran. Tapak web ini dipanggil videiro.com dan dibangunkan dalam django + HTML/CSS/JS + Tailwind.

Persediaan

Saya menggunakan pelayan debian 12 yang akan mendedahkan aplikasi saya melalui terowong cloudflare. Semua fail statik disampaikan melalui nginx dan projek Django sedang dijalankan oleh gunicorn.

Dalam panduan ini saya akan menunjukkan kepada anda cara saya menyediakannya.

Menyediakan projek Django

Perkara pertama yang anda perlu lakukan ialah membuka tetapan.py dan menukar yang berikut

Debug = False
ALLOWED_HOSTS = ['yourdomain.tld']
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = [
    'yourdomain.tld',
]

Anda juga harus menukar SECRET_KEY kepada rentetan rawak yang panjang, yang anda tidak boleh berkongsi dengan sesiapa pun.

Selepas itu buat fail baharu bernama .gitignore dan tampal yang berikut:

db.sqlite3
*.pyc

Ini akan memastikan bahawa pangkalan data tidak dimuat naik ke pelayan kami dan tiada fail pyc sama ada.

Kini anda boleh memuat naik projek anda ke repositori github baharu (atau repositori gitea). Jika anda tidak mahu semua orang mempunyai akses kepada kod sumber anda, pastikan anda menetapkan repositori sebagai peribadi.

Jika anda ingin memastikan bahawa kod sumber anda kekal peribadi, saya syorkan anda menyediakan contoh gitea yang dihoskan sendiri, baca contoh gitea yang dihoskan sendiri - yang dihoskan sendiri, alternatif github ringan, untuk mengetahui cara melakukannya.

git init
git branch -M main
git add .
git commit -m "initial commit"
git remote add origin https://...
git push -u origin main

Sekarang anda telah kami lakukan bahawa anda harus log masuk ke pelayan anda

Persediaan pelayan

Sebelum mengkonfigurasi apa-apa, pastikan anda tidak membenarkan sebarang log masuk ssh dengan kata laluan. Ikuti Securing ssh dengan pengesahan Berasaskan Kunci untuk melindungi pelayan anda daripada jenis serangan tersebut.

Log masuk ke pelayan anda

ssh user@server.ip

Pastikan pakej anda mengikut data

sudo apt update && sudo apt upgrade

Sekarang pasang python, pip, git dan nginx

sudo apt install python3 python3-pip git nginx

Sekarang klon projek anda ke dalam direktori rumah anda.

git clone https://...
cd my-project

Setelah anda memasang yang berikut:

pip install django django-crispy-forms whitenoise

Sekarang cuba jalankan projek:

python3 manage.py runserver

jika anda mendapat ralat bahawa pakej tiada, pasang dan jalankan semula.

Mengkonfigurasi gunicorn

Sekarang kami akan menyediakan gunicorn

Mula-mula pasangnya

pip install gunicorn

Sekarang buat fail baharu yang dipanggil gunicorn.service dengan editor teks kegemaran anda:

sudo vim /etc/systemd/system/gunicorn.service

Dan tampal yang berikut:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=YOURUSER
Group=www-data
WorkingDirectory=/home/YOURUSER/PROJECT
ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application

[Install]
WantedBy=multi-user.target

Tukar YOURUSER kepada pengguna anda.

Untuk mencari laluan ke larian gunicorn:

which gunicorn

Dan nama projek anda ialah nama folder di dalam projek anda yang mengandungi fail settings.py.

Sekarang jalankan arahan berikut untuk memulakan dan mendayakan gunicorn (mulakan semasa but)

sudo systemctl daemon-reload
sudo systemctl start gunicorn.service
sudo systemctl enable gunicorn.service

Sekarang jika anda menuju ke 127.0.0.1:8000 anda sepatutnya melihat projek anda berjalan.

Tetapi belum selesai lagi

Menyediakan nginx

Kini kami perlu menyampaikan kandungan statik kami melalui nginx.

Mula-mula buat fail konfigurasi nginx fail baharu dengan editor teks kegemaran anda:

sudo vim /etc/nginx/sites-available/PROJECT

Tukar PROJEK kepada apa sahaja yang anda mahu

Sekarang tampal kandungan berikut:

server {
    listen 80;
    server_name YOURDOMAIN;

    location /static/ {
    alias /var/www/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Hanya tukar YOURDOMAIN kepada domain tempat ini akan dihoskan.

Buat pautan simbolik untuk mendayakan tapak web anda:

sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/

Mulakan dan dayakan nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Sediakan fail statik

Perkara pertama yang anda perlu lakukan ialah cd ke dalam projek (django) anda

cd project

Sekarang jalankan arahan berikut:

python3 manage.py collectstatic

Ini akan mencipta folder baharu yang dipanggil staticfiles

Sekarang untuk menyediakan fail statik kami mempunyai dua pilihan:

  1. Tukar pengguna dalam /etc/nginx/nginx.conf kepada pengguna anda (kurang selamat)
  2. Salin fail statik ke /var/www/ (lebih selamat)

Saya akan melakukan pilihan ke-2:

Mula-mula buat fail baharu yang dipanggil staticfiles dalam /var/www

sudo mkdir -p /var/www/staticfiles

Sekarang salin semua fail statik daripada projek anda di sana:

sudo cp staticfiles/* /var/www/staticfiles

Sekarang cd ke /var/www

cd /var/www

Tukar pemilikan semua fail

sudo chown www-data:www-data staticfiles
sudo chown www-data:www-data staticfiles/*

Mulakan semula perkhidmatan nginx:

sudo systemctl restart nginx

Sekarang jika anda menuju ke:

127.0.0.1

Anda sepatutnya melihat tapak web anda berjalan dengan semua fail statik disediakan!

Mendedahkan melalui terowong cloudflare

Sekarang untuk menjadikan tapak web anda boleh diakses secara terbuka.

Untuk melakukan ini, anda memerlukan akaun cloudflare dan domain yang ditunjukkan kepada cloudflare.

Pertama pergi ke Papan Pemuka Zero Trust

Di bawah Rangkaian klik pada Terowong dan kemudian Buat terowong

Setelah dibuat, anda perlu Pasang dan jalankan penyambung, ikut arahan pada halaman untuk persediaan khusus anda.

Selepas penyambung berjalan, anda harus mengklik pada tab Nama Hos Awam dan Tambah nama hos awam.

Sekarang anda sepatutnya melihat sesuatu seperti ini: Deploy django to production

私が持っている情報を入力してください。サービス タイプは HTTP、URL は 127.0.0.1:80 または localhost:80

である必要があります。

指定したドメインに移動すると、アプリが起動して実行されていることが確認できます。

おめでとうございます!

この投稿を気に入っていただき、私の (ほとんど無給の) 仕事をサポートしたい場合は、ここから寄付していただけます。

無料のニュースレターに参加してください!

ここから参加してください

Atas ialah kandungan terperinci Sebarkan django ke pengeluaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:AI Runner v.ev18Artikel seterusnya:AI Runner v.ev18