阿里云Ubuntu搭建NodeJs环境
1、nodejs基础安装包安装
在安装nodeJS之前需要安装一些基础软件包,通过XShell登录到阿里云之后,输入命令:
apt-get install python-software-properties python g++ make
系统开始安装。这时有很大的概率出现下面的错误:
Get:1 http://mirrors.aliyun.com/ubuntu/ trusty/main python-pycurl amd64 7.19.3-0ubuntu3 [47.9 kB]
Err http://mirrors.aliyun.com/ubuntu/ trusty-updates/main unattended-upgrades all 0.82.1ubuntu2.2
404 Not Found [IP: 115.28.122.210 80]
Err http://mirrors.aliyun.com/ubuntu/ trusty-updates/universe python-software-properties all 0.92.37.3
404 Not Found [IP: 115.28.122.210 80]
Fetched 47.9 kB in 0s (300 kB/s)
E: Failed to fetch http://mirrors.aliyun.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.82.1ubuntu2.2_all.deb 404 Not Found [IP: 115.28.122.210 80]
E: Failed to fetch http://mirrors.aliyun.com/ubuntu/pool/universe/s/software-properties/python-software-properties_0.92.37.3_all.deb 404 Not Found [IP: 115.28.122.210 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
报告的错误大致就是提示说找不到已经安装包,原因是因为ECS初始化给的系统自带的软件库里面的软件比较陈旧,所以需要更新一下软件库:
apt-get update
之后执行之前的安装命令就可以了!
2、使用apt-get安装nodejs
接着我们查看系统是否已经安装nodejs:
root@iZ23o7w91k2Z:~# node -v
The program 'node' can be found in the following packages:
* node
* nodejs-legacy
Try: apt-get install <selected package>
root@iZ23o7w91k2Z:~#
root@iZ23o7w91k2Z:~#
root@iZ23o7w91k2Z:~# nodejs -v
The program 'nodejs' is currently not installed. You can install it by typing:
apt-get install nodejs
可见目前系统没有安装。在这里需要注意一点:在Ubuntu中apt-get install node
和apt-get install nodejs
是两条完全不同的命令,根据官网说明(https://nodejs.org/en/download/package-manager/),在Ubuntu官方库中Node.js的包名是叫做"nodejs",而包名为“node”的安装包是指的是软件“Amateur Packet Radio "Node" Program”,所以一开始如果你的node命令存在的话,说明你的系统已经安装了Amateur Packet。==而可选的“nodejs-legacy”包也是当时为了防止与“Amateur Packet Radio "Node" Program”冲突而命名的==,不过现在一般都统一为nodejs的包名,apt-get只是安装一个nodejs
二进制,所以你可能需要去使用下面的命令来对node命令做个软链接ln -s /usr/bin/nodejs /usr/bin/node
。
那么我们开始安装nodejs。
2.1、添加nodejs的PPA到Ubuntu下
如果直接使用的是apt-get来安装会导致Nodejs的版本过低,所以我们需要添加Nodejs的PPA库到Ubuntu下:
1 apt-get install software-properties-common 2 apt-add-repository ppa:chris-lea/node.js 3 apt-get update
如果提示apt-add-repository没有的话需要安装: software-properties-common 之后再开始安装。
2.2、安装Nodejs
1apt-get install nodejs 2apt-get install npm
如果你在安装npm的时候报错:
The following packages have unmet dependencies:
npm : Depends: nodejs but it is not going to be installed
那么表明你目前安装的node版本>0.10.0
,此时的nodejs安装都是已经包含了npm的,所以无需再单独安装npm了。
此时的版本是:
2.3、升级Nodejs到最新稳定版本
因为我们现在代码中需要使用ES6特性,所以需要将Nodejs升级到版本6以上,使用升级工具n
来升级:
1npm install -g n 2n stable
如果此时有报错:
install : node-v6.2.2
Error: invalid version 6.2.2
只需要安装一下curl
即可:
1 apt-get install curl
之后nodejs升级到版本便是v6.2.2
。
2.4、替换npm源为淘宝源
国内获取npm的软件包速度超慢,所以我们一般会切换到淘宝的NPM镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
更方便的话可以使用nrm
软件包来管理你的npm安装源。
3、关于Ubuntu的apt-get命令常识
有时候我们会看到使用命令apt-get dist-upgrade,这个命令的行为是如果这个包没有发布更新,就不管它;如果发布了更新,就把包下载到电脑上,并安装。
那么apt-get dist-upgrade和apt-get update有何区别呢?
apt-get update 指令会同步使用者端和APT 伺服器的RPM 索引清单(package list),APT 伺服器的RPM 索引清单置于base 资料夹内,使用者端电脑取得base 资料夹内的bz2 RPM 索引清单压缩档后,会将其解压置放于/var/state/apt/lists/,而使用者使用apt-get install 或apt-get dist-upgrade 指令的时候,就会将这个资料夹内的资料和使用者端电脑内的RPM 资料库比对,如此一来就可以知道那些RPM 已安装、未安装、或是可以升级的。
由于包与包之间存在各种依赖关系。upgrade只是简单的更新包,不管这些依赖,它不和添加包,或是删除包。而dist-upgrade可以根据依赖关系的变化,添加包,删除包。
一般在运行upgrade或dist-upgrade之间,要运行update.
3.1、Ubuntu下载软件包的配置文件
文件/etc/apt/sources.list指示下载软件包源址
sudo vi /etc/apt/sources.list
可以查看该文件
文件中的定义的格式如下:(ref: https://wiki.debian.org/SourcesList)
deb http://site.example.com/debian distribution component1 component2 component3
deb-src http://site.example.com/debian distribution component1 component2 component3
开头deb代表编译好的包,des-src代表源代码,distribution代表发行版本,比如12.07是precise。其中component可以配置如下:
- Main - Officially supported software.
- Restricted - Supported software that is not available under a completely free license.
- Universe - Community maintained software, i.e. not officially supported software.
- Multiverse - Software that is not free.
比如:deb http://cn.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
详细请参考: https://help.ubuntu.com/community/Repositories/Ubuntu
更改了/etc/apt/sources.list,要用apt-get update更新index文件,更新的 index 文件在 /var/lib/apt/lists/
3.2、个人软件包集
在刚才解决的问题中我们发现如下这条命令:apt-add-repository ppa:chris-lea/node.js
,这个就涉及到我们要提及的个人软件包集。
PPA,表示 Personal Package Archives,也就是个人软件包集。 有很多软件因为种种原因,不能进入官方的 Ubuntu 软件仓库。 为了方便 Ubuntu 用户使用,launchpad.net 提供了 ppa,允许用户建立自己的软件仓库, 自由的上传软件。PPA 也被用来对一些打算进入 Ubuntu 官方仓库的软件,或者某些软件的新版本进行测试。
PPA 上的软件极其丰富,如果 Ubuntu 官方仓库中缺少您需要的某款软件,可以去 PPA 上找找看。
sudo add-apt-repository ppa:user/ppa-name
比如jdk1.6不在index中
sudo apt-get install python-software-properties < for installing add-apt-repository >
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
用命令 “sudo apt-cache search jdk“(这条命令可以用来查询你可能忘记的软件包全名),会发现结果中多了下列内容
1. oracle-jdk7-installer - Oracle JDK7 Installer meta package
2. oracle-java7-installer - Oracle Java(TM) Development Kit (JDK) 7
3. oracle-java6-installer - Oracle Java(TM) Development Kit (JDK) 6
4. oracle-java8-installer - Oracle Java(TM) Development Kit (JDK) 8
5. oracle-java7-set-default - Set Oracle JDK 7 as default Java
6. oracle-java6-set-default - Set Oracle JDK 6 as default Java
7. oracle-java8-set-default - Set Oracle JDK 8 as default Java
之前我不能安装gstreamer 也是通过下面命令解决的
sudo add-apt-repository ppa:gstreamer-developers/ppa
之后也发现/var/lib/apt/lists/ 多了几个index文件
ppa.launchpad.net_gstreamer-developers_ppa_ubuntu_dists_precise_main_binary-i386_Packages
ppa.launchpad.net_gstreamer-developers_ppa_ubuntu_dists_precise_main_source_Sources
ppa.launchpad.net_gstreamer-developers_ppa_ubuntu_dists_precise_Release
ppa.launchpad.net_gstreamer-developers_ppa_ubuntu_dists_precise_Release.gpg
安装完所有的包后可以通过命令dpkg -S
查看已经安装的package。
4、Sails以及bower和forever的安装
4.1、Sails的介绍
Sails是一个Nodejs服务器,它是基于Express的基础上再封装一层的服务器,所以了解Express服务器应该能够很快对Sails上手的。那么什么是sails呢?引用别人的一段介绍Sails.js的话:
Sails.js让构建自定义的、企业级的Node.js应用变得简单。它被设计成模仿类似于Ruby on Rails那样的MVC框架,但支持现代app的要求:可缩放的数据驱动API,面向服务的架构。Sails尤其适合构建聊天、实时仪表盘或多玩家的游戏的应用。
换句话说:Sails.js允许你更容易地创建Node.js app通过使用MVC模式来组织你的代码,这样就更容易维护。Sails.js提供各种各样的命令自动化创建模型和控制器,节省你的时间并允许你快速创建app。(视图不得不在/views目录下手工创建)虽然你可以使用不同的模板语言,但是EJS是Sails默认的模板引擎,坚持使用EJS更加安全以及更加容易。
Sails同样有各种各样的“适配器”,允许你虚拟地使用各种你想要用的数据库。这给了你最大的灵活性,和别的MVC框架必须使用MongoDb大不一样。
所有的这些包括在部署上,都是让你不需要花太多时间来配置你的框架,因为它全部都准备好了并且很容易使用。
关于Sails的详细介绍,参考官网(www.sailsjs.org)。官方文档的中文翻译版本可以参考如下的GitHub 地址 :https://github.com/linxiaowu66/sails-docs-zh-cn
4.2、Sails的安装以及简单使用
在命令行输入:
cnpm install -g sails
成功之后我们就开始使用sails命令为我们创建出一个基本的服务器框架:
sails new myWedding
sails generate controller wedding home newBlessing paging meet know love together
sails generate model blessing
这样一个简单的服务器框架已经出来,上面的三条命令分别实现的是:
- 创建Sails服务器名为“myWedding”的目录,里面包含了真个服务器框架的文件;
- 创建名为wedding的Controller,并在该Controller下面创建home、newBlessing、paging、meet、know、love、together等7个不同的controller节点。
- 创建名为blessing的model
4.3、安装和使用bower和forever
Bower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。而forever或者pm2则是一个让你的服务器永远运行在后台的监控程序,这样你就不用一直打开terminal了。 安装二者都是全局安装,所以命令是:
npm install -g bower
npm install -g forever
至于bower的使用则是很简单,可以参考http://segmentfault.com/a/1190000000349555。
当构建完毕整个网站之后,需要将网站永久地运行在production模式下,这时只需要利用forever或者pm2即可:
forever命令:
NODE_ENV=production forever start -l forever.log -a app.js
pm2命令:
NODE_ENV=production pm2 -i 1 --name wedding start app.js
5、安装MongoDb和Git
豆米的结婚纪念网站采用MongoDb作为数据库,并使用git作为代码管理工具,所以我们还需要安装这两个工具。
根据MongoDb的官方安装手册,安装命令如下:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
apt-get update
apt-get install -y mongodb-org
至此安装成功,途中没有遇到什么问题,接着安装Git:
apt-get install git
这个也是很顺利就安装ok的。
6、安装Nginx
Nginx作为著名的反向代理服务器,在本ECS实例中起着非常大的作用,所以我们需要它!
安装也是很Easy:
apt-get install nginx
7、安装Compass
如果我们使用SASS来编译CSS文件的话,就需要安装Compass,这是Ruby的一个工具,安装也是很简单,如下:
# apt-add-repository -y ppa:rael-gc/rvm
# apt-get update
# apt-get install rvm
# rvm install ruby
# gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
# gem install sass
# gem install compass
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 阿里云Ubuntu搭建NodeJs环境 的内容有疑问,请在下面的评论系统中留言,谢谢。