2009-12-23 42 views
9

Tôi mới sử dụng django. Tôi đã thử điều này nhưng tôi không thể triển khai. Làm thế nào tôi có thể làmTriển khai Django tại alwaysdata.com

#!/usr/bin/python 
import sys 
import os 

base = os.path.dirname(os.path.abspath(__file__)) + '/..' 
sys.path.append(base) 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myfirstapp.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

AddHandler fcgid-script .fcgi 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(adminmedia/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi) 
RewriteRule ^(.*)$ mysite.fcgi/$1 [L] 
+0

cho tôi một ví dụ làm việc – Emrah

+0

Bạn có gặp lỗi không? Bạn đang thiếu một + trên dòng 5, và bạn có nghĩa là "../" thay vì "/ .."? – Seth

Trả lời

21

Đây là alwaysdata wiki entry lập Django với fastcgi. Chỉ từ phía dưới: nó được viết bằng tiếng Pháp.

Vâng, tôi không nói được tiếng Pháp, nhưng những gì nó về cơ bản nói là:

  1. Tạo một thư mục có tên public trong thư mục của dự án django của bạn.
  2. Trong thư mục đó tạo ra các tập tin django.fcgi với nội dung sau:

    #!/usr/bin/python 
    import os, sys 
    
    _PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    sys.path.insert(0, _PROJECT_DIR) 
    sys.path.insert(0, os.path.dirname(_PROJECT_DIR)) 
    
    _PROJECT_NAME = _PROJECT_DIR.split('/')[-1] 
    os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME 
    
    from django.core.servers.fastcgi import runfastcgi 
    runfastcgi(method="threaded", daemonize="false") 
    
  3. Tiếp theo, tạo một .htaccess trong thư mục public với nội dung sau:

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L] 
    
  4. Nếu bạn' lập kế hoạch bao gồm giao diện quản trị django, tạo liên kết tượng trưng này trong thư mục public của bạn:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media 
    
  5. Trong khi kết thúc phân cấp cây thư mục của bạn bằng cách nào đó sẽ giống như thế này:

    myproject/ 
        __init__.py 
        manage.py 
        public/ 
         django.fcgi 
         .htaccess 
         media/ 
        settings.py 
        urls.py 
        myapp/ 
         views.py 
         models.py 
    

Hope this helps. Tôi đã nói chuyện với quản trị viên, và anh ấy nói anh ấy sẽ sớm cung cấp một wiki tiếng Anh. Hãy hy vọng điều này sẽ xảy ra bất cứ lúc nào sớm.


UPDATE: Có một English wiki article now.

+0

Đã hoạt động! Xin chúc mừng trang Django hỗ trợ đầu tiên của bạn. cảm ơn ... – Emrah

+5

+1 để cung cấp câu trả lời về hệ thống có tài liệu được viết bằng ngôn ngữ bạn không nói. Có lẽ nên có một huy hiệu mới cho điều này, chỉ cần không chắc chắn những gì nó sẽ được gọi. Đa ngôn ngữ-không phiên dịch-hoang dã-ass-đoán-hackage? Không, quá lâu. :-) –

+2

AlwaysData ngày càng trở nên quốc tế hàng ngày. Tôi nghĩ rằng họ sẽ rất hạnh phúc nếu bạn sẵn sàng trợ giúp cho Wiki tiếng Anh (đó là một wiki để bạn có thể đóng góp). Nếu tài liệu là bằng tiếng Pháp, hỗ trợ là worldclass :) – luc

6

Bạn đang cố gắng để kết hợp hai phương pháp tích hợp máy chủ web khác nhau: fcgi (cgi nhanh) và wsgi.

Đoạn mã đầu tiên của bạn dành cho giao diện wsgi với máy chủ web và là phương pháp được khuyến nghị để tích hợp Django với Apache. Tài nguyên rất tốt (bao gồm các ví dụ) để giúp bạn thiết lập chính xác này có thể được tìm thấy trong tài liệu chính thức Django How to use Django with Apache and mod_wsgi và tài liệu mod_wsgi Integration with Django

Đoạn thứ hai (với dòng AddHandler) là dành cho fcgi. Đây là loại giao diện thường được sử dụng để giao diện Django với các máy chủ web lighttpd và nginx. Tài nguyên để thiết lập giao diện fcgi có thể tìm thấy trong tài liệu chính thức của Django How to use Django with FastCGI, SCGI, or AJP.

Vì có vẻ như alwaysdata.com chỉ sử dụng giao diện FastCGI (fcgi) mà bạn đang mắc kẹt với phương pháp này. Dường như có những ví dụ trên trang wiki của họ Déployer une application Django và Particulary bạn sẽ cần phải thay thế đầu tiên (wsgi) đoạn mã của bạn với điều này:

#!/usr/bin/python 
import os, sys 

_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
sys.path.insert(0, _PROJECT_DIR) 
sys.path.insert(0, os.path.dirname(_PROJECT_DIR)) 

_PROJECT_NAME = _PROJECT_DIR.split('/')[-1] 
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method="threaded", daemonize="false") 
1

Chúng tôi đã nhận bây giờ (kể từ khi một vài tháng) một bài báo bằng tiếng Anh: Django on alwaysdata.com

Kính trọng,

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