Csomagok telepítése
Adatbázisok beállítása
Állítsa be a virtuális környezetet
Projekt feltöltés és konfigurálás
A Gunicorn konfigurálása
Nginx
Következtetés
Ez az oktatóanyag elmagyarázza, hogyan kell beállítani a Django-t Debian 8-ra (jessie). Megmutatom a Python 2 és 3, valamint az Nginx és a PostgreSQL használatát.
Minden, ami ebben az oktatóanyagban történik, rootként történik.
Csomagok telepítése
A kezdéshez telepítenünk kell néhány csomagot.
Python 2 esetén:
apt-get install python-pip python-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Python 3 esetén:
apt-get install python3-pip python3-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Adatbázisok beállítása
Először bejelentkezünk a felhasználóba postgres.
sudo -u postgres -s
Ezután létrehozunk egy új adatbázist. Az adatbázisnév bármilyen lehet ( dbnameitt használatos), de konzisztensnek kell lennie a telepítés többi részével.
createdb dbname
Hozzon létre egy felhasználót az új adatbázishoz. Ez ismét olyan lehet, amilyennek szeretnéd, de én ezt használtam dbuser. Ez egyúttal jelszó beállítását is kéri.
createuser -P dbuser
A felhasználónak hozzáférést kell adni az adatbázishoz. Csak ügyeljen arra, hogy a megfelelő adatbázisnevet és felhasználónevet használja.
psql
postgres=# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
postgres=# \q
Kilépés a root-ba.
exit
Engedélyezze és indítsa el a PostgreSQL-t:
systemctl enable postgresql
systemctl start postgresql
Állítsa be a virtuális környezetet
Ahelyett, hogy csak a globális python fájlokat használnánk, virtuális környezetet fogunk használni. Kezdjük azzal, hogy létrehozunk egy könyvtárat, amelyben mindent tárolunk.
mkdir -p /opt/project
Most mi teremtjük meg a környezetet. Ez más a python 2 és 3 felhasználóknál.
Python 2 esetén:
virtualenv . -p python
Python 3 esetén:
virtualenv . -p python3
Lépjen be a virtuális környezetbe.
source bin/activate
Telepítse a Django-t, a gunicorn-t és a psycopg2-t.
pip install django
pip install gunicorn
pip install psycopg2
Ha a Django egy adott verziójára van szüksége, módosítsa az install parancsot az alábbi formátumnak megfelelően. Ez a példa az 1.7.8-at telepíti.
pip install django==1.7.8
Ezzel egyelőre készen vagyunk, így deaktiválhatjuk a virtuális környezetünket.
deactivate
Projekt feltöltés és konfigurálás
Ekkor töltjük fel projektünket a szerverre, és ellenőrizzük, hogy minden beállítása helyes-e. Ehhez bármilyen módszert használhat. Az FTP, SFTP, git stb. mind ennek megfelelő módja. Ha git-t használ a projekt kódjának nyomon követésére, akkor egyszerűen klónozhatja a kiszolgálóra. Ez a git parancs klónozza a projektet a szerverre, és elhelyezi a /opt/project/project/.
git clone http://example.com:project.git
Nyissa meg a settings.pyfájlt bármely szövegböngészőben.
Először is, a hibakeresési módot ki kell kapcsolni. Keresse meg a DEBUG = Truesort, és váltson Trueerre: False. Ezek után győződjön meg arról, hogy ALLOWED_HOSTSbeállított valamilyen értéket.
ALLOWED_HOSTS = ['*']
Keresse meg a DATABASESszótárt, és így kell kinéznie:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'password you set',
'HOST': 'localhost',
'PORT': ''
}
}
Az utolsó lépés itt egy statikus gyökér beállítása. Helyezze a következőket közvetlenül alá STATIC_URL.
STATIC_ROOT = '/opt/project/static/'
Lépjen ki a fájlból, és hozza létre a statikus gyökérkönyvtárat.
mkdir -p /opt/project/static
Most állítsa át az adatbázist, hozzon létre egy szuperfelhasználót, és gyűjtse össze az összes statikus fájlt.
cd /opt/project/project
../bin/python manage.py makemigrations
../bin/python manage.py migrate
../bin/python manage.py createsuperuser
../bin/python manage.py collectstatic
A Gunicorn a WSGI szerver, amelyet használni fogunk. Mivel a Debian 8 a systemd-vel érkezik, kihasználjuk a systemd előnyeit a szerver indításához és leállításához.
Hozza létre a fájlt, /etc/systemd/system/django.serviceés adja hozzá a következő tartalmat.
[Unit]
Description=Django with Gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/project
ExecStart=/opt/project/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 project.wsgi
[Install]
WantedBy=multi-user.target
Engedélyezze és indítsa el az általunk létrehozott szolgáltatást.
systemctl enable django.service
systemctl start django.service
Nginx
Talán észrevette, hogy a gunicorn szervert a következőhöz kötöttük 127.0.0.1. Most egy módra van szükségünk, hogy elérjük a szerveren kívülről. Itt jön be az Nginx.
Hozza létre az új fájlt, /etc/nginx/sites-available/djangoés adja hozzá a következőket. Az domain.example.comalkatrész tetszőlegesen beállítható.
server {
listen 80;
server_name domain.example.com;
access_log off;
location /static/ {
alias /opt/project/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Hozzon létre egy szimbolikus hivatkozást a webhely engedélyezéséhez.
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
Engedélyezze és indítsa el az Nginxet.
systemctl enable nginx
systemctl start nginx
Következtetés
Gratulálunk, most már van egy működő Django webhely a Debian VPS-en.