2012-06-08 18 views
29

ड्रीमहोस्ट छोटी परियोजना के लिए एक महान मेजबान है। और यह Django दोस्ताना होस्टिंग भी है। अजगर और Django संस्करण को छोड़कर सब कुछ अच्छा है तारीख से थोड़ा सा है। वैसे यह यह जानने के लिए काम का एक पूरा दिन है कि पाइथन 2.7.3, डैंगो 1.4 को सपनेहॉस्ट पर कैसे अपडेट करें और मैं वास्तव में इसे ढूंढने के साथ साझा करना चाहता हूंनया डीजेगो और पायथन 2.7 अपडेट करें। * ड्रीमहोस्ट (यात्री के साथ) वर्चुअलएन्व के साथ

उत्तर

48

मेरे पास वर्तमान में निजी सर्वर, एक खोल खाता और कुछ भाग्य है । तो यहाँ मैं क्या कर रहा है: अपने होस्ट को

  1. SSH अजगर

    cd ~ 
    mkdir tmp 
    cd tmp 
    wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz 
    tar zxvf Python-2.7.3.tgz 
    cd Python-2.7.3 
    ./configure --enable-shared --prefix=$HOME/Python27 --enable-unicode=ucs4 
    make 
    make install 
    
  2. कॉन्फ़िगर प्रणाली हमारे नए अजगर का उपयोग करने के उन्नयन के लिए। ओपन ~/.bashrc और निम्न पंक्ति

    export PATH="$HOME/Python27/bin:$PATH" 
    export LD_LIBRARY_PATH=$HOME/Python27/lib 
    
    #save it and run 
    source ~/.bashrc 
    

    आप अब which python

  3. के साथ अपने अजगर संस्करण की जांच कर सकते हैं जोड़ने के easy_install स्थापित करें, pip

    cd ~/tmp 
    wget http://peak.telecommunity.com/dist/ez_setup.py 
    python ez_setup.py 
    easy_install pip 
    # Or even shorter 
    wget https://bootstrap.pypa.io/get-pip.py 
    python get-pip.py 
    
  4. स्थापित virtualenv

    pip install virtualenv 
    virtualenv $HOME/<site>/env 
    #Switch to virtualenv 
    source $HOME/<site>/env/bin/activate 
    

    आप भी bashrc

    export PATH="$HOME/<site>/env/bin/:$PATH" 
    source ~/.bashrc 
    
  5. को env पथ में जोड़ सकते हैं Django और बाकी

    pip install django 
    pip install .... 
    pip install .... 
    pip install .... 
    
  6. सब कुछ प्रोजेक्ट बना स्थापित सामग्री

    निम्नलिखित के साथ

    cd $HOME/<site>/ 
    python $HOME/<site>/env/bin/django-admin.py startproject project 
    
  7. HOME/<site>/ में passenger_wsgi.py बनाएं

    import sys, os 
    cwd = os.getcwd() 
    sys.path.append(cwd) 
    sys.path.append(cwd + '/project') #You must add your project here or 500 
    
    #Switch to new python 
    #You may try to replace $HOME with your actual path 
    if sys.version < "2.7.3": os.execl("$HOME/<site>/env/bin/python", 
        "python2.7.3", *sys.argv) 
    
    sys.path.insert(0,'$HOME/<site>/env/bin') 
    sys.path.insert(0,'$HOME/<site>/env/lib/python2.7/site-packages/django') 
    sys.path.insert(0,'$HOME/<site>/env/lib/python2.7/site-packages') 
    
    os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 
    import django.core.handlers.wsgi 
    application = django.core.handlers.wsgi.WSGIHandler() 
    

या इस तरह

import sys, os 

BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 

sys.path.append(os.path.join(BASE_DIR)) #You must add your project here or 500 

#Switch to new python 
#You may try to replace $HOME with your actual path 
PYTHON_PATH = os.path.join(BASE_DIR, 'env', 'bin', 'python') 
if sys.executable != PYTHON_PATH: 
    os.execl(PYTHON_PATH, "python2.7.12", *sys.argv) 

आप Django 1.7 का उपयोग कर रहे हैं, तो

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
और पिछले दो लाइन की जगह
  1. का आनंद लें: डी

अब वापस आ जाएगी sys.executable Dreamhost पर अजगर की

नया संस्करण ताकि आप इस passenger_wsgi की मेरी संस्करण

import sys, os 

VIRTUAL_ENV_PYTHON = 'venv-python' # Python > 2.7.6 dreamhost not return sys.executable 
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 

def is_venv_python(): 
    if len(sys.argv) > 0: 
     last_item = sys.argv[len(sys.argv)-1] 
     if last_item == VIRTUAL_ENV_PYTHON: 
      return True 
    return False 

sys.path.append(os.path.join(BASE_DIR)) #You must add your project here or 500 

#Switch to new python 

PYTHON_PATH = os.path.join(BASE_DIR, 'env', 'bin', 'python') 
if not is_venv_python(): 
    os.execl(PYTHON_PATH, "python2.7.12", *sys.argv + [VIRTUAL_ENV_PYTHON]) 

sys.path.insert(0, os.path.join(BASE_DIR, 'env', 'bin')) 
sys.path.insert(0, os.path.join(
    BASE_DIR, 'env', 'lib', 'python2.7', 'site-packages' 
)) 
Ubuntu 12.04 करने के लिए
+1

अच्छा गाइड था, साझा करने के लिए धन्यवाद। –

+4

यह बहुत अच्छा होगा अगर किसी को एक स्वचालन स्क्रिप्ट –

+0

लिख सकते हैं हम env के अंदर कोई प्रोजेक्ट निर्देशिका नहीं बनाई है, क्या हमने? sys.path.insert (0, '$ HOME//env/project') प्राप्त करने से आपके पास यात्री/wsgi.py को आयात करने के बाद भी एक त्रुटि हुई) –

1

वर्तमान में Dreamhost अद्यतन सर्वर है, और मैं एक त्रुटि मिल गया है:

Import Error: <path-to-python>/_io.so undefined symbol: PyUnicodeUCS2_Decode 
कस्टम पायथन संकलित करने और "पायथन ez_setup" चलाने के बाद

।py "

समाधान कदम पर --enable-यूनिकोड = ucs4 साथ अजगर संकलित करने के लिए 1

./configure --enable-shared --prefix=$HOME/Python27 --enable-unicode=ucs4 
+0

धन्यवाद। मैं अपने जवाब –

+1

अद्यतन करना चाहिए * नहीं पता * यह भी कहा जाना चाहिए, "खुश होस्टिंग" == 2.7.3, लेकिन Django पर कि वर्तमान डिफ़ॉल्ट अजगर संस्करण अभी भी पुरानी है, इसलिए मैं virtualenv बनाने के लिए अपने चरणों का उपयोग करें। यह बढ़िया काम करता है! धन्यवाद! –