запускаю вроде бы нормально 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
Это не ошибка, это предупреждение. Апач перед запуском проверяет доступность имен, описанных в своих виртуальных хостах в DNS или, хотя бы, в /etc/hosts.
Как обычно, посоветую не использовать Апач с его тормозным подходом и модулями, а пока вы не забили себе голову его конфигами, посоветую обратить внимание на использование специализированного бэкэнда (uWSGI) и Nginx в качестве фронтэнда.
http://kubuntu.ru/node/12014 - моя статья для начинающих по nginx (только вместо php-fpm у вас будет uWSGI), созданию виртуальных хостов.
И http://habrahabr.ru/post/226419/ тут показано, как легко поднять бэкэнд для Django на uWSGI и использовать в качестве апстрима в Nginx, вплоть до организации продакшена.
Нужно некоторое время что бы понять что в самом деле лучше. Возможно просто Wordpress?! А может упереться в Python без всяких добавок? Как Вы считаете? Python без примочек лучше? Все таки основная задача освоить Python и уметь создавать не только сайты. В тоже время купил лицензию PyCharm что бы одновременно изучать и среду разработки.
Нууууу... выше я предложил решение по обустройству сервера для обеспечения веб-доступа к реализациям на python.
Что значит python без примочек?
Если рассматривать веб-технологии, то, чтобы дать доступ пользователю к функционалу, написанному вами на каком-либо скриптовом языке (php, python, perl, ruby и т.д.), нужно понимать всю цепочку запроса и обратную цепочку ответа на него.
Клиентом является браузер и первое, что происходит - запрос от браузера к веб-серверу. Общение между ними происходит по протоколу HTTP, чаще всего через 80 или 443 (шифрованный, HTTPS) порты. Подобный запрос называется клиентским подключением. Программу, принимающую клиентские подключения, называют фронтэндом. В простейшем случае, запрос подразумевает картинку, отдачу файла, HTML или просто текст, но, для получения более осмысленного ответа, запрос адресуется скрипту.
В случае со статикой - все просто, фронтэнд сам отдает ее браузеру с ответ и закрывает соединение. В случае со скриптом - либо идет обращение к соответствующему модулю веб-сервера (как в Apache), либо запрос передается другому приложению или менеджеру процессов (как в Nginx), называемому бэкэндом. В соответствие запросу, модуль или менеджер процессов запускает соответствующий скрипт и передает ему параметры.
В итоге, скрипт выполняется с помощью своего интерпретатора или как предварительно закэшированный (прекомпилированный, для более быстрого выполнения) байткод. Т.е. если скрипт написан на python, он и будет выполнен как чистый python.
По завершению выполнения скрипта результат будет передан по той же цепочке в обратном порядке вплоть до браузера клиента.
Смысл всего этого огорода в том, что система разбита на логические звенья, где каждая часть справляется со своей задачей и, как следствие развития, справляется хорошо. Например, Nginx отлично справляется с огромным наплывом клиентских подключений, а менеджер процессов - с выполнением скриптов, когда это нужно, и возвратом ответов фронтэнду. При этом, разработчику скриптов (веб-приложений) самому не нужно каждый раз реализовывать все это дело, изобретая велосипед.
При веб-разработке просто есть нюанс - выполнить определенную обработку или запросить данные из базы и вернуть результат, завершив работу. И чем быстрее - тем лучше.
При написании другого рода приложений, вы будете использовать то же самое знание языка, только в придачу к этому еще придется изучить библиотеки и биндинги под ту специфику, в которой будете это делать. Например, Qt или GTK для GUI (обеспечения графического интерфейса программ).
Ну, а Wordpress - это готовый движок с большим количеством модулей, написанный на PHP, а вы же решили изучать Python.
Я так понимаю что эту часть следует пропустить. "Установка 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. И хватает же у Вас терпения общаться такими как Я.-:)
php5-fpm - по желанию. Испортить не испортит ничего, дело в конфиге nginx, кого бэкэндом использовать.
дело в конфиге nginx, кого бэкэндом использовать.
Так как все таки поступить что бы не было конфликтов?
Конфликтов не будет в любом случае. Если вам совсем не нужен php-fpm и вы ничего никогда не будете писать на PHP - можно не ставить. С другой стороны, если в планах есть использование MySQL, то одно из лучших средств для манипуляций с данной БД - это phpMyAdmin, который написан на PHP. Если поставите его по статье, отдельным виртуальным хостом - конфликтовать ничего не будет.
Если будете придерживаться описанного порядка, в каждом файле каталога /etc/nginx/sites-available у вас будет описан один виртуальный хост. Уже внутри каждого вы описываете, что в рамках данного хоста будет использоваться - php-fpm или uWSGI.
Я тут подумал, чтобы вам меньше пришлось мучаться, лучше сделайте все целиком по моему руководству.

После чего по этому до настройки конфига 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.
Буду пробовать.
Только сегодня добрался до компа. Припахали на работе. Установил 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#
Возможно следует все переустановить в нужном порядке?!
Не нужно ничего переустанавливать...
Осталось поднять сервер приложений на uwsgi.
Как именно?
Нет. virtualenv установлен? Пакет python-virtualenv. Первая команда как раз должна была создать каталог.
Не, можно, конечно поставить uwsgi через apt, сконфигурить вручную - да, именно так в дальнейшем и нужно делать, особенно продакшн. Руками распаковать и настроить Django, без pip... Но вы еще путаетесь в простейших конфигах, вам сейчас проще, чтобы pip все сделал за вас.
Все верно. Мы же создаем новых виртуальный хост, а каждый файл в данном каталоге - описание одного хоста. К слову, данная команда автоматически создаст файл, если его нет, остается вставить туда содержимое и сохранить.
Каталог mysite должен был создаться pip'ом вместе с содержимым - файлами Django.
Логично, ведь нет установленного pip'ом или вручную Django в mysite.
Установил 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.
А как установить?
Если вставляете цитаты, отмечайте их, пожалуйста (кнопочка Q на панели).
Первое, что нужно понять: практически всегда следует использовать пакетный менеджер вашего дистрибутива для установки софта, за очень редким исключением.
Для (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 с окружением).
В данном случае вообще речь не шла о его использовании.
В момент выполнения вот этой части руководства:
Устонавливаем Django в наше виртуальное окружение:
pip install Django
Я бы настоятельно рекомендовал не копировать команды из руководства бездумно, а делать это осознанно.
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.
pip я установил только вчера.
По зависимостям подтянулся в систему.
Возможно. Как раз было обновление.
Это НЕ обновление, это зависимость от какого то пакета.
и скорее всего именно Django :-)
если верить пакетному менеджеру :-)
Нет, я не ставил, и не собираюсь, мне это не нужно.
Не понимаю диалога. Я так не писал. Не ставил, писал . Остальное дописано. Прикол ?!
Эммм.... Разумеется, ты это не писал, ибо писал это Я! :-)
Ибо именно мне это (Django) не нужно. :-)
Я просто посмотрел в пакетном манажере, что именно тянет за собой Django, и решил что это поставилось из репов при его (Django) установке.
Сам же лично я не проверял так ли это, ибо я не устанавливал Django, по причине смотреть выше. В случае нежелания смотреть выше, могу предложить "рис.№1" :-)
Ну хорошо, а почему тогда
?
У вас должен быть каталог с окружением, а там уже не пустой mysite (или названный как-то по-другому), а содержащий скрипты Django.
Потом вы должны запустить uwsgi с указанием этого каталога со скриптами Django на TCP сокете слушающим порт 8001 (согласно конфигу nginx).
После этого у вас при заходе браузером на http://mysite.local должна выполняться цепочка:
Браузер <-> Nginx <-> uwsgi <-> окружение и скрипты Django
Ну а все же если я удалю django, uwsgi, за исключением pip, и по новой установлю в правильной последовательности как описано, тогда должно все быть нормально?!
Конечно. Наборы скриптов, типа Django, phpMyAdmin, wordpress, drupal и т.д. лучше не ставить через apt.
На данный момент нужно создать окружение и накатить туда Django и uwsgi через pip, да.
А как это делается?
Создадаем и активируем виртуальное окружение для софта, который нам будет необходим (ниже я расскажу, как установить uwsgi глобально):
virtualenv uwsgi-tutorial
cd uwsgi-tutorial
source bin/activate
Django
Устонавливаем Django в наше виртуальное окружение:
pip install Django
Создаем новый проект и переходим в его корневую папку:
django-admin.py startproject mysite
cd mysite
Один из хороших способов установить uWSGI:
pip install uwsgi
uwsgi --socket :8001 --module mysite.wsgi
Отправить комментарий