【问题标题】:How to keep npm / pip / etc packages safe when they are down / deleted如何在 npm / pip / etc 包关闭/删除时保持安全
【发布时间】:2025-12-01 11:45:01
【问题描述】:

使用 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

即应用程序配置:

command: 'yum install -y nodejs npm --enablerepo=epel'
command: 'npm install -g cssmin'
command: 'npm install -g uglify-js'

希望你能指点我一些好文章,因为我找不到它们。

【问题讨论】:

  • 对于 npm,您可以随时将node_modules 目录签入到修订控制系统。它不漂亮,但它有效。

标签: python node.js deployment npm pip


【解决方案1】:

最后我做了以下事情:

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

【讨论】: