cloudfoundry添加Django的支持

本文通过给cloudfoundry添加Django的支持,简要介绍添加Framework的方法.(如何添加Runtime请阅读 http://oldfritters.iteye.com/blog/1867876)

 

首先,向blobstore中添加Django以及相关的包,方法同前文中添加Python.

  

 

 

其次,添加package

   packaging:cf-release/packages/dea_python27/packaging

 

 

Packaging代码   收藏代码
  1. # abort script on any command that exit with a non zero value  
  2. set -e  
  3. echo "Setup python2.7.4"  
  4. tar xzvf python/python-2.7.4.tgz  
  5. (  
  6.   cd Python-2.7.4  
  7.   ./configure --prefix=${BOSH_INSTALL_TARGET}   
  8.   make  
  9.   make install  
  10. )  
  11.   
  12. echo "Setup Django"  
  13. tar xzvf python/Django-1.4.5.tar.gz  
  14. (  
  15.   cd Django-1.4.5  
  16.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  17. )  
  18.   
  19. echo "Setup Setuptools"  
  20. tar xzvf python/setuptools-0.6c11.tar.gz  
  21. (  
  22.   cd setuptools-0.6c11  
  23.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  24. )  
  25.   
  26. echo "Setup pip"  
  27. tar xzvf python/pip-1.3.1.tar.gz  
  28. (  
  29.   cd pip-1.3.1  
  30.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  31. )  
  32.   
  33. echo "Setup gunicorn"  
  34. tar xzvf python/gunicorn-0.17.4.tar.gz  
  35. (  
  36.   cd gunicorn-0.17.4  
  37.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  38. )  
  39.   
  40. echo "Setup mysql-connector-python"  
  41. tar xzvf python/mysql-connector-python-1.0.10.tar.gz  
  42. (  
  43.   cd mysql-connector-python-1.0.10  
  44.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  45. )  
  46.   
  47. echo c1oudc0w | sudo -S apt-get -y update  
  48. echo c1oudc0w | sudo -S apt-get -y --fix-missing install libmysqlclient-dev  
  49.   
  50. echo "Setup MySQL-python-1.2.4b4.tar"  
  51. tar xzvf python/MySQL-python-1.2.4b4.tar.gz  
  52. (  
  53.   cd MySQL-python-1.2.4b4  
  54.   echo c1oudc0w | sudo -S ${BOSH_INSTALL_TARGET}/bin/python setup.py install  
  55. )  
 

 

 

      spec:cf-release/packages/dea_python27/spec

 

Spec代码   收藏代码
  1. ---  
  2. name: dea_python27  
  3. dependencies:  
  4. files:  
  5. - python/python-2.7.4.tgz  
  6. - python/setuptools-0.6c11.tar.gz  
  7. - python/pip-1.3.1.tar.gz   
  8. - python/MySQL-python-1.2.4b4.tar.gz  
  9. - python/mysql-connector-python-1.0.10.tar.gz  
  10. - python/gunicorn-0.17.4.tar.gz  
  11. - python/Django-1.4.5.tar.gz  
 

 

 

 

blob中添加依赖包: cf-release/config/blob.yml

Yml代码   收藏代码
  1. ---  
  2. python/setuptools-0.6c11.tar.gz:  
  3.   object_id: 636b1c0e-d177-45ed-901f-b06e28485a2b  
  4.   sha: 8d1ad6384d358c547c50c60f1bfdb3362c6c4a7d  
  5.   size: 256862  
  6. python/pip-1.3.1.tar.gz:  
  7.   object_id: d86a4778-82ba-420d-9204-5923a71fe7ed  
  8.   sha: 9c70d314e5dea6f41415af814056b0f63c3ffd14  
  9.   size: 247594  
  10. python/MySQL-python-1.2.4b4.tar.gz:  
  11.   object_id: 8b5cf796-9632-4a33-aed9-4ea64845a4fe  
  12.   sha: 1801dba46f45a8596d17424bf07a747c7bac841f  
  13.   size: 79704  
  14. python/mysql-connector-python-1.0.10.tar.gz:  
  15.   object_id: ba10a05a-ca71-41cf-bf5a-3bc0558bd984  
  16.   sha: 31d26132f8089b25aed6255b835c8df60fe61c9a  
  17.   size: 234122  
  18. python/gunicorn-0.17.4.tar.gz:  
  19.   object_id: ff817558-6c7a-426f-861b-492ef38ea2e2  
  20.   sha: ca4c95a236fd90dcf46ffa35c150d9564336e150  
  21.   size: 372737  
  22. python/python-2.7.4.tgz:  
  23.   object_id: 94ec890f-ae43-455c-932d-49aa9d34e462  
  24.   sha: 2283858b832fc391b8e96bb600e0b39e52ae97bd  
  25.   size: 14489063  
  26. python/Django-1.4.5.tar.gz:  
  27.   object_id: 354c918e-fb75-431b-81e4-dacd1b7cbdf6  
  28.   sha: 1bfaa4643c6775fbf394137f1533659be45441e7  
  29.   size: 7735582  

 

添加runtime支持: cf-release/jobs/cloud_controller/templates/runtimes.yml

 

Yml代码   收藏代码
  1. ---  
  2. python27:  
  3.   description: Python  
  4.   version: "2.7.4"  
  5.   executable: /var/vcap/packages/dea_python27/bin/python  
  6.   soft_link_folder: python/bin  
  7.   soft_link_targets:  
  8.     executable: /var/vcap/packages/dea_python27/bin/python  
  9.     gunicorn_django: /var/vcap/packages/dea_python27/bin/gunicorn_django  
  10.     django: /var/vcap/packages/dea_python27/bin/django-admin.py  
  11.     gunicorn: /var/vcap/packages/dea_python27/bin/gunicorn  
  12.     gunicorn_paster: /var/vcap/packages/dea_python27/bin/gunicorn_paster  
  13.   soft_links:  
  14.     executable: python/bin/python  
  15.     gunicorn_django: python/bin/gunicorn_django  
  16.     django: python/bin/django  
  17.     gunicorn: python/bin/gunicorn  
  18.     gunicorn_paster: python/bin/gunicorn_paster  
  19.   staging: /var/vcap/packages/ruby/bin/ruby stage  
  20.   version_output: 2.7.4  
  21.   version_flag: "-c 'import platform; print platform.python_version()'"  
  22.   environment:  
  23.     PATH: /var/vcap/packages/ruby/bin:/var/vcap/packages/dea_python27/bin:/var/vcap/packages/imagemagick/bin:$PATH  
  24.     LD_LIBRARY_PATH: '/var/vcap/packages/mysqlclient/lib/mysql:/var/vcap/packages/sqlite/lib:/var/vcap/packages/libpq/lib:/var/vcap/packages/imagemagick/lib:$LD_LIBRARY_PATH'  
  25.   debug_modes:  
  26.     - run  
  27.     - suspend  
  28.   status:  
  29.     name: current  
  30.   series: python27  
  31.   category: python  

 

添加Django支持: cf-release/jobs/cloud_controller/templates/django.yml

Yml代码   收藏代码
  1. ---  
  2. name: django  
  3.   
  4. runtimes:  
  5.   - python27:  
  6.       default: true  
  7. detection:  
  8.   - manage.py: true  

 

 

 修改代码:cf-release/src/dea/lib/dea/agent.rb

Ruby代码   收藏代码
  1.  def stage_app_dir(bits_file, bits_uri, sha1, tgz_file, instance_dir, runtime)  
  2.     ......  
  3.     FileUtils.rm_f(tgz_file) unless @disable_dir_cleanup  
  4.     add_runtime_soft_links instance_dir,runtime if runtime['soft_link_tagets'] && runtime['soft_links'] && runtime['soft_link_folder']  
  5.     bind_local_runtime(instance_dir, runtime)  
  6.     @logger.debug("Took #{Time.now - start} to stage the app directory")  
  7.     true  
  8.   end  
  9.     
  10. #此方法是额外添加的  
  11.    def add_runtime_soft_links instance_dir, runtime  
  12.     FileUtils.mkdir_p [instance_dir, runtime['soft_link_folder']].join('/')  
  13.     runtime['soft_link_targets'].each{|key| FileUtils.ln_s runtime['soft_link_targets'][key], [instance_dir, runtime['soft_links'][key]].join('/') }  
  14.   end 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值