2011-07-30 9 views
2

私はcentos 5を持っていて、Python Imagingライブラリを起動しようとしています。 libjpeg、libjpeg-develなどをインストールしましたが、まだjpegイメージを私のdjangoサイトにアップロードできません。libjpegのPythonイメージングライブラリのエラー

私は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 
-------------------------------------------------------------------- 

任意のアイデアは?

おかげ

+1

のかについてより正確にしてください問題を確認するための手順と、エラートレースバックが表示されます。 –

答えて

0

あなたのmodels.pyファイルに何ですか?あなたのデータベースには、このようなものが必要です。

img = models.ImageField("Foo") 

ここで、Fooはアップロードされた画像を保存する場所です。 あなたはPILを再インストールする前にインストールのlibjpeg-develのを持っていることを確認し、問題が解決しない場合は、私たちはさらにあなたを助けることができる

easy_install pil | tee pil.log 

を実行し、それをここに投稿してください。

2

使用している別のバージョンのlibjpegがインストールされていないことを確認してください。確認するには、

lsof | grep libjpeg 
1

私は同じ問題があり、インストール手順を段階的に文書化しました。それはかなり長いものです:my blogで見つけることができます。それは、以下をお届けします

  • 作業コピー
  • ジャンゴ
  • PIL
  • イメージング
  • のlibjpeg
  • mysqlの
  • gitの
  • のapache
  • のmod_wsgi
  • のCentOS 5.4

にeasy_installを

  • ピップ
  • ジャンゴ - imagekit
  • CDNストレージは、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のような別のデータベースを使用している場合は、それらのファイルを今すぐインストールする必要があります。また、これらはあなたのWebサーバに必要な唯一のパッケージではないことに注意してください。これはちょうどあなたのdjangoアプリケーションを動作させるためには最小限にとどめるべきです。

    新しいユーザーを追加

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

    それはあなたがあなたのユーザーに変更することができますここからのルートALL =(ALL)ALL ユーザー名を追加し、」ALL

    をALL =(ALL)を読み取りニアライン77 rootアカウントをそのままにしておきます。 アイテムの一部は実行しないことが判明した場合、あなたがsudoコマンドを使用する必要があります

    何かを壊すことなく、CentOSの5.4に取り組んでのPython 2.6を取得する

    にはPython 2.4の側面に沿ってトリックをPythonの2.6をインストールしていますこれをデフォルトのPython 2.4の横にインストールします。重要なCentOSモジュールには2.4が必要なので、デフォルトのPython 2.4を更新しないでください。これを行うには、Pythonを/opt/python2.6にインストールするように設定します。この手順を実行する前に、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 ~ 
    

    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を使用できることを確認します。また、yumを使用してPython 2.4とPython 2.6との間に矛盾がないかどうかをテストします。問題がある場合は、シンボリックリンクを再確認し、/ usr/bin/pythonまたは/usr/bin/python2.4と競合していないことを確認してください。

    /sbin/ldconfig -v 
    python -V 
    yum info httpd 
    

    以前にsetuptoolsのインストールが、パッケージが/opt/python2.6にインストールされているように、あなたは2.6のために再度実行する必要があります場合はsetuptoolsの、MySQLの拡張、とDjango 1.1

    をインストールします。 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プロジェクトにはこれに関する良いチュートリアルがあります。この手順は非常に重要です。 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 .. 
    

    mod_wsgiモジュールをロードするには、Apache httpd.confを編集する必要があります。これが完了したら、Apacheを再起動してください。

    vi /etc/httpd/conf/httpd.conf 
    LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so 
    line 787 
    AddHandler wsgi-script .wsgi 
    

    モジュールは

    /etc/init.d/httpd restart 
    

    があなたのバーチャルホストのための別のディレクトリを作成してロードされた後、あなたのApacheを再起動していることを確認し

    私は別々のディレクトリにすべての私のバーチャルホストを収容するよう

    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() 
    

    個人用サイト

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

    http://mikecantelon.com/story/installing_django_on_centos_5

    スタートのMySQLサーバ

    0で

    を.python-卵のディレクトリを作成し、ファイル

    を保存

    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 --user=root mysql 
    CREATE USER 'webdev'@'localhost' IDENTIFIED BY 'password'; 
    GRANT ALL PRIVILEGES ON *.* TO 'webdev'@'localhost' 
    IDENTIFIED BY 'password' WITH GRANT OPTION; 
    
    と設定MySQLをインストールし

    /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 
    

    イメージングを使用するために、PIPをインストール

    http://athenageek.wordpress.com/2009/06/09/easy_install-pil-not-so-easy/ 
    

    CentOSの

    にPILのインストール

    これは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/ 
    

    構成するために必要とされるよう

    /opt/python2.6/bin/django-admin.py startproject mysite 
    

    は、プロジェクトのログディレクトリを作成してDjangoのプロジェクトを作成し、あなたの/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> 
    

    Include conf/vhosts/*.conf 
    

    WSGISocketPrefix /var/run/wsgi 
    

    必ずホスト名は、Apacheのconfの1に/ etc/httpdの/ confに等しくあることを確認し、ファイルのhttpd.confの末尾にWSGISocketPrefixを追加する仮想ホストに設定ファイルを含めます/ httpd。

    hostname "new_name" 
    

    が権限に

    chcon -R -h -t httpd_sys_content_t /www/django_test1/mysite 
    
    私はSELinuxをオフにする必要がありましたので、私は

    vi /etc/selinux/config 
    

    SELINUX=disabled 
    

    を設定し十分この波平を見つけた

    を付けて実行して、confに 他の変更

    IPTABLES_SAVE_ON_STOP = "yes" を IPTABLES_SAVE_ON_RESTART = "はい":ブログによると必ず以下の変数が「はい」に設定されていることを確認し 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 
    

    をご-Indexesを削除

    オープン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に/サービスのiptablesは にsudo/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 
    

    Rackspaceの/ 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を設定する必要があります。

  • +0

    可能であれば、あなたのブログエントリの簡単な要約を後世のためにここに投稿してください。あなたのサイトが将来ダウンしてもこの回答に価値があるようにしてください。 –

    +0

    Thans Chris、できるだけコピーして貼り付けます。 – ApPeL

    0

    これは私のため http://t.co/JfOC1iRi

    を働いて、きれい以下を実行してください、macportからすべての前提条件をインストールした後、PILの再構築を行うには:

    $ python setup.py clean 
    $ python setup.py build_ext -i 
    
    関連する問題