GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Django dengan PostgreSQL dan Nginx di Ubuntu 16.04

Django adalah kerangka kerja web sumber terbuka gratis berdasarkan Python. Ini adalah kerangka kerja web python tingkat tinggi dengan pola arsitektur MVT (Model-View-Template). Django dikelola oleh Django Software Foundation (DSF). Kerangka kerja web Django cepat, ini membantu pengembang untuk membangun aplikasi dengan cepat (RAD).

Dalam tutorial ini, saya akan menunjukkan kepada Anda cara memasang kerangka kerja web Django dan mengonfigurasinya untuk menggunakan database PostgreSQL untuk pengembangan. Kami akan menjalankan Nginx sebagai proxy terbalik untuk kerangka web Django untuk alasan kecepatan dan keamanan. Django akan berjalan di bawah server HTTP WSGI python 'Gunicorn', kami akan mengelola dan mengontrol 'Gunicorn' dengan 'Supervisor' sebagai sistem kontrol proses.

Prasyarat

  • Ubuntu 16.04
  • Keistimewaan Root

Langkah 1 - Instal Django, Virtualenv, dan Gunicorn

Saya akan menggunakan python3 sebagai versi Python default untuk sistem. Kami akan menginstal python3 dan pip3 di Ubuntu 16.04. Pip3 adalah sistem manajemen paket untuk menginstal dan mengelola paket perangkat lunak yang ditulis dengan python.

Hubungkan ke server Anda sebagai pengguna root di terminal atau dengan SSH (seperti yang saya lakukan di sini) dan perbarui repositori Ubuntu:

ssh [email protected]
sudo apt-get update

Instal python3 dan pip3 dengan perintah apt ini:

sudo apt-get install python3-pip python3-dev

Buat symlink baru untuk perintah pip3 agar dapat menggunakannya sebagai "pip" alih-alih "pip3" dan tingkatkan versinya:

ln -s /usr/bin/pip3 /usr/bin/pip
pip install --upgrade pip

Selanjutnya, instal paket python yang diperlukan dengan perintah pip. Saya akan menginstal Django, Virtualenv, dan Gunicorn di sini:

pip install django virtualenv gunicorn

Langkah 2 - Instal dan Konfigurasi PostgreSQL

Kami akan menggunakan PostgreSQL sebagai database untuk proyek Django kami. Instal PostgreSQL dengan perintah apt ini.

sudo apt-get install postgresql postgresql-contrib libpq-dev

Ketika instalasi selesai, instal paket python baru bernama 'psycopg2' dengan pip. Ini adalah adaptor database python-postgreSQL.

pip install psycopg2

Sekarang akses pengguna postgres dan buka shell PostgreSQL dengan perintah psql:

su - postgres
psql

Tetapkan kata sandi baru untuk pengguna postgres dengan perintah di bawah ini:

\password postgres
Enter new password:

Selanjutnya, buat database baru dan pengguna/peran baru untuk proyek django di PostgreSQL. Saya akan membuat database baru bernama 'Django_db' dengan pengguna/peran 'python_dev'. Ketik perintah di bawah ini pada shell PostgreSQL.

CREATE USER python_dev WITH PASSWORD 'aqwe123';
CREATE DATABASE django_db OWNER python_dev;

Lihat daftar dan peran database:

\list

Langkah 3 - Mulai Proyek Django Baru

Mulai proyek Django pertama dengan nama 'hello_django'. Kami tidak akan menggunakan hak akses root untuk proyek ini, saya akan menggunakan 'natsume' pengguna Linux biasa untuk proyek tersebut. Jangan ragu untuk menggunakan nama pengguna lain yang menjelaskan proyek Anda.

Buat Pengguna Baru

Buat pengguna Linux baru dengan perintah di bawah ini:

useradd -m -s /bin/bash natsume
passwd natsume

-m =Secara otomatis membuat direktori home.
-s =Menentukan shell default untuk pengguna.

