Ubuntu'da Python için Mod_WSGI nasıl kurulur


25

Ubuntu kutumda MOD_WSGI ayarını yapmaya çalışıyorum. Http://ubuntuforums.org/showthread.php?t=833766 adresinde bulduğum aşağıdaki adımları izlemem gerektiğini söyleyen adımlar buldum.

  1. sudo apt-get yüklemek libapache2-mod-wsgi
  2. sudo a2enmod mod-wsgi
  3. sudo /etc/init.d/apache2 restart
  4. sudo gedit / etc / apache2 / sites kullanılabilir / varsayılan ve Dizini güncelle
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews ExecCGI

  AddHandler cgi-script .cgi
  AddHandler wsgi-script .wsgi

  AllowOverride None
  Order allow,deny
  allow from all
</Directory>
  1. sudo /etc/init.d/apache2 restart
  2. İle test.wsgi oluşturuldu

    def application(environ, start_response):
        status = '200 OK' 
        output = 'Hello World!'    
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
    
        return [output]
    

Adım 2 başarısız çünkü apt-get bulunsa bile mod-wsgi bulamadığını söylüyor. Adımları devam edersem python uygulaması tarayıcıda sadece düz metin olarak gösterilir.

Yanlış yaptığım herhangi bir fikrin var mı?


EDIT: sorulan soruların sonuçları

automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                   Version                                Description
+++-======================================-======================================-============================================================================================
ii  libapache2-mod-wsgi                    2.5-1                                  Python WSGI adapter module for Apache
automatedtester@ubuntu:~$ dpkg -s libapache2-mod-wsgi
Package: libapache2-mod-wsgi
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 376
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Architecture: i386
Source: mod-wsgi
Version: 2.5-1
Depends: apache2, apache2.2-common, libc6 (>= 2.4), libpython2.6 (>= 2.6), python (>= 2.5), python (<< 2.7)
Suggests: apache2-mpm-worker | apache2-mpm-event
Conffiles:
 /etc/apache2/mods-available/wsgi.load 06d2b4d2c95b28720f324bd650b7cbd6
 /etc/apache2/mods-available/wsgi.conf 408487581dfe024e8475d2fbf993a15c
Description: Python WSGI adapter module for Apache
 The mod_wsgi adapter is an Apache module that provides a WSGI (Web Server
 Gateway Interface, a standard interface between web server software and
 web applications written in Python) compliant interface for hosting Python
 based web applications within Apache. The adapter provides significantly
 better performance than using existing WSGI adapters for mod_python or CGI.
Original-Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
Homepage: http://www.modwsgi.org/
automatedtester@ubuntu:~$ sudo a2enmod libapache2-mod-wsgi
ERROR: Module libapache2-mod-wsgi does not exist!
automatedtester@ubuntu:~$ sudo a2enmod mod-wsgi
ERROR: Module mod-wsgi does not exist!

RMYates İÇİN DAHA FAZLASI

automatedtester@ubuntu:~$ apache2ctl -t -D DUMP_MODULES
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 python_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK
automatedtester@ubuntu:~$ 

Mod_wsgi, Apache veya Python'u bulamıyor ne?
Sane Dana

1
a2enmod komutu mod_wsgi bulamadı
AutomatedTester

Yanıtlar:



5

Modül aslında ile doğru yüklenip yüklenmediğine bakın:

apache2ctl -t -D DUMP_MODULES

düzgün bir şekilde yüklenmiş gibi görünmüyor
AutomatedTester

4

Görebildiğim kadarıyla, mod_wsgi modülünü size yüklemediniz httpd.conf.

Önce wsgi dosyalarını mods-enabledApache dizinine eklemeyi denerdim .

sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled

Sonra Apache'yi yeniden başlatın ve çalışması gerekir .


2

Öncelikle, WSGI modülünün gerçekten kurulu olduğunu onaylayın :

dpkg -l libapache2-mod-wsgi

Bu isim, sürüm vb. Dahil çıktı vermelidir - ismin solundaki harfleri arayın, bu paketin mevcut durumunu gösterir. Manuel olarak kontrol etmek için, / etc / apache2 / mods-available / dizinine bakın ve hem wsgi.conf hem de wsgi.load sayfasını görmelisiniz . Bunlar varsa, / etc / apache2 / mods-etkin / içinde karşılık gelen sembolik bağlara sahip olmalıdırlar .

