Django быстрый старт

Установка

sudo apt install pip
pip install Django
python -m pip install --upgrade pip setuptools
python -m pip install django

Создаем проект

django-admin startproject roror
cd roror
python manage.py migrate
python manage.py createsuperuser

Запускаем встроенный web-сервер

python manage.py runserver 8000

Смотрим по ссылке: http://localhost:8000

Вход в админку

Создадим суперпользователя:

python manage.py createsuperuser

Входим в админку по ссылке http://127.0.0.1:8000/admin

Теперь откажемся от встроенного web-сервера (ctrl+c) в пользу apache.

sudo apt-get install python-pip apache2 libapache2-mod-wsgi
#или - для python3
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
sudo pip install virtualenv
cd ~/roror
virtualenv rororenv

Before we install our project's Python requirements, we need to activate the virtual environment. You can do that by typing:
source rororenv/bin/activate

pip install django

Статический контент

Добавим обработку статического содержимого в файле roror/settings.py:

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

Перестраиваем проект:

cd ~/roror
./manage.py makemigrations
./manage.py migrate
./manage.py collectstatic

Создаем конфигурацию сайта проекта /etc/apache2/sites-available/roror.ru.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
        DocumentRoot nigma/data/proj/django/roror

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

      Alias /static /nigma/data/proj/django/roror/static

        <Directory /nigma/data/proj/django/roror/static>
                Require all granted
        </Directory>
        <Directory /nigma/data/proj/django/roror/roror>

                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

    WSGIDaemonProcess roror python-path=/nigma/data/proj/django/roror python-home=/nigma/data/proj/django/roror/rororenv
    WSGIProcessGroup roror
    WSGIScriptAlias / //nigma/data/proj/django/roror/roror/wsgi.py

</VirtualHost>

Поправляем права на базу:

chmod 664 ~/roror/db.sqlite3
sudo chown :www-data /nigma/data/proj/django/roror

Теперь надо добавить доступные хосты в файле /nigma/data/proj/django/roror/roror/settings.py

#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['127.0.0.1','172.27.117.97','roror.ru']

СУБД

Добавить СУБД PostgreSQL:

sudo apt install postgresql postgresql-contrib

Правим файл roror/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'roror',
        'USER': 'roror_usr',
        'PASSWORD': 'mysecretpass',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

Создаем БД, пользователя и назначаем права.

psql
CREATE DATABASE roror;
CREATE USER roror_usr WITH password 'mysecterpass';
GRANT ALL ON DATABASE roror TO roror_usr;
ALTER DATABASE roror OWNER TO roror_usr;

Меняем локальную авторизацию на нашу базу по паролю.

В файле /var/lib/postgresql/9.5/main/pg_hba.conf

#local   all             all                                     peer
local   roror           roror_usr                               md5

Ставим модуль PIP для поддержки СУБД:

sudo apt install postgresql-server-dev-9.5
sudo pip install psycopg2
sudo pip install psycopg2-binary

Создаем структуру таблиц на основе модели:

./manage.py inspectdb
./manage.py showmigrations
./manage.py migrate
./manage.py migrate blog 0001