Установил Kubuntu 14.04 , Django, Apache+Wsgi настроить не получается. Устал гуглить.

запускаю вроде бы нормально Apache2.

sudo /etc/init.d/apache2 start
[sudo] password for alexandr:
* Starting web server apache2

restart выдает ошибку.

sudo /etc/init.d/apache2 restart
* Restarting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
[ OK ]

Где нужно поменять имя сервера не соображу.

скачал mod_wsgi-4.3.0.tar.gz не соображу как его установить. Распаковал а запустить setup.py не могу.

Установил с терминала.

После того как вы установите и активируете mod_wsgi отредактируйте файл httpd.conf веб-сервера Apache, изменив его следующим образом. Если вы используете Apache версии ниже чем 2.4, замените Require all granted` на Allow from all.

Как его активировать?

Установлены Python 2.7 и 3.4

+1
MacLeod - 18 Сентябрь, 2014 - 02:36
Изображение пользователя MacLeod.

restart выдает ошибку
Это не ошибка, это предупреждение. Апач перед запуском проверяет доступность имен, описанных в своих виртуальных хостах в DNS или, хотя бы, в /etc/hosts.


Как обычно, посоветую не использовать Апач с его тормозным подходом и модулями, а пока вы не забили себе голову его конфигами, посоветую обратить внимание на использование специализированного бэкэнда (uWSGI) и Nginx в качестве фронтэнда.
http://kubuntu.ru/node/12014 - моя статья для начинающих по nginx (только вместо php-fpm у вас будет uWSGI), созданию виртуальных хостов.
И http://habrahabr.ru/post/226419/ тут показано, как легко поднять бэкэнд для Django на uWSGI и использовать в качестве апстрима в Nginx, вплоть до организации продакшена.

0
_alexandr_ - 18 Сентябрь, 2014 - 18:01

Нужно некоторое время что бы понять что в самом деле лучше. Возможно просто Wordpress?! А может упереться в Python без всяких добавок? Как Вы считаете? Python без примочек лучше? Все таки основная задача освоить Python и уметь создавать не только сайты. В тоже время купил лицензию PyCharm что бы одновременно изучать и среду разработки.

+1
MacLeod - 19 Сентябрь, 2014 - 08:40
Изображение пользователя MacLeod.

Нууууу... выше я предложил решение по обустройству сервера для обеспечения веб-доступа к реализациям на python.
Что значит python без примочек?
Если рассматривать веб-технологии, то, чтобы дать доступ пользователю к функционалу, написанному вами на каком-либо скриптовом языке (php, python, perl, ruby и т.д.), нужно понимать всю цепочку запроса и обратную цепочку ответа на него.
Клиентом является браузер и первое, что происходит - запрос от браузера к веб-серверу. Общение между ними происходит по протоколу HTTP, чаще всего через 80 или 443 (шифрованный, HTTPS) порты. Подобный запрос называется клиентским подключением. Программу, принимающую клиентские подключения, называют фронтэндом. В простейшем случае, запрос подразумевает картинку, отдачу файла, HTML или просто текст, но, для получения более осмысленного ответа, запрос адресуется скрипту.
В случае со статикой - все просто, фронтэнд сам отдает ее браузеру с ответ и закрывает соединение. В случае со скриптом - либо идет обращение к соответствующему модулю веб-сервера (как в Apache), либо запрос передается другому приложению или менеджеру процессов (как в Nginx), называемому бэкэндом. В соответствие запросу, модуль или менеджер процессов запускает соответствующий скрипт и передает ему параметры.
В итоге, скрипт выполняется с помощью своего интерпретатора или как предварительно закэшированный (прекомпилированный, для более быстрого выполнения) байткод. Т.е. если скрипт написан на python, он и будет выполнен как чистый python.
По завершению выполнения скрипта результат будет передан по той же цепочке в обратном порядке вплоть до браузера клиента.
Смысл всего этого огорода в том, что система разбита на логические звенья, где каждая часть справляется со своей задачей и, как следствие развития, справляется хорошо. Например, Nginx отлично справляется с огромным наплывом клиентских подключений, а менеджер процессов - с выполнением скриптов, когда это нужно, и возвратом ответов фронтэнду. При этом, разработчику скриптов (веб-приложений) самому не нужно каждый раз реализовывать все это дело, изобретая велосипед.
При веб-разработке просто есть нюанс - выполнить определенную обработку или запросить данные из базы и вернуть результат, завершив работу. И чем быстрее - тем лучше.
При написании другого рода приложений, вы будете использовать то же самое знание языка, только в придачу к этому еще придется изучить библиотеки и биндинги под ту специфику, в которой будете это делать. Например, Qt или GTK для GUI (обеспечения графического интерфейса программ).
Ну, а Wordpress - это готовый движок с большим количеством модулей, написанный на PHP, а вы же решили изучать Python.

0
_alexandr_ - 19 Сентябрь, 2014 - 15:38

Я так понимаю что эту часть следует пропустить. "Установка PHP

Не устанавливайте пакет php5, он потянет за собой апач.
apt-get install php5-fpm

В дополнение рекомендую поставить пакет php5-cli, для возможности вызова php-скриптов из командной строки. Расширения PHP устанавливать также очень просто, поставим базовый набор (допишите нужные вам):
apt-get install php5-cli php5-curl php5-gd php5-mcrypt php5-mysql"

Установка MySQL

Это я уже сделал. Просто не хочется наворотить лишнего, что бы потом одно другому не мешало.

Заходил по ссылкам. Там предлагается устанавливать с использование pip. У меня с ним что то не заладилось при установке Django. Установил другим способом. Версия 1.8.
Сейчас пишу с планшетника, вечером попробую разобраться с pip. И хватает же у Вас терпения общаться такими как Я.-:)

0
MacLeod - 19 Сентябрь, 2014 - 15:40
Изображение пользователя MacLeod.

php5-fpm - по желанию. Испортить не испортит ничего, дело в конфиге nginx, кого бэкэндом использовать.

0
_alexandr_ - 19 Сентябрь, 2014 - 17:14

дело в конфиге nginx, кого бэкэндом использовать.

Так как все таки поступить что бы не было конфликтов?

0
MacLeod - 19 Сентябрь, 2014 - 17:33
Изображение пользователя MacLeod.

Конфликтов не будет в любом случае. Если вам совсем не нужен php-fpm и вы ничего никогда не будете писать на PHP - можно не ставить. С другой стороны, если в планах есть использование MySQL, то одно из лучших средств для манипуляций с данной БД - это phpMyAdmin, который написан на PHP. Если поставите его по статье, отдельным виртуальным хостом - конфликтовать ничего не будет.
Если будете придерживаться описанного порядка, в каждом файле каталога /etc/nginx/sites-available у вас будет описан один виртуальный хост. Уже внутри каждого вы описываете, что в рамках данного хоста будет использоваться - php-fpm или uWSGI.

+1
MacLeod - 19 Сентябрь, 2014 - 19:57
Изображение пользователя MacLeod.

Я тут подумал, чтобы вам меньше пришлось мучаться, лучше сделайте все целиком по моему руководству.
После чего по этому до настройки конфига mysite_nginx.conf (все действия внутри окружения лучше делать от юзера, не от рута).
Далее
nano /etc/hosts
туда строчку
127.0.0.1 mysite.local
потом
nano /etc/nginx/sites-available/mysite.local
туда
server {
    listen      80;
    server_name     mysite.local;
    charset     utf-8;

    client_max_body_size 75M;

    location /media  {
        alias /home/max/uwsgi-tutorial/mysite/media;
    }

    location /static {
        alias /home/max/uwsgi-tutorial/mysite/static;
    }

    location / {
        uwsgi_pass  127.0.0.1:8001;
        include     uwsgi_params;
    }
}

заменив /home/max на свой каталог и создав каталоги media и static в соответствие путям.
Далее
ln -s /etc/nginx/sites-available/mysite.local /etc/nginx/sites-enabled/
и
service nginx reload
Запустите uWSGI с помощью
uwsgi --socket :8001 --module mysite.wsgi
И попробуйте зайти на http://mysite.local/
Когда увидите такую картину в браузере:

уже можете экспериментировать и читать руководство по Django.

0
_alexandr_ - 19 Сентябрь, 2014 - 21:58

Буду пробовать.

0
_alexandr_ - 23 Сентябрь, 2014 - 04:06

Только сегодня добрался до компа. Припахали на работе. Установил pip. вынес он мне мозги. Удалось только с помощью easy_install.
Далее с "Django на production. uWSGI + nginx. Подробное руководство"

Перед установкой uWSGI

virtualenv

"Создадаем и активируем виртуальное окружение для софта, который нам будет необходим (ниже я расскажу, как установить uwsgi глобально):"

virtualenv uwsgi-tutorial

выполнил эту команду

cd uwsgi-tutorial
пишет что нет такой директории
может потому что uwsgi установил раньше?

nano /etc/hosts

туда строчку
127.0.0.1 mysite.local
дописал строку а вот
nano /etc/nginx/sites-available/mysite.local такого файла нет, я его создал и скопировал туда server {
listen 80;
server_name mysite.local;
charset utf-8;

client_max_body_size 75M;

location /media {
alias /home/alexandr/uwsgi-tutorial/mysite/media;
}

location /static {
alias /home/alexandr/uwsgi-tutorial/mysite/static;
}

location / {
uwsgi_pass 127.0.0.1:8001;
include uwsgi_params;
}
}

каталог mysite создал в нем два каталога media and static

root@brodyaga:/home/alexandr# ln -s /etc/nginx/sites-available/mysite.local /etc/nginx/sites-enabled/
root@brodyaga:/home/alexandr# service nginx reload
* Reloading nginx configuration nginx [ OK ]
root@brodyaga:/home/alexandr# uwsgi --socket :8001 --module mysite.wsgi
uwsgi: unrecognized option '--module'
getopt_long() error
root@brodyaga:/home/alexandr#

Возможно следует все переустановить в нужном порядке?!

0
MacLeod - 23 Сентябрь, 2014 - 20:43
Изображение пользователя MacLeod.

Не нужно ничего переустанавливать...
Осталось поднять сервер приложений на uwsgi.

Установил pip. вынес он мне мозги
Как именно?

virtualenv uwsgi-tutorial
выполнил эту команду
cd uwsgi-tutorial
пишет что нет такой директории
может потому что uwsgi установил раньше?

Нет. virtualenv установлен? Пакет python-virtualenv. Первая команда как раз должна была создать каталог.
Не, можно, конечно поставить uwsgi через apt, сконфигурить вручную - да, именно так в дальнейшем и нужно делать, особенно продакшн. Руками распаковать и настроить Django, без pip... Но вы еще путаетесь в простейших конфигах, вам сейчас проще, чтобы pip все сделал за вас.

nano /etc/nginx/sites-available/mysite.local такого файла нет, я его создал и скопировал
Все верно. Мы же создаем новых виртуальный хост, а каждый файл в данном каталоге - описание одного хоста. К слову, данная команда автоматически создаст файл, если его нет, остается вставить туда содержимое и сохранить.

каталог mysite создал в нем два каталога media and static
Каталог mysite должен был создаться pip'ом вместе с содержимым - файлами Django.

root@brodyaga:/home/alexandr# uwsgi --socket :8001 --module mysite.wsgi
uwsgi: unrecognized option '--module'

Логично, ведь нет установленного pip'ом или вручную Django в mysite.

0
_alexandr_ - 24 Сентябрь, 2014 - 08:10

Установил pip. вынес он мне мозги

Как именно?

Да пытался я его поставить, исполняя несколько вариантов из описаний на различных сайтах. И скачивал с официального. Не получалось. В итоге нашел "Управление пакетами Python при помощи easy_install". Сразу не знал об этом варианте.

virtualenv uwsgi-tutorial
выполнил эту команду
cd uwsgi-tutorial
пишет что нет такой директории
может потому что uwsgi установил раньше?

Нет. virtualenv установлен? Пакет python-virtualenv.

Иногда народ пишет инструкции исходя из того что такой или другой пакет уже установлен. Терминал в свою очередь говорит что пакета нет и что можно его установить. В этом случае не сказал, я так понял что что то не так делаю я.
Вечером буду разбираться с пакетом. Похоже без easy_install здесь не обойтись. Сейчас пора на работу.

Первая команда как раз должна была создать каталог.
Не, можно, конечно поставить uwsgi через apt, сконфигурить вручную - да, именно так в дальнейшем и нужно делать, особенно продакшн. Руками распаковать и настроить Django, без pip... Но вы еще путаетесь в простейших конфигах, вам сейчас проще, чтобы pip все сделал за вас.

каталог mysite создал в нем два каталога media and static

Каталог создал я сам. Пустой. В нем два подкаталога, так же.

Каталог mysite должен был создаться pip'ом вместе с содержимым - файлами Django.

В какой момент? Ведь pip я установил практически последним.

root@brodyaga:/home/alexandr# uwsgi --socket :8001 --module mysite.wsgi
uwsgi: unrecognized option '--module'

Логично, ведь нет установленного pip'ом или вручную Django в mysite.

А как установить?

+2
MacLeod - 24 Сентябрь, 2014 - 16:40
Изображение пользователя MacLeod.

Если вставляете цитаты, отмечайте их, пожалуйста (кнопочка Q на панели).

Да пытался я его поставить, исполняя несколько вариантов из описаний на различных сайтах. И скачивал с официального. Не получалось. В итоге нашел "Управление пакетами Python при помощи easy_install". Сразу не знал об этом варианте.
Первое, что нужно понять: практически всегда следует использовать пакетный менеджер вашего дистрибутива для установки софта, за очень редким исключением.
Для (k)ubuntu / debian - это apt-get или aptitude. Если нужна версия новее, чем в основном репозитории, обычно используются дополнительные ppa или, на край, собирается пакет. Это позволяет держать систему в чистоте и порядке.
Для установки pip, всего-то нужно было сделать:
sudo apt-get install python-pip
а для установки virtualenv:
sudo apt-get install python-virtualenv
Далее, под пользователем, не под рутом (без sudo и не под sudo -s), например, находясь в домашнем каталоге набрать
virtualenv labuda
то создастся каталог labuda с окружением (в руководстве подразумевалось создание каталога uwsgi-tutorial с окружением).

Похоже без easy_install здесь не обойтись.
В данном случае вообще речь не шла о его использовании.

В какой момент? Ведь pip я установил практически последним.
В момент выполнения вот этой части руководства:
Устонавливаем Django в наше виртуальное окружение:
pip install Django

Я бы настоятельно рекомендовал не копировать команды из руководства бездумно, а делать это осознанно.

0
_alexandr_ - 24 Сентябрь, 2014 - 19:17

а для установки virtualenv:
sudo apt-get install python-virtualenv

alexandr@brodyaga:~$ sudo apt-get install python-virtualenv
[sudo] password for alexandr:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлена самая новая версия python-virtualenv.
Следующие пакеты устанавливались автоматически и больше не требуются:
imagemagick-common libfftw3-double3 liblqr-1-0 libmagickcore5
libmagickcore5-extra libmagickwand5 libnetpbm10 linux-headers-3.13.0-32
linux-headers-3.13.0-32-generic linux-image-3.13.0-32-generic
linux-image-extra-3.13.0-32-generic netpbm
Для их удаления используйте «apt-get autoremove».
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
alexandr@brodyaga:~$ ^C
alexandr@brodyaga:~$

Самостоятельно я его не ставил. Ничего н понимаю.

В момент выполнения вот этой части руководства:
Устонавливаем Django в наше виртуальное окружение:
pip install Django

Django я устанавливал не через pip.
pip я установил только вчера.

+1
Fierta - 24 Сентябрь, 2014 - 19:33
Изображение пользователя Fierta.

Самостоятельно я его не ставил. Ничего н понимаю.
По зависимостям подтянулся в систему.

0
_alexandr_ - 25 Сентябрь, 2014 - 16:32

По зависимостям подтянулся в систему.
Возможно. Как раз было обновление.

+2
dyug - 25 Сентябрь, 2014 - 16:37

Это НЕ обновление, это зависимость от какого то пакета.
и скорее всего именно Django :-)
если верить пакетному менеджеру :-)
Нет, я не ставил, и не собираюсь, мне это не нужно.

0
_alexandr_ - 25 Сентябрь, 2014 - 18:39

Нет, я не ставил, и не собираюсь, мне это не нужно.

Не понимаю диалога. Я так не писал. Не ставил, писал . Остальное дописано. Прикол ?!

+1
dyug - 26 Сентябрь, 2014 - 10:37

Эммм.... Разумеется, ты это не писал, ибо писал это Я! :-)
Ибо именно мне это (Django) не нужно. :-)

Я просто посмотрел в пакетном манажере, что именно тянет за собой Django, и решил что это поставилось из репов при его (Django) установке.

Сам же лично я не проверял так ли это, ибо я не устанавливал Django, по причине смотреть выше. В случае нежелания смотреть выше, могу предложить "рис.№1" :-)

0
MacLeod - 24 Сентябрь, 2014 - 20:03
Изображение пользователя MacLeod.

Django я устанавливал не через pip.
pip я установил только вчера.

Ну хорошо, а почему тогда
каталог mysite создал в нем два каталога media and static
Каталог создал я сам. Пустой. В нем два подкаталога, так же.

?
У вас должен быть каталог с окружением, а там уже не пустой mysite (или названный как-то по-другому), а содержащий скрипты Django.
Потом вы должны запустить uwsgi с указанием этого каталога со скриптами Django на TCP сокете слушающим порт 8001 (согласно конфигу nginx).
После этого у вас при заходе браузером на http://mysite.local должна выполняться цепочка:
Браузер <-> Nginx <-> uwsgi <-> окружение и скрипты Django

0
_alexandr_ - 25 Сентябрь, 2014 - 16:29

У вас должен быть каталог с окружением, а там уже не пустой mysite (или названный как-то по-другому), а содержащий скрипты Django.

Ну а все же если я удалю django, uwsgi, за исключением pip, и по новой установлю в правильной последовательности как описано, тогда должно все быть нормально?!

0
MacLeod - 25 Сентябрь, 2014 - 20:32
Изображение пользователя MacLeod.

Конечно. Наборы скриптов, типа Django, phpMyAdmin, wordpress, drupal и т.д. лучше не ставить через apt.
На данный момент нужно создать окружение и накатить туда Django и uwsgi через pip, да.

0
_alexandr_ - 26 Сентябрь, 2014 - 06:06

На данный момент нужно создать окружение и накатить туда Django и uwsgi через pip, да.

А как это делается?

+1
MacLeod - 26 Сентябрь, 2014 - 19:15
Изображение пользователя MacLeod.

virtualenv

Создадаем и активируем виртуальное окружение для софта, который нам будет необходим (ниже я расскажу, как установить uwsgi глобально):
virtualenv uwsgi-tutorial
cd uwsgi-tutorial
source bin/activate

Django

Устонавливаем Django в наше виртуальное окружение:
pip install Django

Создаем новый проект и переходим в его корневую папку:
django-admin.py startproject mysite
cd mysite
Установка uWSGI в виртуальное окружение

Один из хороших способов установить uWSGI:
pip install uwsgi
uwsgi --socket :8001 --module mysite.wsgi

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

CAPTCHA на основе изображений
Введите цифры