[转]阿里云 ECS 使用心得
原文地址:http://frontenddev.org/article/ali-cloud-ecs-use-result-1-use-yum-to-install-nodejs-npm-environment.html
一:使用 yum 安装 nodejs/npm 环境
本系列文章的内容都是基于阿里云 centos 6.4 操作系统
1、更新源
yum 源类似于 iPhone 的 cydia 源,可以添加源地址也可以更新源信息。在准备安装 nodejs 环境之前,先更新下系统的 yum 源信息。
yum update
2、编译环境
必须先安装编译环境以便 nodejs 更好的编译,不像 windows 和 macox 下的 nodejs 一样,它们可以双击安装,而在 centos 下需要对源码进行编译安装。
yum -y groupinstall "Development Tools"
选择编译路径,推荐使用以下路径:
cd /usr/local/src
3、 编译 nodejs 源码
使用以下 url 下载最新的 nodejs 源码:
wget http://nodejs.org/dist/node-latest.tar.gz
解压 nodejs 源码包:
tar zxf node-*.tar.gz
cd node-v*
预编译
./configure
编译并安装
make && make install
4、安装完成
一段时间之后,以上操作完成。输出 nodejs 版本号:
node --version
输出 npm(npm 是 nodejs 的包管理工具)版本号:
npm --version
5、环境变量
如果以上命名,无法正确输出信息,需要配置环境变量。
# 设置global路径为用户目录
npm config set prefix ~/npm
# 将~/npm/bin路径加到PATH变量中
echo -e '\nexport PATH=~/npm/bin:$PATH' >> ~/.bashrc
# 重新载入.bashrc
source ~/.bashrc
至此,nodejs 环境安装完成。enjoy!
二:使用 yum 安装 nginx
TOC
nginx 用于反向代理到不同的 node 服务上去,如:
abc.com => node@18080
def.com => node@18081
yum 简介
yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header 包括了rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些header 并加以分析,才能自动化地完成余下的任务。
yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。
yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。
yum 可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。
修改 yum 仓库配置
vi /etc/yum.repos.d/nginx.repo
输入:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
保存。
执行安装
yum install nginx
三:使用 yum 安装 mongodb
mongodb
MongoDB 是一个开源、强性能、高稳定的弹性文档数据库。
- 强性能
- 支持嵌入式数据模型,降低了对数据库系统的 I/O 吞吐。
- 更快的索引支持,包括嵌入文档和数组的字段。
- 高稳定
- 自动容错处理。
- 数据冗余处理。
- 弹性
- 水平扩展
- 自动分片、集群、分布式。
- 副本集可以提供一致的读取、低延迟、高吞吐的部署。
-
易用
mysql
select * from table where user=cloudcome limit 10
mongodb
tableMode.find({user: 'cloudcome'}).limit(10)
- 缺点
- 无事务
- 无数据模型
yum 仓库配置
vi /etc/yum.repos.d/mongodb.repo
内容为:
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
执行安装
yum install -y mongodb-org
四:mongodb 的权限配置及备份还原
临时启动
上一篇文章已经安装了 mongodb,本文来简要说明下如何配置 mongodb 的账户,以及安全性、备份还原等。
在安装完毕,需要临时启动来指定数据库保存目录,以及创建管理员账户。
# 临时启动
mongod --dbpath 数据库保存目录
# 创建管理员
>mongo
>use admin
>db.createUser({user:"管理员用户名", pwd:"管理员密码", roles:[{role:"root", db:"datebase"}]});
>exit
安全性启动
mongod --dbpath 数据库保存目录 --logpath 日志保存文件 --port 端口号 --auth --fork
创建数据表用户
# shell
mongo admin -u 管理员用户名 -p 管理员密码 --port 端口号
> db.createUser({user: "cloudcome", pwd: "123123", roles: [{role: "dbOwner", db: "db1"}]});
Successfully added user: {
"user" : "cloudcome",
"roles" : [
{
"role" : "dbOwner",
"db" : "db1"
}
]
}
数据库备份、还原
# 备份 mongodump --out 备份目录 # 还原 mongorestore --dbpath 数据库保存目录 --journal 备份目录
五:nginx 静态网站配置
默认配置
cd /etc/nginx/conf.d/
sudo vi default.conf
改写为:
server{
listen 80 default;
return 404;
}
如果不返回 404,那么指向本机的域名,如果没有配置规则,那么就会指向第一个配置的站点。
静态站点
在用户目录下新建静态站点
cd ~
mkdir -p website/example/
cd ~/website/example/
vi index.html
输入
hello nginx
然后切换到nginx
配置目录
cd /etc/nginx/conf.d/
vi example.conf
输入
server{
listen 80;
server_name example.com;
location / {
root /user/USERNAME/website/example/;
index index.html index.htm;
}
}
重启 nginx
sudo nginx -s reload
在浏览器打开example.com
即可看到hello nginx
字样。
六:使用 nginx 为 nodejs 做反向代理
反向代理
在计算机网络中,反向代理是代理服务器的一种。它根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。与前向代理不同,前向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端作为代理使用,而不是客户端。
主要配置
server{
listen 80;
server_name 域名1;域名2;
access_log access.log 文件路径;
error_log error.log 文件路径;
location / {
proxy_redirect off;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:nodejs 端口;
}
location /static {
expires max;
access_log off;
root /path/to/webroot-pro;
}
}