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.
Tautan
- https://www.djangoproject.com/
- https://www.nginx.com/
- http://gunicorn.org/
- http://supervisord.org/