вторник, 11 октября 2016 г.

Установка cms Django + nginx + uWSGI + mongodb + pip на DEBIAN JESSIE


Устанавливаем совместимости Django + pip + dev
  1. # apt install python-django python-pip python-dev //установка приложений
  2. # python --version //установленная версия
  3. # pip --version    //версия
  4. # pip install -U pip //Обновляем pip 

Устанавливаем nginx:

  • # apt install nginx //установка
  • # service nginx stop | start | reload | restart | status | configtest | rotate | upgrade  //действия
  • # nano etc/nginx/sites-available/default //конфигурационный файл nginx
Устанавливаем MONGODB



  • //Импортируем публичный ключ.
  • # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
  • Подключаем репозиторий
  • # echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list
  • Обновляем информацию
  • # apt update
  • # apt install mongodb-10gen //устанавливаем mongodb
  • # apt install php-pear php5-dev php5-cli//установка php драйверов для mongo
  • # pecl install mongo   //установка драйверов
  • # service mongodb start //стартуем приложение баз данных
  • # mongod --version  //смотрим версию mongodb
  • # nano /etc/mongodb //конфигурационный файл
найдите ваш файл php.ini, и добавьте туда следующий отрывок кода:

extension=mongo.so

Вы должны заметить похожий блок кода где-то в середине файла, который имеет несколько других строк с повторяющимся extension=name. Большинство расширений ограничены комментарием, но строки без символа # представляют собой на данный момент активные расширения.

После того, как вы добавили эту строку, сохраните и закройте файл, затем перезагрузите ваш веб-сервер apache, чтобы изменения вступили в силу.

Устанавливаем изолированное окружение python
  • # apt install virtualenv
Устанавливаем DJANGO
  • # pip install django  
Переходим в домашнюю директорию (там где у нас буду храниться проекты)
  • # cd home
  • # virtualenv uwsgi-tutorial //создаем учебник uwsgi
  • # cd uwsgi-tutorial //переходим в созданную нами учебник
  • # source bin/activate  //активируем учебник в окружении
Инсталлируем в домашней директории(# cd home/) проект mysite
  • # django-admin.py startproject mysite 
  • # cd mysite
  • # pip install uwsgi //устанавливаем  uWSGI - сайт настройки
Создаем тестовый файл(в home/mysite/) и убеждаемся что uWSGI работает
  • nano test.py - вставляем следующий текст: 
    • def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html')])
          return [b"Hello World"] # python3
          #return ["Hello World"] # python2
Запускаем uWSGI

  • # uwsgi --http :8000 --wsgi-file test.py  //сервер запущен: localhost:8000  (Hello World)
  • web client < - >uWSGI < - > Python
После того как мы убедились что uWSGI работает, мы запустим наш проект в home/mysite/
и увидим что наш DJANGO работает.
Соберем наш проект:
  • # python manage.py migrate      //собираем проект
  • # python manage.py runserver 0.0.0.0:8000 //запускаем сервер нашего проекта manage.py
Мы проверили, что отдельные файлы проекта запускаются через django и  uWSGI, теперь запустим сайт проект собранный нами.
  • # uwsgi --http :8000 --module mysite.wsgi
Конфигурируем наш сайт-проект для работы через nginx
  • # cd etc/nginx/     //переходим в папку nginx
  • # cp uwsgi_params /home/mysite/    //копируем файл uwsgi_params в директорию нашего проекта 
  • # cd home/mysite/          //переходим в директорию нашего проекта 
  • # nano mysite_nginx.conf  //создаем конфигурационный файл для связки с nginx
  • с текстом отсюда  и нашими параметрами
  • # ln -s ~/home/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
Указываем статические файлы:
Перед запуском проекта на nginx необходимо указать django статические файлы в настройках нашего проекта в home/mysite/mysite/settings.py добавим:
  • # nano settings.py
    • вставим этот текст:   STATIC_ROOT = os.path.join(BASE_DIR, "static/")
  • # python manage.py collectstatic
Тестируем наши настройки nginx
  • # service nginx restart  //перезапускаем nginx для применения настроек
Протестируем медиа директорию mkdir /home/mysite/media
  • закинем в эту папку media  image.jpg
  • и в браузере перейдем по ссылке http://адрес_сайта:8000/media/image.jpg
  • Убеждаемся, что картинки видна и идем дальше

Настроем чтобы наш сайт работал через сокет,
  • открываем наш конфигурацинный файл mysite_nginx.com
  • и делаем так:
  • server unix:///home/mysite/mysite.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
  • # service nginx restart       //перезапускаем nginx
  • # uwsgi --socket mysite.sock --wsgi-file test.py
  • открываем адрес нашего проекта в браузере  http://адрес_сайта:8000
ЕСЛИ НЕ РАБОТАЕТ
смотрим логи nginx по адресу /var/log/nginx/error.log
если там что-то типа connect() to unix:///home/mysite/mysite.sock failed (13: Permission denied)
То делаем это

  • # uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 (не очень хорошо так делать)
  • # uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=664 (так будет лучше)
можно добавить пользователя под кем мы работаем в группу nginx (скорее всего это www-data)

После того как мы убедились что тестовый файл(test.py) у нас запускается мы запускаем наш проект mysite.
  • # uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666
Создадим настройки для запуска uWSGI через ini файл

  • # cd /home/mysite  //переходим в директория нашего проекта
  • # nano mysite_uwsgi.ini           //создаем файл настройки uwsgi
  • внутри файла пишем, то что написано здесь и правим под свой проект
  • # uwsgi --ini mysite_uwsgi.ini   //запустим с настройками

Комментариев нет:

Отправить комментарий