如何在 npm / pip / etc 包关闭/删除时保持安全

How to keep npm / pip / etc packages safe when they are down / deleted

使用 NPM、PIP 等简单的包安装程序非常棒。为了部署到 Amazon Elastic Beanstalk,我们利用这些工具使用 requirements.txt 文件下载/安装所需的包,并使用.ebextensions/*.config 文件。我唯一讨厌的是它让我依赖于那些项目和它们所托管的服务。如果出于某种原因项目离线,服务(暂时)down/unreachable(在某些地区),我无法继续我的部署。

将自己与这些服务分离的最佳实践是什么,或者至少有一个后备计划以在项目不再可用的情况下继续我的工作。

我的意思是:

即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'

我找不到好文章,希望您能指点我。

最后我做了以下事情:

从网站下载 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"