Да как уже запустить этот ... Django?

Задача: Поставить проект на VPS от Reg.ru на базе CentOS:

Что делаю:

P.s. Предварительно в панели хостера связываю доменное имя и VPS через DNSadmin.
P.s.s. Ряд шагов по установке компонентов упущено, так как они имеют отношение к работе необходимых элементов проекта, а не к работе на VPS.

1) Создаю пользователя с sudo правами. - bakotiinii
2) Задаю набор команд:

sudo yum install epel-release
sudo yum install python-pip
sudo yum install wget
sudo pip install virtualenv virtualenvwrapper

echo "export WORKON_HOME=~/Env" >> ~/.bashrc #Все окружения буду сохранять в папку Env
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc


3) Ставлю в корневую папку Python 3.4.3

wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
tar -xvf Python-3.4.3.tar.xz
cd Python-3.4.3
./configure
make
sudo make install


4) Создаю окружение с питоном 3,4,3

mkvirtualenv -p /usr/local/bin/python3.4 django #Окружение имеет имя django.

5) Создаю проект apifolder, копирую его через FTP с PyCharm.

6) Ставлю базу данных PostgreSQL по данному туториулу

7) Прописываем в settings.py нашей джанги:

DEBUG = False

ALLOWED_HOSTS = [
    '*',   
    ]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db',
        'USER': 'dbuser',
        'PASSWORD': 'dbpassword',
        'HOST': 'localhost',
        'PORT': '',
    }
}


Проверяем все это дело через наше окружение:

python manage.py makemigrations - работает.
python manage.py migration - работает.
python manage.py runsever 0.0.0.0:8080 - работает.
python manage.py collectstatic - не работает, так как еще нет сервера ngix.

8) Ставим uWSGI

sudo yum install python-devel gcc

sudo pip install uwsgi


9) Создаем конфиг:

sudo mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites

sudo nano apifolder.ini

################


[uwsgi]
project = apifolder # имя проекта
username = bakotiinii # пользователь
base = /home/%(username)

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

uid = %(username)
socket = /run/uwsgi/%(project).sock
chown-socket = %(username):nginx
chmod-socket = 660
vacuum = true


10) Создаем автозапуск:

sudo nano /etc/systemd/system/uwsgi.service

[Unit]
Description=uWSGI Emperor service

[Service]
ExecStartPre=/usr/bin/bash -c 'mkdir -p /run/uwsgi; chown bakotiinii:nginx /run/uwsgi'
ExecStart=/usr/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target


11) Конфиг Nginx

sudo yum install nginx

sudo nano /etc/nginx/nginx.conf


server {
    listen 80;
    server_name domen.ru www.domen.ru;

    location = favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/bakotiinii/apifolder;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/run/uwsgi/apifolder.sock;
    }
}


12) Делаем запуск:

sudo nginx -t

sudo usermod -a -G bakotiinii nginx
chmod 710 /home/bakotiinii

sudo systemctl start nginx
sudo systemctl start uwsgi


Что в итоге:

Доменное имя отдает, что там ничего нет.

А если зайти напрямую по IP, то появляется вот такое окно nginx: take.ms/5l0Gr

___________________________

Логи:

1)
crit] 7288#0: *52 connect() to unix:/run/uwsgi/apifolder.sock failed (2: No such file or directory) while connecting to upstream


2)

bakot uwsgi: uwsgi socket 0 bound to UNIX address /run/uwsgi/apifolder.sock fd 3
bakot uwsgi: setuid() to 1000
bakot uwsgi: Python version: 2.7.5 (default, Nov 20 2015, 02:00:19)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
bakot uwsgi: Set PythonHome to /home/bakotiinii/Env/apifolder
bakot uwsgi: ImportError: No module named site
bakot uwsgi: VACUUM: unix socket /run/uwsgi/apifolder.sock removed.
bakot uwsgi: [emperor] unrecognized vassal event on fd 7
bakot uwsgi: [emperor] unrecognized vassal event on fd 5
bakot uwsgi: Fri Feb 12 02:34:01 2016 - [emperor] removed uwsgi instance apifolder.ini
ImportError: No module named site


3) download?id=8FQvqr6xIBEd8mqNsCKVpuBb9AIx

Там действительно нет такой папки, так как в этой папке находится лишь виртуальное окружение, а сам проект выше:

download?id=Z4K5EHR5gdThMkJOj5uYEvJcC1H0

Виртуальное окружение имеет версию питона 3,4, сам сервер работает под 2,7. Nginx итд - я ставил глобально.
  • Вопрос задан
  • 3083 просмотра
Пригласить эксперта
Ответы на вопрос 3
AMar4enko
@AMar4enko
Включите логи энджиникс с флагом debug и смотрите, что в них происходит. Факап где-то на его уровне, может легко проблема с правами быть
Ответ написан
saintbyte
@saintbyte
Django developer
Предлагаю начать с логов nginx
Ответ написан
d7p4x
@d7p4x
Судя по скриншоту вирутальный домен смотрит не туда, я не шарю в джанго, но может надо указать для nginx в конфиге директорию где брать файлики? Для /static/ у вас же указан root. А у домена должна быть А запись с IP этого сервера.

root /var/www/public;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы