在Vagrant中安装Node、NPM(然后全局安装Grunt和Bower)

7
我一直在关注this gist,这是安装PHP开发的一堆核心依赖项的方法,但是我需要的一个依赖项是在Vagrant中安装Node、NPM(然后全局安装Grunt和Bower),但是我还没有成功。我看到了一些答案,比如this one,但似乎从未完成安装(即我不能安装bower和grunt)。通过apt-get有一个nodejs包可以安装Node(我可以从那里安装NPM),但版本似乎太旧无法支持Bower,所以我回到手动方法。感谢任何帮助。

更新

这是我的bootstraph.sh文件:

#!/usr/bin/env bash

echo ">>> Starting Install Script"

# Update
sudo apt-get update

# Install MySQL without prompt
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'

echo ">>> Installing Base Items"

# Install base items
sudo apt-get install -y curl wget build-essential python-software-properties python g++ make

echo ">>> Adding PPA's and Installing Server Items"

# Add repo for latest PHP
sudo add-apt-repository -y ppa:ondrej/php5

# Add NodeJS repository
sudo add-apt-repository -y ppa:chris-lea/node.js

# Update Again
sudo apt-get update

# Install the Rest
sudo apt-get install -y php5 apache2 libapache2-mod-php5 nodejs php5-mysql php5-curl php5-gd php5-mcrypt php5-xdebug mysql-server

echo ">>> Configuring Server"

# xdebug Config
cat << EOF | sudo tee -a /etc/php5/mods-available/xdebug.ini
xdebug.scream=1
xdebug.cli_color=1
xdebug.show_local_vars=1
EOF

# Apache Config
sudo a2enmod rewrite
curl https://gist.github.com/fideloper/2710970/raw/5d7efd74628a1e3261707056604c99d7747fe37d/vhost.sh > vhost
sudo chmod guo+x vhost
sudo mv vhost /usr/local/bin

# Symlink /var/www to project web root
sudo rm -rf /var/www
sudo ln -s /vagrant/ /var/www

# PHP Config
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.ini

sudo service apache2 restart

echo ">>> Installing NPM, Grunt CLI and Bower"

curl https://npmjs.org/install.sh | sh
sudo npm install -g grunt-cli bower

echo ">>> Installing Composer"

# Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

“无法安装 bower 和 grunt” 是什么意思?错误来自哪里,是什么错误?我怀疑你通过从存储库获取 NPM 并手动运行的方式混淆了 NPM 安装,但这不是问题的根本原因(因为 chris-lea 通常是 node 的最新稳定版本)。 - jfmatt
实际上,补充一下,NPM的install.sh没有以root身份运行,这可能是个问题。 - jfmatt
2个回答

5
我找到了一个很好的解决方案:

找到了以下可行的解决方案:

#!/usr/bin/env bash

echo "--- Let's get to work. Installing now. ---"

echo "--- Updating packages list ---"
sudo apt-get update

echo "--- MySQL time ---"
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'

echo "--- Installing base packages ---"
sudo apt-get install -y vim curl python-software-properties

echo "--- Updating packages list ---"
sudo apt-get update

echo "--- We want the bleeding edge of PHP ---"
sudo add-apt-repository -y ppa:ondrej/php5

echo "--- Updating packages list ---"
sudo apt-get update

echo "--- Installing PHP-specific packages ---"
sudo apt-get install -y php5 apache2 libapache2-mod-php5 php5-curl php5-gd php5-mcrypt mysql-server-5.5 php5-mysql git-core

echo "--- Installing and configuring Xdebug ---"
sudo apt-get install -y php5-xdebug

cat << EOF | sudo tee -a /etc/php5/mods-available/xdebug.ini
xdebug.scream=1
xdebug.cli_color=1
xdebug.show_local_vars=1
EOF

echo "--- Installing node.js ---"
sudo apt-get update
sudo apt-get install -y  python g++ make
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install -y  nodejs

echo "--- Installing Ruby ---"
\curl -L https://get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
rvm requirements
rvm install ruby
rvm use ruby --default
rvm rubygems current

echo "--- Enabling mod-rewrite ---"
sudo a2enmod rewrite

echo "--- Setting document root ---"
sudo rm -rf /var/www
sudo ln -fs /vagrant/public /var/www


echo "--- Turn on errors ---"
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.ini

sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

echo "--- Restarting Apache ---"
sudo service apache2 restart

echo "--- Install Composer (PHP package manager) ---"
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# Laravel stuff here, if you want

echo "--- All done, enjoy! :) ---"

来源: https://github.com/JeffreyWay/Vagrant-Setup

这是一个关于IT技术的内容。请您详细查看以上链接,里面有更加丰富的信息。

2
我们使用 n 来管理我们的 Vagrant VMs 和云计算平台上的 node.js 版本。我们使用 Ansible 来进行安装管理,但也可以轻松使用 bash 实现,类似于如下命令:
# Install n
n_directory='/opt/n'
git clone https://github.com/visionmedia/n.git $n_directory
cd $n_directory
make install

# Install node.js/npm using n
node_version='0.10.24'
n $node_version

# Install the global dependencies
npm install -g grunt-cli bower

这取决于在$PATH上可用的nnpm

谢谢 - 看起来我可以使用这里的第一个选项安装Node,但是安装Grunt-CLI和Bower似乎没有从我的站点根目录读取(认为符号链接可能有问题)。我已经在我的原始问题中更新了我的.sh文件。谢谢! - Zach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接