У меня были те же проблемы и я задокументировал мою установку шаг за шагом. Он довольно длинный: вы можете найти его в моем блоге .
Это поможет вам со следующим:
- Рабочая копия
- Джанго
- PIL
- изображения
- libjpeg
- MySQL
- мерзавец
- апач
- mod_wsgi
- easy_install
- пип
- Джанго-imagekit
- cdn-хранилище на CentOS 5.4
Установите Apache, MySQL, SQLite и другие пакеты разработчика
yum install httpd-devel mysql mysql-server
yum install mysql-client mysql-devel
yum install apr-devel sqlite3 sqlite-devel
yum install libjpeg libpng gcc make autoconf
yum install libxslt gettext zlib-devel
yum groupinstall "GNOME Desktop Environment"
yum groupinstall "Development Tools"
В этом руководстве предполагается, что вы используете MySQL в рабочей среде, а также можете использовать SQLite для разработки. Если вы используете другую базу данных, например PostgreSQL, вам следует установить эти файлы сейчас. Кроме того, обратите внимание, что это не единственные пакеты, которые вам понадобятся для вашего веб-сервера, это следует рассматривать как минимум, чтобы ваше приложение django работало.
Добавить нового пользователя
groupadd webmaster
useradd -c "username" -g webmaster -m -s /bin/bash username
passwd username
passw0rd
visudo
Рядом со строкой 77, где написано «root ALL = (ALL) ALL add».
имя пользователя ALL = (ALL) ALL
Отсюда вы можете перейти к своему пользователю, чтобы оставить учетную запись root как есть.
Если вы обнаружите, что некоторые элементы не хотят запускаться, используйте команду sudo
Установить Python 2.6 вдоль Python 2.4
Хитрость в том, чтобы заставить Python 2.6 работать на CentOS 5.4 без каких-либо поломок, состоит в том, чтобы установить его вместе со стандартным Python 2.4. Не пытайтесь обновить ваш Python 2.4 по умолчанию, потому что для важных модулей CentOS требуется 2.4. Для этого вы настроите python для установки в /opt/python2.6. Перед тем, как сделать этот шаг, убедитесь, что у вас установлен sqlite-devel yum, потому что python будет искать заголовочные файлы sqlite, чтобы построить модуль для него при компиляции python.
wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
tar -zxvf Python-2.6.4.tgz
cd Python-2.6.4
./configure --prefix=/opt/python2.6 --with-threads --enable-shared --with-zlib=/usr/include
make
make install
cd ~
После установки Python в /opt/Python2.6 вам необходимо создать символические ссылки на него.
ln -s /opt/python2.6/lib/libpython2.6.so /usr/lib
ln -s /opt/python2.6/lib/libpython2.6.so.1.0 /usr/lib
ln -s /opt/python2.6/bin/python /usr/local/bin/python
ln -s /opt/python2.6/bin/python /usr/bin/python2.6
ln -s /opt/python2.6/lib/python2.6.so /opt/python2.6/lib/python2.6/config/
Запустите ldconfig, чтобы обновить ссылки на ваши общие библиотеки, а затем проверьте версию Python, чтобы убедиться, что теперь вы можете использовать 2.6. Также проверьте, есть ли конфликты между Python 2.4 и 2.6 с использованием yum. Если у вас возникли проблемы, дважды проверьте символические ссылки и убедитесь, что вы не конфликтуете с / usr / bin / python или /usr/bin/python2.4.
.
/sbin/ldconfig -v
python -V
yum info httpd
Установить setuptools, расширение MySQL и Django 1.1
Если вы ранее установили setuptools, но вам нужно будет сделать это снова для 2.6, чтобы пакеты были установлены в /opt/python2.6. Чтобы использовать MySQL с Django, вам нужно скачать, собрать и установить расширение для него.
wget http://bit.ly/6E0DNN
chmod u+x setuptools-0.6c11-py2.6.egg
./setuptools-0.6c11-py2.6.egg --prefix=/opt/python2.6
wget http://bit.ly/6j4uID
tar -zxvf MySQL-python-1.2.3c1.tar.gz
cd MySQL-python-1.2.3c1
python setup.py build
python setup.py install
cd ..
wget http://www.djangoproject.com/download/1.1.1/tarball/
tar -zxvf Django-1.1.1.tar.gz
cd Django-1.1.1
python setup.py build
python setup.py install
cd ..
Установка и установка mod_wsgi
Большинство сообщества Django использует wsgi как способ взаимодействия с веб-сервером. Я также предпочитаю использовать его, потому что он быстрый и очень простой в настройке. Этот учебник не будет посвящен настройке вашего приложения для использования wsgi (однако, я приведу пример в конце), но у проекта django есть хороший учебник для этого. Обратите внимание, что этот шаг очень важен. Возможно, вы ранее установили mod_wsgi, используя yum, но вам нужно будет загрузить его и собрать его, используя новый 2.6, чтобы он работал с вашим приложением.
wget http://modwsgi.googlecode.com/files/mod_wsgi-2.8.tar.gz
tar -zxvf mod_wsgi-2.8.tar.gz
cd mod_wsgi-2.8
./configure --with-python=/usr/local/bin/python
make
make install
cd ..
Затем вам нужно отредактировать ваш Apache httpd.conf, чтобы загрузить модуль mod_wsgi. После этого перезапустите Apache.
vi /etc/httpd/conf/httpd.conf
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
line 787
AddHandler wsgi-script .wsgi
Убедитесь, что ваш Apache перезагружается после загрузки модуля
/etc/init.d/httpd restart
Создайте отдельный каталог для ваших виртуальных хостов
Мне нравится размещать всех своих vhosts в отдельном каталоге
cd /etc/httpd/conf
mkdir vhosts
cd vhosts
vi mysite.com.conf
<VirtualHost 127.0.0.1>
ServerName localhost
ErrorLog /www/django_test1/mysite/logs/error_log
CustomLog /www/django_test1/mysite/logs/access_log combined
UseCanonicalName Off
Alias /media/ "/www/django_test1/mysite/media/"
<Directory "/www/django_test1/mysite/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
Alias /mediaadmin/ "/opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media/"
<Directory "/opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / /www/django_test1/mysite.wsgi
WSGIDaemonProcess mysite processes=7 threads=1 display-name=%{GROUP}
WSGIProcessGroup mysite
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Создайте свой файл mod_wsgi
Согласно нескольким поискам, которые я провел в Интернете, лучше всего оставить файл mod_wsgi в родительской папке приложения.
mkdir /www
cd /www
mkdir django_test1
cd django_test1
vi mysite.wsgi
#!/opt/python2.6/bin/python
import os, sys
sys.path.append('/www/django_test1/mysite')
sys.path.insert(0, '/www/django_test1')
sys.path.insert(0, '/www/django_test1/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
os.environ['PYTHON_EGG_CACHE'] = '/www/django_test1/mysite/.python-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Сохранить файл
Создать каталог .python-eggs
в мистите
mkdir .python-eggs
chmod -R 777 .python-eggs
http://mikecantelon.com/story/installing_django_on_centos_5
Запустите сервер MySQL
/etc/rc.d/init.d/mysqld start
Установить PIL на CENTOS
http://athenageek.wordpress.com/2009/06/09/easy_install-pil-not-so-easy/
Установите PIP, чтобы использовать Imaging
/opt/python2.6/bin/easy_install-2.6 pip
/opt/python2.6/bin/pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
Установить GIT
http://www.bitsandpix.com/entry/git-installing-git-on-centos-5/
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum install git
Настройка MySQL с другим пользователем
mysql --user=root mysql
CREATE USER 'webdev'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'webdev'@'localhost'
IDENTIFIED BY 'password' WITH GRANT OPTION;
Создание проекта Django
/opt/python2.6/bin/django-admin.py startproject mysite
Создайте каталог журналов в вашем проекте, поскольку это необходимо для mod_wsgi и apache
cd mysite
mkdir logs
Символическая ссылка на папку администрирования мультимедиа
mkdir media
chmod -R 777 media
mkdir mediaadmin
ln -s /opt/python2.6/lib/python2.6/site-packages/django/contrib/admin/media /www/django_test1/mysite/mediaadmin/
Сконфигурируйте ваш файл /etc/httpd/conf/httpd.conf для включения базовых настроек ваших проектов
ServerAdmin admin@appelvm01.centos
HostName appelvm01.centos
ServerName 127.0.0.1
DocumentRoot "/www/django_test1/mysite"
<Directory "/www/django_test1/mysite">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
включает конфигурационные файлы VirtualHosts
Include conf/vhosts/*.conf
добавить WSGISocketPrefix в конец файла httpd.conf
WSGISocketPrefix /var/run/wsgi
Убедитесь, что имя хоста совпадает с именем в Apache conf /etc/httpd/conf/httpd.conf
иначе измените, запустив
hostname "new_name"
Дайте разрешения
chcon -R -h -t httpd_sys_content_t /www/django_test1/mysite
Я обнаружил, что это не достаточно хорошо, поэтому мне пришлось отключить SElinux
vi /etc/selinux/config
набор
SELINUX=disabled
По сообщению блога удали свой -индекс
http://www.thelinuxblog.com/apache-directory-index-forbidden-by-options-directive/
vi /etc/httpd/conf.d/welcome.conf
# -Indexes
Indexes
Настройка брандмауэра
sudo vi /etc/sysconfig/iptables-config
Убедитесь, что для следующих переменных установлено значение «да»:
IPTABLES_SAVE_ON_STOP = "да"
IPTABLES_SAVE_ON_RESTART = "да"
Открытые веб-порты:
sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
sudo /sbin/iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT
Перезапустите iptables с помощью:
sudo / sbin / service iptables stop
sudo / sbin / service iptables start
Убедитесь, что правила все еще действуют. Попробуйте перезапустить сервер, чтобы убедиться, что настройки выбраны.
Убедитесь, что MySQL и Apache всегда включены после перезагрузки
/sbin/chkconfig --add httpd
/sbin/chkconfig --level 2345 httpd on
/sbin/chkconfig --list httpd
/sbin/chkconfig --add mysqld
/sbin/chkconfig --level 2345 mysqld on
/sbin/chkconfig --list mysqld
Установите South через easy_install, чтобы упростить миграцию БД
/opt/python2.6/bin/easy_install-2.6 South
Установка Django-cumuls для хранения в Rackspace / CDN
/opt/python2.6/bin/pip install django-cumulus
/opt/python2.6/bin/pip install -r http://bitbucket.org/richleland/django-cumulus/raw/0.3.3/requirements.txt
/opt/python2.6/bin/easy_install-2.6 django-imagekit
Теперь вы сможете перейти по IP-адресу вашего сервера, и вы должны увидеть экран приветствия!
С этого момента вы можете приступить к разработке своего приложения, вы сможете включить автообнаружение администраторов и установить URL-адреса, чтобы вы могли получить доступ к разделу администратора.