使用简单的软件包安装程序(如NPM,PIP等)非常棒。对于我们部署到Amazon Elastic Beanstalk,我们利用这些来使用requirements.txt文件下载/安装所需的软件包并使用.ebextensions / * .config文件。我唯一讨厌的是它让我依赖于那些项目及其托管的服务。如果由于某种原因项目脱机,服务(暂时)关闭/无法访问(在某些地区),我无法继续部署。
将自己与这些服务分离的最佳做法是什么,或者至少有一个退回计划,以便在项目不再可用的情况下继续我的工作。
我的意思是:
即。 requirements.txt:
Django==1.7.1
django-ipware==0.1.0
django-uuidfield==0.5.0
djangorestframework==2.4.4
MySQL-python==1.2.5
django-pipeline==1.4.5
futures==2.2.0
unicodecsv==0.9.4
即。的app.config:
command: 'yum install -y nodejs npm --enablerepo=epel'
command: 'npm install -g cssmin'
command: 'npm install -g uglify-js'
我希望你能指出一些好文章,因为我无法找到它们。
答案 0 :(得分:0)
最后我做了以下事情:
从网站下载Node.JS 使用npm安装yuglify和cssmin并使用'npm pack'创建.tar.gz 我已将这3个zip文件包含在我的部署文件夹中。
然后我创建了一个Bash脚本来手动安装它,这也包含在我的部署中:
#! /bin/bash
# move to .ebextensions
cd deployment
# unzip Node.js + NPM
sudo -s tar -xvzf node-v0.12.0-linux-x64.tar.gz -C /opt/
# Create symbolic links to their location
sudo ln -s /opt/node-v0.12.0-linux-x64/bin/node /usr/bin/node
sudo ln -s /opt/node-v0.12.0-linux-x64/bin/npm /usr/bin/npm
# install cssmin
sudo npm install -g cssmin-0.4.3.tgz
# install uglify
sudo npm install -g uglify-js-2.4.16.tgz
cd ..
我使用我的.ebextensions / * .config脚本来调用它:
container_commands:
01_enable_rootaccess:
command: echo Defaults:root \!requiretty >> /etc/sudoers
05_where_are_we:
command: echo "We are here" $PWD
10_bashin:
command: "bash deployment/install.sh"
90_collectstatic:
command: "python manage.py collectstatic --noinput"