2011-07-30 2 views
2

У меня есть centos 5 и я пытаюсь получить Python Imaging library вверх и вниз. Я установил libjpeg, libjpeg-devel и т. Д., И я до сих пор не могу загружать jpeg-изображения на сайт django.Ошибки библиотеки изображений Python с libjpeg

Я переустановил PIL несколько раз. Через PIP через easy_install2.6 и создание вручную. Каждый раз, когда он показывает поддержку JPEG, но не позволяет загружать файлы jpeg. Он будет принимать gif и png.

Я бегу python2.6, PIL 1.1.7

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.6.7 (r267:88850, Jul 28 2011, 12:07:21) 
       [GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 

Любые идеи?

Thanks

+1

Пожалуйста, точнее о том, что шаги, которые вы предпринимаете, чтобы увидеть проблему и точно, какую трассировку ошибок вы видите. –

ответ

0

что находится в вашем файле models.py? Вам понадобится что-то подобное в вашей базе данных.

img = models.ImageField("Foo") 

где Foo - это место для хранения загруженных изображений. убедитесь, что у вас есть libjpeg-Devel установлен перед установкой PIL, и если это не работает, запустите

easy_install pil | tee pil.log 

и разместить его здесь, так что мы можем помочь вам в дальнейшем.

2

Убедитесь, что вы не используете другую версию libjpeg, которая используется. Чтобы проверить это, попробуйте

lsof | grep libjpeg 
1

У меня были те же проблемы и задокументирована моя установка шаг за шагом. Это довольно длинный: вы можете найти его на my blog.

Это поможет вам следующее:

  • рабочая копия
  • Джанго
  • 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 для производства и лет u также может использовать SQLite для разработки. Если вы используете другую базу данных, такую ​​как PostgreSQL, тогда вы должны установить эти файлы сейчас. Кроме того, обратите внимание, что это не единственные пакеты, которые вам понадобятся для вашего веб-сервера. Это следует считать минимальным, чтобы ваше приложение django работало.

Добавить пользователя

groupadd webmaster 
useradd -c "username" -g webmaster -m -s /bin/bash username 
passwd username 
passw0rd 
visudo 

Возле линии 77, где он читает «корень ALL = (ALL) ALL добавить имя ALL = (ALL) ALL

Здесь вы можете изменить к вашему пользователю оставить учетную запись root как есть. Если вы обнаружите, что некоторые вещи не хотят работать, вы должны использовать команду Судо

Установка 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. Прежде чем сделать этот шаг, убедитесь, что у вас установлен yum sqlite-devel, потому что 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, чтобы обновить ссылки на ваши общие библиотеки, а затем проверить вашу версию питона, чтобы убедиться, что теперь вы можете использовать 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 

Создайте отдельную папку для виртуальных хостов

Я люблю дом все мои ВХостов в отдельном каталоге

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-яйца в MySite

mkdir .python-eggs 
chmod -R 777 .python-eggs 

http://mikecantelon.com/story/installing_django_on_centos_5

Запустите сервер MySQL

Установка 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 и апача

cd mysite 
mkdir logs 

Symlink папка админ СМИ

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 [email protected] 
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 конф/и т.д./HTTPD/конф/HTTPD.конф еще изменить, запустив

hostname "new_name" 

давать разрешения

chcon -R -h -t httpd_sys_content_t /www/django_test1/mysite 

я нашел это не был достаточно хорош, так что мне пришлось отключить SELinux

vi /etc/selinux/config 

набор

SELINUX=disabled 

Согласно блоге удалить ваши -Indexes 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 

Restart Iptables с: Судо/SBIN/услуги Iptables остановить Суда/SBIN/услуги Iptables начать Убедитесь, что правила все еще находятся в Перезапустите сервер тоже, чтобы убедиться, что установка взял..

Убедитесь, что 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 

Установите юг через 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-адреса, d вы должны увидеть экран приветствия!

С этого момента вы можете приступить к разработке своего приложения, вы должны иметь возможность включить автообнаружение администраторов и установить URL-адреса, чтобы вы могли получить доступ к разделу администрирования.

+0

Если возможно, разместите краткую сводку своей записи в блоге здесь для потомков, чтобы этот ответ имел ценность, даже если ваш сайт опустится в будущем. –

+0

Thans Chris, я скопирую и вставляю столько, сколько смогу. – ApPeL

0

Это работал для меня http://t.co/JfOC1iRi

И сделать чистое перестроение PIL после установки всех предпосылок от macport, обязательно выполните следующее:

$ python setup.py clean 
$ python setup.py build_ext -i