2012-03-30 43 views
16

Tôi muốn triển khai dự án Django của mình lên máy chủ EC2. Tôi đã cài đặt mod_wsgi.Tôi nhận được lỗi "Lệnh không hợp lệ" WSGIScriptAlias ​​'"khi khởi động Apache

Và cấu hình như trong hướng dẫn của django.

Tôi nhận được như sau:

Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration 

lý do là gì? mod_wsgi không được cài đặt đúng?

LoadModule wsgi_module  libexec/httpd/mod_wsgi.so 
LoadModule alias_module libexec/httpd/mod_alias.so 


WSGIScriptAlias//usr/local/apache2/htdocs/mysite/mysite/wsgi.py 
WSGIPythonPath /usr/local/apache2/htdocs/mysite/mysite 


<Directory /path/to/mysite.com/mysite> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 
+0

Làm cách nào để bạn có thể mong đợi bất kỳ ai giúp bạn dựa trên thông tin này. – Marcin

+0

Bạn có chắc chắn rằng người dùng Apache chạy như đã đọc quyền trên 'mod_wsgi.so'? –

Trả lời

13

Lỗi này chỉ ra rằng mod_wsgi không được tải vào Apache.

Trong tập tin những gì là:

LoadModule wsgi_module  libexec/httpd/mod_wsgi.so 

Bạn có cho phép các module mod_wsgi với lệnh quản lý distro Linux thích hợp để nó sẽ được nạp nếu bạn sử dụng các gói nhị phân distro cho mod_wsgi?

+1

Đối với tôi, nó hoạt động bằng cách phát lệnh sau: sudo a2enmod wsgi (http://stackoverflow.com/a/20627328/811335) –

38

Vấn đề là mod_wsgi chưa được cài đặt đúng cách.

Giải pháp (sử dụng Apache 2):

  1. cài đặt Apache:

    $ sudo apt-get install apache2 
    
  2. cài đặt libapache2-mod-wsgi:

    $ sudo apt-get install libapache2-mod-wsgi 
    

Và điều này sẽ làm việc tốt.

+0

tại sao libapache2-mod-wsgi không có trong tài liệu chính thức? cảm ơn rất nhiều @om choudhary – brennan

0

chỉ để thêm, Làm thế nào tôi giải quyết vấn đề của tôi nếu bạn không biết vị trí của các module chỉ cần tìm kiếm cho họ

locate mod_alias.so 

sau đó bạn có thể nhận được kết quả như

/usr/lib/apache2/modules/mod_alias.so 

thì bạn có thể thêm vị trí đó vào tệp cấu hình của mình

LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so 
1

Tôi chỉ gặp phải vấn đề rất giống nhau trên openSUSE 12.2, với apache 2.2.

Ngay cả khi wsgi được cài đặt, bạn cũng nên kiểm tra xem nó đã được kích hoạt chưa. Những gì tôi có nghĩa đây là:

#outputs a list of registered modules 
/usr/sbin/httpd2 -M 

Nếu wsgi_module (shared) không xuất hiện, thêm wsgi vào biến APACHE_MODULES, bên trong tập tin /etc/sysconfig/apache2

Bằng cách này tôi có thể tránh được hoàn toàn các dòng LoadModule từ httpd.conf.

Các vấn đề liên quan