Устанавливаем совместимости Django + pip + dev
- # apt install python-django python-pip python-dev //установка приложений
- # python --version //установленная версия
- # pip --version //версия
- # pip install -U pip //Обновляем pip
- # 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=name. Большинство расширений ограничены комментарием, но строки без символа # представляют собой на данный момент активные расширения.
После того, как вы добавили эту строку, сохраните и закройте файл, затем перезагрузите ваш веб-сервер apache, чтобы изменения вступили в силу.
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 --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)
То делаем этосмотрим логи 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
- # cd /home/mysite //переходим в директория нашего проекта
- # nano mysite_uwsgi.ini //создаем файл настройки uwsgi
- внутри файла пишем, то что написано здесь и правим под свой проект
- # uwsgi --ini mysite_uwsgi.ini //запустим с настройками
Комментариев нет:
Отправить комментарий