如何在 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"
使用 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"