我有一个centos 5,并且正在尝试让Python Imaging库上线。我安装了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
--------------------------------------------------------------------有什么想法吗?
谢谢
发布于 2011-07-31 12:01:29
确保您没有安装正在使用的不同版本的libjpeg。
lsof | grep libjpeg发布于 2011-08-01 14:20:37
我也遇到了同样的问题,并一步一步地记录了我的安装。这本书很长:你可以在my blog上找到它。
它将在以下方面为您提供帮助:
CentOS 5.4上的CentOS
安装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,那么您现在就应该安装这些文件。此外,请注意,这些并不是您的get服务器需要的唯一包,这应该被视为使您的django应用程序正常工作的最低要求。
添加新用户
groupadd webmaster
useradd -c "username" -g webmaster -m -s /bin/bash username
passwd username
passw0rd
visudo在第77行附近,它显示为“root ALL=( ALL ) ALL add username ALL=(ALL) ALL
在这里,您可以更改为您的用户,使root帐户保持原样。如果发现某些项目不想运行,则应使用sudo命令
与Python 2.4一起安装Python 2.6
让Python2.6在不破坏任何东西的情况下在CentOS 5.4上工作的诀窍是将其与默认的Python2.4一起安装。不要试图更新默认的Python2.4,因为重要的CentOS模块需要2.4。为此,您需要将python配置为安装在/opt/python2.6中。在执行此步骤之前,请确保您已经安装了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 ~在/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测试Python2.4和2.6之间是否有任何冲突。如果确实有问题,请仔细检查符号链接,并确保与/usr/bin/python或/usr/bin/python2.4没有冲突。
/sbin/ldconfig -v
python -V
yum info httpd安装setuptools、MySQL扩展和Django1.1
如果您之前安装了setuptools,但您需要在2.6中再次安装,以便将这些包安装在/opt/python2.6中。为了在Django中使用MySQL,您需要下载、构建并安装其扩展。
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作为与way服务器交互的方式。我也更喜欢使用它,因为它很快,而且很容易设置。本教程不会将您的应用程序设置为使用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以便加载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为您的虚拟主机创建单独的目录
我喜欢将我的所有vhost放在一个单独的目录中
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目录
在mysite中
mkdir .python-eggs
chmod -R 777 .python-eggshttp://mikecantelon.com/story/installing_django_on_centos_5
启动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 logsSymlink您的管理介质文件夹
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根据博客的说法,删除你的-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确保将以下变量设置为“yes”:IPTABLES_SAVE_ON_STOP="yes“IPTABLES_SAVE_ON_RESTART="yes”
打开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 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通过easy_install安装South,以便轻松迁移数据库
/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地址,并且您应该看到一个欢迎屏幕!
从这里开始,您可以开始开发您的应用程序,您应该能够启用您的管理员自动发现和设置urls,以便您可以访问管理部分。
发布于 2011-07-30 20:09:58
你的models.py文件里有什么?您的数据库中将需要类似这样的内容。
img = models.ImageField("Foo")其中Foo是存储上传图片的地方。在重新安装PIL之前,请确保已经安装了libjpeg-devel,如果不起作用,请运行
easy_install pil | tee pil.log并把它贴在这里,这样我们就可以进一步帮助你。
https://stackoverflow.com/questions/6880930
复制相似问题