如何离线安装node.js的nodejs 找不到modulee

用户名:hxl2009
文章数:99
评论数:41
访问量:632645
注册日期:
阅读量:1297
阅读量:3317
阅读量:580721
阅读量:463732
51CTO推荐博文
给开发搞nodejs环境,遇到点问题记录下过程,备忘。
tar zxvf node-v0.8.12.tar.gz
cd node-v0.8.12
./configure --prefix=/usr/local/nodejs
& File &./configure&, line 331
&&& o['default_configuration'] = 'Debug' if options.debug else 'Release'
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ^
SyntaxError: invalid syntax
这个是你的python版本不够或者没有安装
python -V 这里CentOS 5.6是 2.4.3
Python 2.4.3
python 升级请看这篇文章
./configure --prefix=/usr/local/nodejs
& File &../../tools/js2c.py&, line 36, in &module&
&&& import bz2
ImportError: No module named bz2
make[1]: *** [/home/packages/node-v0.8.12/out/Release/obj/gen/libraries.cc]& 1
解决步骤:
yum -y install bzip2*
cd Python-2.7.3/Modules/zlib
./make install
cd Python-2.7.3/
python setup.py install
在编译安装:
./configure --prefix=/usr/local/nodejs
make install
ln -s /usr/local/nodejs/bin/node* /bin/
查看npm是否安装
/usr/local/nodejs/bin/npm -v
安装node modules 安装一些要使用的模块,如express socket.io等
npm install express
创建test.js文件,内容如下:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Nodejs\n');
}).listen(80, &&);
console.log('Server running at );
node test.js&
在浏览器里输入 ,可以看到 &Hello Nodejs&字样,即表示安装成功!本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)Node服务一键离线部署
生产环境的机器,存在各种限制,如无法访问外网,无法通过ssh远程连接。这里笔者简单介绍了下在生产环境下,一键离线部署的经验。
项目测试通过,到了上线部署阶段。部署的机器安全限制比较严格,不允许访问外网。此外,没有对外网开放ssh服务,无法通过ssh远程操作。
针对上面提到的两条限制条件,通过下面方式解决:
无法访问外部网络:将依赖的环境本地下载,打包上传,离线安装;
无法ssh远程操作:将安装/初始化步骤脚本化,安装包交给运维人员,一键部署;
安装包说明
让运维同学将安装包置于/data/my_install下。安装包大致如容如下。其中install_scripts目录中,存放的是部署相关的脚本。
[root@localhost my_install]# tree -L 1
├── control # 各种服务控制脚本
├── install_scripts # 安装脚本
├── node-v5.11.1-linux-x64 # node二进制包
├── npm_modules_global_offline # 全局的npm模块,比如 pm2
├── express_svr # express应用
└── uninstall_scripts # 卸载脚本
部署脚本说明
[root@localhost install_scripts]# tree -L 1
├── install_node.sh # 安装nodejs
├── install_npm_moduels.sh # 安装npm模块
├── install_run_service.sh # 启动服务
├── install_express_svr.sh # 部署express应用
└── install.sh # 部署总入口
看下nodejs安装脚本。为了安装快些,这里我们采用的是编译好的二进制文件。只需要将相关文件拷贝到指定路径即可。
Node安装包说明
以下是nodejs@v5.11.1的目录。
[root@localhost node-v5.11.1-linux-x64]# tree -L 2
├── bin
├── node # node可执行文件
└── npm -& ../lib/node_modules/npm/bin/npm-cli.js # npm可执行文件,其实是个软链接
├── CHANGELOG.md
├── include # 各种包含文件
└── node
├── lib
└── node_modules # npm模块安装目录
├── LICENSE
├── README.md
└── share
├── doc
├── man # 说明文件
└── systemtap
拷贝路径说明如下
拷贝到的路径
./bin/node
/usr/local/bin/node
node可执行文件
/usr/local/bin/node
npm可执行文件,软链接,指向 /usr/local/lib/node_modules/npm/bin/npm-cli.js
./lib/node_modules/
/usr/local/lib/
npm模块安装目录
./include/node
/usr/local/include/
各种包含文件
./share/man/man1/node.1
/usr/local/man/man1/
install_node.sh
[root@localhost install_scripts]# cat install_node.sh
#!/bin/bash
# 安装nodejs
cd /data/my_install/
cd node-v5.11.1-linux-x64/
cp -r ./lib/node_modules/ /usr/local/lib/ # copy the node modules folder to the /lib/ folder
cp -r ./include/node /usr/local/include/ # copy the /include/node folder to /usr/local/include folder
mkdir -p /usr/local/man/man1 # create the man folder
cp ./share/man/man1/node.1 /usr/local/man/man1/ # copy the man file
cp ./bin/node /usr/local/bin/ # copy node to the bin folder
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm ## making the symbolic link to npm
全局npm模块安装
这里我们就用到了pm2,需要全局安装。根据npm全局模块的安装方式,需要分两步
将pm2模块目录拷贝到/usr/local/lib/node_modules下。
在/usr/local/bin/下,建立软链接,指向/usr/local/lib/node_modules/pm2/bin/下的可执行文件。
pm2安装说明
首先,把pm2包下载下来,这步略。我在这里放到了npm_modules_global_offline目录下,以防以后还有其他全部模块要一起安装。
软链接映射关系如下
目标文件路径
源文件路径
/usr/local/bin/pm2
/usr/local/lib/node_modules/pm2/bin/pm2
/usr/local/bin/pm2-dev
/usr/local/lib/node_modules/pm2/bin/pm2-dev
install_npm_moduels.sh
#!/bin/bash
# 安装全局npm模块
cd /data/my_install/
cd npm_modules_global_offline/
cp -rf ./node_modules/* /usr/local/lib/node_modules/
ln -s /usr/local/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
ln -s /usr/local/lib/node_modules/pm2/bin/pm2-dev /usr/local/bin/pm2-dev
Express应用安装
express应用的安装相对比较简单,本地npm install后,连同node_modules目录一起打包即可。
脚本如下,把express_svr拷贝到指定路径即可。
install_express_svr.sh
#!/bin/bash
# 安装express应用
cd /data/my_install/
if [ ! -d "/data/web/express_svr" ]; then
mkdir /data/web/express_svr
cp -rf ./express_svr/* /data/express_svr/
一键部署脚本
其实没那么玄乎,无非就是再写个脚本,统一调用下前面提到的脚本。奏是这么简单。
install.sh:
./install_node.sh
./install_npm_moduels.sh
./install_otc_svr.sh
./install_run_service.sh
./install.sh
进一步完善
上面脚本的缺陷比较明显,没有进度提示,也没有运行状态提示。于是优化一下,虽然也不能算是完善,但相比之前的版本的确会好很多。
#!/bin/bash
commands=(
./install_node.sh "install nodejs"
./install_npm_moduels.sh "install npm modules"
./install_express_svr.sh "install express application"
./install_run_service.sh "start services"
commands_len=${#commands[@]}
for (( i=0; i&$commands_ i=i+2 ))
desc_index=i+1
desc=${commands[$desc_index]}
echo -e $desc" - starts ..."
${commands[$i]}
if [ "$?" ==
"0" ]; then
echo -e $desc" - ok \n"
echo -e $desc" - failed ! \n"
运行看下效果:
install nodejs - starts ...
install nodejs - ok
install npm modules - starts ...
install npm modules - ok
install express application - starts ...
install express application - ok
start services - starts ...
# pm2启动日志,一大坨,这里忽略
start services - ok
一键卸载脚本
从上面的内容可以看到,离线部署的过程,主要包含了几个操作
建立软连接
那么,卸载无非就是上面几个步骤的反操作。脚本大致如下,跟前面的部署脚本其实是一一对应的。这里就不再赘述。
[root@localhost uninstall_scripts]# tree -L 1
├── uninstall_run_service.sh
├── uninstall_node.sh
├── uninstall_npm_modules.sh
├── uninstall_express_svr.sh
└── uninstall.sh
文中提及的node服务离线部署,应该已经可以涵盖大部分的场景,举一反三即可。当然更富在的场景还有,这里就不再展开。
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@ 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
快速、完全托管的TB/PB级数据仓库解决方案,向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更...
充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架,以应用为中心,帮助企业级客户轻松构建并...
服务底层使用经国家密码管理局检测认证的硬件密码机,通过虚拟化技术,帮助用户满足数据安全方面的监管合规要求,保护云...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
MaxCompute75折抢购
Loading...最近我们项目要上,因为项目对安全要求比较高,所以选择了即时通讯云服务器,他们提供了数据服务器让我们自己安装部署。那么问题来了,我们服务器是放在内网,完全无法访问外网,而官方提供的文档都是需要在线安装的,虽然有docker版,可是安装docker也要在线不是,所以无奈只好自己动手了,有些心得,分享给大家。
1, 首先下载所需要的文件
各位可以去nodejs.org下载各版安装文件,但我是雷锋,当然什么都给大家准备好:
雷锋链接: /s/1jHCH2mi 密码: 7bkt
2, 操作步骤
首先把winscp下载安装,用于windows上传文件到centos。
然后将node-v0.10.26-linux-x64.7z 解压后上传至centos目录(如/home)
给目录增加权限:
chmod -R 777 node-v0.10.26-linux-x64
同时加入快速执行指令:
ln -s /home/node-v0.10.26-linux-x64/bin/node /usr/local/bin/node
ln -s /home/node-v0.10.26-linux-x64/bin/npm /usr/local/bin/npm
ln -s /home/node-v0.10.26-linux-x64//lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
然后就可以直接使用node指令和pm2指令了,是不是相当简单。
阅读(...) 评论()Node.js 如何离线安装及应用如何在无外网连接服务器上进行部署? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
离线安装Node.js已经搞定了,可以用.tar包,然后在服务器上进行make && make install,但这种方式需要安装g++等,服务器不一定有安装或者提供权限,有没有别的办法?
部署Node.js应用后,很多时候需要用npm安装不同的module,如何在没有外网连接的服务器上安装?
直接将开发测试服务器下的目录拷贝过去?
谢谢指点。
你试试运行一下 npm install -h 自行选择吧~
如果系统环境基本一样,自己make好了再安装也可以吧?
可以设置下npm全局模块的位置
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的}

我要回帖

更多关于 nodejs npm 离线安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信