Buat Virtualenv Baru dan Instal Django

Masuk ke pengguna natsume:

su - natsume

Buat lingkungan virtual baru di direktori 'myproject' untuk proyek Django kami dengan python3 sebagai versi python default.

mkdir myproject
virtualenv --python=python3 myproject/

Masuk ke direktori 'myproject' dan aktifkan virtualenv.

cd myproject/
source bin/activate

Selanjutnya, instal Django, gunicorn, dan psycopg2 dengan perintah pip di lingkungan itu.

pip install django gunicorn psycopg2

Mulai Proyek Baru dengan PostgreSQL

Mulai proyek Django 'hello_django' dengan perintah django-admin di bawah ini:

django-admin startproject hello_django

Ini akan membuat direktori baru 'hello_django', buka direktori itu dan edit file konfigurasi 'setting.py' dengan vim.

cd hello_django/
vim hello_django/settings.py

Ubah pengaturan database pada baris 76 dengan konfigurasi di bawah ini:

        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',
        'USER': 'python_dev',
        'PASSWORD': 'aqwe123',
        'HOST': 'localhost',
        'PORT': '',

Di akhir file, konfigurasikan url statis dengan menambahkan baris konfigurasi STATIC_ROOT di bawah ini:

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Simpan dan keluar.

Selanjutnya, migrasikan database ke database postgreSQL kami dan buat pengguna admin baru. Kemudian kumpulkan semua file statis ke direktori statis yang secara otomatis dibuat ketika kita menjalankan perintah.

python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

Pastikan tidak ada kesalahan dan lakukan uji coba server proyek django dengan perintah runserver.

python manage.py runserver 0.0.0.0:8080

Buka browser web Anda dan kunjungi alamat IP server pada port 8080, dalam kasus saya http://192.168.1.115:8080. Anda akan melihat halaman default Django.

Tekan Ctrl + c untuk keluar.

Langkah 4 - Konfigurasikan Proyek Django dengan Gunicorn

Gunicorn atau Green Unicorn adalah server HTTP WSGI python bercabang dari proyek Ruby Unicorn. Ini mendukung berbagai kerangka kerja web dan mudah dikonfigurasi.

Buka direktori 'myproject' dan aktifkan lingkungan virtual untuk direktori home pengguna natsume.

cd ~/myproject/
source bin/activate

Buat file baru 'gunicorn_start' di dalam direktori bin dengan vim:

vim bin/gunicorn_start

Tempelkan konfigurasi di bawah ini:

#!/bin/bash

# Project Name
NAME="hello_django"                       

# Django Project Directory
DJANGODIR=/home/natsume/myproject/hello_django          

# Run gunicorn on the socket file
SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

# Gunicorn running as user and group
USER=natsume
GROUP=natsume

# Workers
NUM_WORKERS=3

#Module Setting
#replace hello_django with your project name
DJANGO_SETTINGS_MODULE=hello_django.settings
DJANGO_WSGI_MODULE=hello_django.wsgi

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-

Simpan dan keluar.

Jadikan file tersebut dapat dieksekusi dengan perintah chmod.

chmod u+x bin/gunicorn_start

Langkah 5 - Instal dan Konfigurasi Supervisor

Supervisor adalah sistem kontrol proses untuk sistem operasi Linux. Ini memungkinkan Anda untuk mengonfigurasi, memantau, dan mengontrol sejumlah proses di Linux. Supervisor berbasis python, kita dapat menginstalnya dari repositori python pypi dengan perintah pip atau menginstalnya dari repositori ubuntu dengan apt.

Saya akan menginstal supervisor dengan perintah apt ini:

sudo apt-get install supervisor

Supervisor memiliki file konfigurasi default di direktori '/ect/supervisor/'. Masuk ke direktori itu dan buat konfigurasi baru untuk proyek Django kami sehingga kami dapat mengontrolnya dengan supervisor.

