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

时间:2015-03-03 19:30:17

标签: python node.js deployment npm pip

使用简单的软件包安装程序(如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'

我希望你能指出一些好文章,因为我无法找到它们。

1 个答案:

答案 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"