使用libjpeg的Python图像库错误
我有一个centos 5,正在尝试启动Python映像库。我安装了libjpeg、libjpeg-devel等,但仍然无法将jpeg图像上载到我的django站点 我已多次重新安装PIL。通过PIP、easy_install2.6和手动构建。每次它显示JPEG支持可用-但不允许我上传JPEG文件。它将接受gif和png格式 我正在运行python2.6,PIL 1.1.7使用libjpeg的Python图像库错误,python,django,python-imaging-library,libjpeg,Python,Django,Python Imaging Library,Libjpeg,我有一个centos 5,正在尝试启动Python映像库。我安装了libjpeg、libjpeg-devel等,但仍然无法将jpeg图像上载到我的django站点 我已多次重新安装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
--------------------------------------------------------------------
有什么想法吗
谢谢您的models.py文件中有什么?在数据库中需要类似的内容
img = models.ImageField("Foo")
其中Foo是存储上传图像的地方。
确保在重新安装PIL之前安装了libjpeg-devel,如果不起作用,请运行
easy_install pil | tee pil.log
并将其张贴在此处,以便我们可以进一步帮助您。确保您没有安装正在使用的其他版本的libjpeg。要检查它,请尝试
lsof | grep libjpeg
我也遇到了同样的问题,并一步一步地记录了我的安装过程。它相当长,你可以在上面找到 它将在以下方面帮助您:
$ python setup.py clean
$ python setup.py build_ext -i
- 工作副本
- 德扬戈
- 皮尔
- 成像
- libjpeg
- mysql
- 吉特
- 阿帕奇
- mod_wsgi
- 易于安装
- 皮普
- django图像套件
- CentOS 5.4上的cdn存储
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,则应立即安装这些文件。此外,请注意,这些并不是您的Web服务器需要的唯一软件包,这应该被视为使您的django应用程序工作的最低要求
添加新用户
groupadd webmaster
useradd -c "username" -g webmaster -m -s /bin/bash username
passwd username
passw0rd
visudo
在第77行附近,该行显示“root ALL=(ALL)ALL add
用户名全部=(全部)全部
从这里,您可以更改为您的用户,使根帐户保持原样。
如果发现某些项不希望运行,则应使用sudo命令
沿着Python2.4的一侧安装Python2.6
让Python 2.6在CentOS 5.4上运行而不破坏任何功能的诀窍是将其安装在默认Python 2.4的旁边。不要尝试更新默认Python 2.4,因为重要的CentOS模块需要2.4。为此,您将配置Python以安装在/opt/python2.6中。在执行此步骤之前,请确保e yum安装了sqlite-devel,因为在编译python时,python将查找sqlite头文件,以便为其构建模块
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 ~
在/opt/Python2.6中安装Python之后,您需要创建指向它的符号链接
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。此外,使用yum测试python 2.4和2.6之间是否存在任何冲突。如果确实存在问题,请仔细检查符号链接,确保与/usr/bin/python或/u没有冲突sr/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作为与Web服务器的接口方式。我也更喜欢使用它,因为它速度快且易于安装。本教程将不介绍如何将应用程序设置为使用wsgi(不过,最后我将给出一个示例),但django项目对此有一个很好的教程。请注意,此步骤非常重要。您可能以前使用yum安装过mod_wsgi,但您需要下载它并使用新的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模块
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>
保存文件
创建一个.python目录
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>
在mysite
mkdir .python-eggs
chmod -R 777 .python-eggs
启动mysql服务器
/etc/rc.d/init.d/mysqld start
在CENTOS上安装PIL
http://athenageek.wordpress.com/2009/06/09/easy_install-pil-not-so-easy/
安装PIP以使用图像处理
/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>
将WSGISocketPrefix添加到httpd.conf文件末尾
WSGISocketPrefix /var/run/wsgi
确保主机名与apacheconf/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
设置
根据一篇博客,删除你的-索引
配置防火墙
sudo vi /etc/sysconfig/iptables-config
确保以下变量设置为“是”:
IPTABLES\u SAVE\u ON\u STOP=“是”
IPTABLES\u在重新启动时保存=“是”
打开Web端口:
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停止
sudo/sbin/service 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
为机架空间/CDN存储安装Django cumuls
/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,这样你就可以访问管理部分。这对我很有用
并在安装完所有p
/opt/python2.6/bin/easy_install-2.6 South
/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
$ python setup.py clean
$ python setup.py build_ext -i