cd /etc/supervisor/conf.d/
vim hello-django.conf

Tempel konfigurasi Supervisor di bawah ini:

[program:hello_django]
command = sh /home/natsume/myproject/bin/gunicorn_start
user = natsume
stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Simpan dan keluar.

Selanjutnya, login ke pengguna natsume dan buat beberapa direktori yang diperlukan untuk file soket gunicorn dan file log supervisor.

su - natsume

# Directory for gunicorn sock file
mkdir -p myproject/hello_django/run/

# Directory and file for supervisor log files
mkdir -p myproject/logs/
touch myproject/logs/gunicorn_supervisor.log

Kembali ke pengguna root dengan "keluar" dan mulai Supervisor:

exit
systemctl start supervisor

Periksa status dan log proses:

supervisorctl
tail -f hello_django

Langkah 6 - Instal dan Konfigurasi Nginx untuk Proyek Django

Pada langkah ini, kita akan menginstal Nginx dan mengonfigurasinya sebagai proxy terbalik untuk proyek Django kita.

Instal Nginx dari repositori Ubuntu:

sudo apt-get install nginx

Buka direktori konfigurasi virtual host Nginx dan buat file host virtual hello_django:

cd /etc/nginx/sites-available/
vim hello_django

Tempelkan konfigurasi di bawah ini:

# Django running with Gunicorn Sock file
upstream hello_django_project {
    server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name www.django-nginx.com;

    client_max_body_size 4G;

    access_log /home/natsume/myproject/logs/nginx-access.log;
    error_log /home/natsume/myproject/logs/nginx-error.log;

    location /static/ {
        alias   /home/natsume/myproject/hello_django/static/;
    }

    location /media/ {
        alias   /home/natsume/myproject/hello_django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

    # Try to serve static files from nginx, no point in making an
    # *application* server like Unicorn/Rainbows! serve static files.
    if (!-f $request_filename) {
        proxy_pass http://hello_django_project;
        break;
        }
   

# Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/natsume/myproject/hello_django/static/;
        }
    }
}

Simpan dan keluar.

Aktifkan virtual host dan uji konfigurasi Nginx.

ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
nginx -t

Pastikan tidak ada kesalahan, lalu restart Nginx:

systemctl restart nginx

Langkah 7 - Menguji Django

Pada langkah 5, kami telah membuat host virtual untuk proyek Django kami dengan nama domain 'www.django-nginx.com'. Buka browser Anda dan kunjungi nama domain yang telah Anda pilih untuk proyek Anda.

www.django-nginx.com/admin/

Dan Anda akan diarahkan ke dasbor admin Django.

Memeriksa apakah semua layanan yang telah kami siapkan berjalan dengan perintah di bawah ini:

netstat -pl

Anda akan melihat file pid, port, dan sock yang digunakan oleh semua layanan.

Instalasi dan konfigurasi Django dengan PostgreSQL dan Nginx di Ubuntu 16.04 telah berhasil.

  • https://www.djangoproject.com/
  • https://www.nginx.com/
  • http://gunicorn.org/
  • http://supervisord.org/

Ubuntu
  1. Cara Menginstal Mattermost dengan PostgreSQL dan Nginx di Ubuntu 16.04

  2. Cara Menginstal Postgresql dan phpPgAdmin di Ubuntu 15.04

  3. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  1. Cara Menginstal MediaWiki dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal Magento 2 dengan Nginx dan Letsencrypt di Ubuntu 18.04

  3. Cara Menginstal Gitlab dengan PostgreSQL dan Nginx di Ubuntu 15.04

  1. Cara Menginstal Magento dengan Nginx di Ubuntu 15.10

  2. Cara Menginstal Drupal 8 dengan Nginx, PHP-FPM dan SSL di Ubuntu 15.10

  3. Cara Menginstal Mailpile dengan Nginx di Ubuntu 15.10