Установка python, apache и mod_wsgi. Установка django на vps-сервер CentOS

Здравствуйте , дорогие читатели моей колонки! Хочу поведать Вам сегодня про устрановку связки python, django , apache и mod_wsgi на vps-сервер с установленнным CentOS. Итак, пойдем по порядку:

1. Установка Apache.

Качаем Apache, APR и APR-Util. Последние стабильные версии берем отсюда: APR и APR-Util Apache
cd /usr/local/src wget http://apache.cp.if.ua//apr/apr-1.4.2.tar.gz wget http://apache.cp.if.ua//apr/apr-util-1.3.9.tar.gz wget http://apache.vc.ukrtel.net//httpd/httpd-2.2.16.tar.gz
Распаковываем архивы:
tar -xzf apr-1.4.2.tar.gz tar -xzf apr-util-1.3.9.tar.gz tar -xzf httpd-2.2.16.tar.gz

apache

Собираем веб-сервер Apache:
cd apr-1.4.2 ./configure make && make install cd ../apr-util-1.3.9 ./configure --with-apr=/usr/local/apr/bin/apr-1-config make && make install cd ../httpd-2.2.16 ./configure --enable-mods-shared=most --with-apr-util=/usr/local/apr/bin/apu-1-config --with-apr=/usr/local/apr/bin/apr-1-config make && make install
По умолчанию apache будет установлен в папку /usr/local/apache2/, изменить корневую папку веб-сервера можно добавив --prefix=PREFIX, например:
--prefix=/home/my_webserver/apache
Создаем символические ссылки:
ln -s /usr/local/apache2/bin/httpd /usr/sbin/ ln -s /usr/local/apache2/bin/apachectl /usr/local/bin/ ln -s /usr/local/apache2/ /etc/httpd
создаем файл-скрипт запуска веб-сервера apache, даем права на запуск скрипта. Скрипт уже готов, находится в папке с исходным кодом - build/rpm/httpd.init:
cp build/rpm/httpd.init /etc/rc.d/init.d/httpd chmod 755 /etc/init.d/httpd
редактируем конфигурационный файл apache - /etc/httpd/conf//httpd.conf (например с помощью редактора vi). Прописываем PidFile и LockFile для того, чтобы скрипт запуска\остановки apache работал корректно, можно сразу после параметра ServerRoot:
PidFile "/var/log/httpd/httpd.pid" LockFile "/var/lock/subsys/httpd"
Находим параметры User и Group и меняем daemon на nobody:
User nobody Group nobody
Дальше ищем строчку : AllowOverride All - разрешаем изменение директив через файл .htaccess (для последующей связки с django) Options Indexes FollowSymLinks - добавляем в конец ExecCGI (для выполнение .wsgi скриптов) должно получиться вот так:
# # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks ExecCGI # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All # # Controls who can get stuff from this server. # Order allow,deny Allow from all
на этом установка apache завершена пока-что, теперь можно проверить чтобы он запускался(а точнее или корректно работает сам скрипт /etc/init.d/httpd) :
/etc/init.d/httpd start /etc/init.d/httpd stop

2. Установка Python 2.7. Установка Django 1.2.3. Установка mod_wsgi 3.3.

Качаем исходники с официальных сайтов: Python Django Mod_wsgi На момент написания статьи Django поддерживает версию Python-2.7, не више, по этому качаем Python-2.7. Mod_wsgi качаем версию не ниже 3.3.
cd /usr/local/src wget http://www.python.org/ftp/python/2.7/Python-2.7.tgz wget http://www.djangoproject.com/download/1.2.3/tarball/ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
Разархивируем:
tar -xzf Python-2.7.tgz tar -xzf Django-1.2.3.tar.gz tar -xpf mod_wsgi-3.3.tar.gz

python, django

Установка python и django

Собираем python (ставлю в отдельную директорию /usr/local/python2.7) и django фреймворк:
cd ./python-2.7 ./configure --prefix=/usr/local/python2.7 make && make install cd ../Django-1.2.3 /usr/local/python2.7/bin/python2.7 setup.py install
Осталось нам связать все это дело с веб-сервером apache через mod_wsgi:

mod_wsgi

Установка mod_wsgi

cd /usr/local/src/mod_wsgi-3.3 ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/python2.7/bin/python2.7 make && make install
должно собрать вот такой модуль:
ls -la /usr/local/apache2/modules/mod_wsgi.so
прописываем модуль mod_wsgi в конфигурационном файле apache. Нужно добавить следующую строчку в файл /etc/httpd/conf/httpd.conf, где подключаются другие модули "LoadModule":
LoadModule wsgi_module modules/mod_wsgi.so
сохраняем конфиг и перезагружаем apache:
/etc/init.d/httpd restart httpd -t -D DUMP_MODULES
- выведет список подгружаемых модулей, среди них должен быть mod_wsgi. создаем папку, где будут находиться проэкты python django и создаем первый проэкт на django framework:
mkdir /home/my_django cd /home/my_django /usr/local/python2.7/bin/django-admin.py startproject dj_my1project
- должна создаться папка /home/my_django/dj_my1project Теперь идем в /usr/local/apache2/htdocs - отсюда по умолчанию веб-сервер apache будет грузить сайт. создаем там файл .htaccess с содержимым:
DirectoryIndex django.wsgi AddHandler wsgi-script .wsgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
DirectoryIndex - какой файл подгружать по умолчанию AddHandler - указываем обработчик для скриптов .wsgi Rewrite - перенаправления в django.wsgi при доступе к сайту Теперь создаем django.wsgi с кодом внутри:
import os import sys sys.path.append('/home/my_django') os.environ['DJANGO_SETTINGS_MODULE'] = 'dj_my1project.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()

Сохраняем, запускаем apache, вводим в браузер просто IP адрес сервера и должны увидеть тестовую страницу django - приветствие:

django welcome page

Если есть доменное имя и хотите загружать сайт через него, тогда пропишите его в файл /etc/httpd/conf/httpd.conf #ServerName :80 - параметр закоментирован, нужно поменять на следующее:
ServerName my-domain-name.ua:80
- где my-domain-name.ua и есть доменное имя для сайта. На этом, пожалуй, и закончим. Жду Ваших отзывов о своем труде :)

Следующая запись

Предыдущая запись

Похожие записи

Комментарии

  1. NINJA

    NINJA на 24.02.2011 21:43

    Спасибо!

Пингбэки

Оповещения открыты.

Трэкбэки

URL архива

Only authorized users can post comments