Ya belirlesin değil apache tercüman bulamazsanız size apache aracılığıyla piton kodunu yorumlamak olamaz -, öncelikle bu sabitleme başlamak bulunmamakta. Ayrıca, yapılandırdığınız AddHandler yönergeleri verilen test.py betiğiniz çalışmaz - bu yönerge apache'ye belirli bir uzantıdaki dosyaları ilgili işleyiciye aktarmasını söyler . Komut dosyanızı test.wsgi yapın veya AddHandler yönergesini değiştirin .


test.py soruda bir yazım hatası oldu. Ben test.wsgi koymak istedim.
AutomatedTester

İyi, ancak yukarıdaki talimatlara göre modülün takılı ve doğru şekilde bağlandığını onayladınız mı?
Zayne S Halsall

Soruya istediğiniz bilgiyi verdim.
AutomatedTester

Tüm bilgiler - dosyalar olmadığını elle kontrol edin wsgi.conf ve wsgi.load içinde / etc / apache2 / mods-available / sembolik bağlantılıdır / etc / apache2 / mods-etkin istendiği gibi. Dizinin basit ve uzun bir listesi yeterli olmalıdır (ör: ls -alh / etc / apache2 / mods-etkin / ).
Zayne S Halsall

1

LoadModule satırını gerçekten mod_wsgi'nin yüklenmesine neden olacak şekilde eklediniz mi? Asıl hata mesajı nedir ve nereden geliyor? Görmek:

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

Düşük seviyeli talimatlar için. İkili paketleri kullandığınız için derlemeyi geçebilirsiniz, ancak yine de mod_wsgi'nin yüklenmesine neden olmanız gerekir. Bunu nerede / nasıl yapabilirsiniz, Linux dağıtımınız tarafından bir dereceye kadar belirlenecek. Bu rehbere göre koşmanız gerekiyor:

sudo a2enmod mod-wsgi
sudo /etc/init.d/apache2 restart

Bunu gerçekten yaptın mı?


DÜZENLE

Sorunuzu tekrar okuduğunuz çok açık. .Wsgi uzantılı dosyaların mod_wsgi tarafından işlendiğini ancak daha sonra bir .py uzantısı verdiğini söylediniz. Bunun yerine .wsgi kullanın.


test.py soruda bir yazım hatası oldu. Ben test.wsgi koymak istedim. A2enmod'u çalıştırdım ama sorumun sonuna koyduğumda mod_wsgi'yi bulamadığını söyledi
AutomatedTester

1

Önce python'unuzun sözdizimine bakabilirsiniz. İşlev tanımından sonra gerçekten 4 boşluk olup olmadığını kontrol edin. Python dosyasını ilk önce terminalden çalıştırarak kontrol edin.

$ python /var/www/py/wsgi_handler.wsgi

daha sonra hiçbir hata görünmezse, web tarayıcısından çalıştırın.

http: // localhost / WSGI /

ve bu arada, apache yapılandırma / virtualhost dosyanız için bir şeyleri kaçırmış gibisiniz. Bunu etiketlerin içine koy

WSGIScriptAlias /wsgi /var/www/py/wsgi_handler.py

Bu arada, wsgi modülünü kurarken apt problemi olmaz. Bunu şimdi test ettim ve web tarayıcımda python komut dosyasını başarıyla çalıştırdım.


0

Bunun alakalı olup olmadığından emin değil, ancak çalıştırdıktan sonra:

apt-get install libapache2-mod-wsgi

... aşağıdaki dosyalar mevcut değildi :

/etc/apache2/mods-available/wsgi.conf
/etc/apache2/mods-available/wsgi.load

Yeniden yüklemek, eksik dosyaları değiştirmedi. Tuhaf! Ancak, purgehile yapmak gibiydi:

apt-get install libapache2-mod-wsgi
apt-get purge libapache2-mod-wsgi
apt-get install libapache2-mod-wsgi

# ls /etc/apache2/mods-available/ | grep wsgi
wsgi.conf
wsgi.load
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.