Giter Site home page Giter Site logo

deploy-django-project-on-linux-server's Introduction

Django loyihani linux serverga qo'yish


  1. Linux serverda loyihani Github dan clone qilib olamiz
git clone https://github.com/

  1. Virtual muhit yaratib olish
python -m venv venv

  1. virtual muhitni faollashtirish
venv\Scripts\activate

  1. Kerakli kutubxonalarni requirements.txt faylidan o'qib, muhitga o'rnatish
pip install -r requirements.txt 

  1. Loyiha to'g'ri ishlashi uchun va admin panelga kirish imkoniyati bo'lishi uchun Django tomonidan tayyorlab qo'yilgan migratsiyalarni yaratib olamiz
python manage.py makemigrations
python manage.py migrate

  1. superuser yaratib olamiz (admin panelga kirish imkoniyati bo'lishi uchun)
python manage.py createsuperuser

  1. Django loyihani ishlatib ko'rish, agar quyidagicha rasm ko'rinsa, unda hammasi joyida bo'ladi
python manage.py runserver

  1. Serverni CTRL + C bilan to'xtatamiz

  1. root yo'nalish bo'yicha o'tib olamiz
cd /root/

  1. Nginx web serverini o'rnatib olamiz
sudo apt update
sudo apt install python3-venv
sudo apt install nginx -y

  1. Virtual muhitni o'chirib olamiz
deactivate

  1. 8000 portga ruxsat beramiz (linux server loyihamizni 8000 chi portda ishlatish imkoniga ega bo'lishi uchun)
sudo ufw allow 8000

  1. gunicorn faylni yaratamiz (Django loyihani run qilib beradigan asosiy fayl)
sudo nano /etc/systemd/system/gunicorn.socket

  1. gunicorn fayli ichiga quiydagilarni yozamiz
[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

  1. Yuqorida yaratgan gunicorn faylini ishga tushiradigan service fayl yaratib olamiz
sudo nano /etc/systemd/system/gunicorn.service

  1. service fayl ichiga quyidagilarni yozamiz
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=<USERNAME>
Group=www-data
WorkingDirectory=/<USERNAME>/<PROJECT_FOLDER>
ExecStart=/<USERNAME>/<PROJECT_FOLDER_NAME>/venv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          <PROJECT_ROOT_FOLDER>.wsgi:application

[Install]
WantedBy=multi-user.target

  1. gunicorn faylini ishlatish uchun buyruq beramiz (bu bizga Django loyihamizni avtomatik ishlatib (run) qilib beradi)
sudo systemctl start gunicorn.socket

  1. Linux server har sfar o'chib yonganida yuqoridagi komanda avtomatik ishga tushishi uchun quyidagi komandani teramiz
sudo systemctl enable gunicorn.socket

  1. Kiritilgan o'zgarishlar ishga tushishi uchun quyidagi komandani teramiz
sudo systemctl daemon-reload

  1. gunicorn faylini ham bir marta restart qilib yuboramiz
sudo systemctl restart gunicorn

  1. Linux serverga kelgan so'rovlar avtomatik Django loyihaga yuborilishi uchun bu uchun Nginx fayl yozamiz va qaysi manzillardan so'rov kelsa loyihani ishlatib berish kerakligi aytamiz
sudo nano /etc/nginx/sites-available/PROJECT_FOLDER

  1. Yuqorida yaratib olgan faylimizi ichini quyidagilar bilan to'ldiramiz
server {
    listen 80;
    server_name <SERVER_IP_ADDRESS>;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {

        <USERNAME> /<PROJECT_FOLDER>/static;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

  1. Hozirgi yozgan o'zgarishlarimiz ishga tushishi uchun nginx fayliga restart berib yuboramiz
sudo systemctl restart nginx

  1. Nginx uchun barcha ruxsatlarni beramiz
sudo ufw allow 'Nginx Full'

  1. gunicorn faylini yana bir marta restart qilib yuboramiz
sudo systemctl restart gunicorn

Agar loyihaning har qanday fayliga biron kichik o'zgartirish kiritilsa ham, home.html, views.py, urls.py, ... Har safar quyidagi buruqni ishlatib yuborish kerak. Ya'ni 25-qadamdagi buyruqni ☝️

sudo systemctl restart gunicorn

Endi esa linux server ip manzili brauzerda tergan holda ishlab turgan Django loyihamizni natijasini

online ko'rishimiz mumkin. E'tiboringiz uchun raxmat 🙂

Django server activa state

deploy-django-project-on-linux-server's People

Contributors

ulugbek101 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.