2013-03-25 70 views

回答

15

它可能不是對的cPanel運行Django應用的最好的事情,因爲以下的(共同主辦):

  • 大多數共享主機提供商不允許你要安裝的需要編譯自定義庫。但是,只要不需要編譯任何東西(例如Django),您仍然可以創建virtualenvpip安裝軟件包(如Django)
  • 性能。根據我的經驗,可以在共享主機上部署一個簡單的Django應用程序,但它不是非常可靠並且性能不佳。

但是,並不是說這是不可能的。這些粗略的步驟應該足夠準確,以指導您走向正確的道路。我沒有這麼做,所以可能會有錯誤。

  • 首先,你必須有SSH訪問
  • 登錄到您的帳戶,並創建virtualenv中的Django項目

    $ cd ~ 
    $ wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.9.1.tar.gz 
    $ tar -zxvf virtualenv-1.9.1.tar.gz 
    $ python virtualenv-1.9.1/virtualenv.py djangovevn 
    
  • 添加的virtualenv bin文件夾的路徑(內部.bash_profile

    export PATH="/home/<username>/djangovenv/bin:$PATH" # inside .bash_profile 
    
    # activate .bash_profile 
    $ source .bash_profile 
    
  • 然後pip安裝所有你的p項目需要。請確保先激活virtualenv

    $ source ~/djangovevn/bin/activate 
    $ pip install django 
    
  • 像往常一樣配置Django。確保DEBUGFalse

  • 裏面public_html創建index.fcgi。確保使用virtualenv Python路徑。 Django關於這個here的文檔。

    !/home/<username>/djangovenv/bin/python 
    import sys, os 
    
    # add projects directory to the path so that 
    # settings from the project can be imported 
    sys.path.insert(0, "/home/<username>/path/to/project") 
    
    # Switch to the directory of your project # 
    os.chdir("/home/<username>/path/to/project") 
    
    # Set the DJANGO_SETTINGS_MODULE environment variable # 
    os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 
    
    
    # Run the fastcgi instance # 
    from django.core.servers.fastcgi import runfastcgi 
    runfastcgi(method="threaded", daemonize="false") 
    
  • 配置index.fcgipublic_html/.htaccess

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L] 
    
  • 激活FastCGI的

    $ cd ~/public_html 
    $ touch index.fcgi 
    $ chmod 0755 .htaccess 
    $ chmod 0755 index.fcgi 
    
  • 全部完成!

但是這種方法會讓你瘋狂得非常快。 Apache並不是爲此而設計的,這種方法由於某種原因而不受歡迎。這應該是一開始就夠好的了,但是隨着您將獲得更高級的部署Django應用程序,您應該考慮使用其他一些託管提供程序,這樣可以提供更多的靈活性,例如WebFaction或heroku。

+1

請注意,在index.fcgi文件的開始處有一個散列丟失。另外,現在任何人都可以發現這個問題,django.core.servers.fastcgi模塊在版本1.9中從Django中移除(參見[this question](http://stackoverflow.com/questions/35471471))。 – zelanix 2016-08-01 12:02:37

0

Django是一個在Python實例中運行的框架,而不是從Web服務器(如HTML或PHP)提供的一組文件。很有可能您需要另一個託管服務提供商,該服務提供商託管網絡應用程序,比如Heroku

+2

這是不正確的。有FastCGI ... – miki725 2013-03-25 21:41:48

+0

是的,但是這條路線通常會以大量時間來完成,甚至發生。 +1,因爲不是會員鏈接:) – Nathaniel 2013-03-25 21:49:30