NODE 运行环境镜像使用指南
操作系统:centos 6.5
软件明细:Nodejs - Mongodb - vsftpd
注:各个软件版本以云市场镜像中产品介绍为准。
在镜像环境中,/root/nodejs.tar 是安装镜像环境的脚本,您可以在 centos 6.5 系统中自行采用此脚本安装,安装后的环境跟镜像里初始化的环境一致。值得注意的是,如果采用此脚本安装镜像环境,需要 chmod +x install.sh 即可执行。
在镜像环境中,/root/nodejs 是安装环境的主目录,镜像中的环境是在此目录下编译安装的。
ftp密码 ftp 的用户名 / 密码保存在系统目录下:
/alidata/account.log文件中。
修改 ftp 密码:
用 root 用户登录系统,然后执行下面命令:
passwd www
然后输入您的 ftp 新密码。
注意:用户名 www 为镜像默认采用的 ftp 用户,关于如何再添加新的 ftp 用户,在这里不再做过多介绍,可以参考系统目录 /etc/vsftpd 中关于 ftp 的配置文件,再相应配置。
Mongod 密码 Mongod 用户名 / 密码保存在系统目录下 :
/alidata/account.log 文件中。
用 admin 帐号登录 mongod 服务器
mongo -u admin -p {这里是密码} admin 出现
MongoDB shell version: 2.6.3
connecting to: admin
>
表示正确连接数 admin 数据库。
之后你可以修改 admin 密码 :
db.changeUserPassword('admin','123123');
软件的主目录:/alidata
Nginx 主目录:/alidata/server/nginx Node 主目录: /alidata/server/node Mongod 主目录: /alidata/server/Mongod ftp 主目录:/alidata/www apache 主目录:/alidata/server/httpd apache 配置文件主目录:/alidata/server/httpd/conf 日志目录:
/alidata/log/mongod 为 mongodb 存放日志主目录 /alidata/log/nginx 为 nginx 存放日志主目录 init目录:
/alidata/init 为当用户用镜像创建系统后,当且仅当用户在第一次启动系统的时候,调用此目录下的脚本来初始化 ftp 的密码(随机密码)。
mongod:
/etc/init.d/mongod start/stop/restart
ftp:
/etc/init.d/vsftpd start/stop/restart
node:
pm2 start /alidata/www/default/app.js -n test -i max
备注:pm2 是一个非常优秀的 node 应用的进程管理器,更多 pm2 的命令请自行参考相应教程。
如何卸载镜像环境中安装的软件,可以参考如下命令完成卸载:
cd nodejs
chmod +x uninstall.sh
./uninstall.sh
备注:执行以上卸载,会清理镜像环境的 /alidata 目录,请卸载前自行备份好相应数据。
1、在使用镜像安装系统后,有了 nodejs 环境。可以进行简单的基于 nodejs 的开发。比如 打开编辑器 ,创建一个 hello.js 的文件,输入以下代码:
console.log("Hello World");
保存该文件,并通过 nodejs 来执行
Node hello.js 正常的话会在终端输出 Hello World 。
更多可参考网上的教程。
http://www.nodebeginner.org/index-zh-cn.html
node.js 安装扩展模块 比如安装 MongoJS 模块,利用api 访问 mongodb 。
利用 node 内置的包管理工具 npm 来安装 mongojs :
npm install mongojs
我们就可以开发我们的 js 应用并连接 mongodb 服务器了。
var databaseUrl = "mydb"; // "username:password@example.com/mydb" var collections = ["users", "reports"] var db = require("mongojs").connect(databaseUrl, collections); databaseUrl 包括数据库服务器host和port以及需要连接的数据库名。
默认的 host 是 localhost,port 是 27017。
如果你要用开发环境默认的值,对于我们这个应用,databaseUrl 仅仅包含实际的数据库名字。
1、在使用镜像安装系统后,我们默认部署了一个 node.js 的 demo 网站。在 /alidata/server/httpd/conf/vhosts 目录下,我们可以看到一个默认的配置文件 default.conf 。关于如何配置网站,我们可以参考该文件中的内容:
server
{
listen 80;
server_name _;
location / {
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
proxy_set_header Accept-Encoding 'gzip';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /alidata/log/nginx/access.log;
}
从以上配置文件我们会发现,“proxy_pass http://127.0.0.1:8088” nginx 将所有的请求全部转发到本地的 8088 端口上。
2、从/alidata/www/default/app.js 我们会发现 node 会建立 http 服务,并在本地启动 8088 的 http 监控服务端口:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Node.js! \n');
}).listen(8088);
console.log('Server running on port 8088.');
3、进入 /alidata/www/default/ 目录,我们用以下命令就可以启动我们的 node http 服务:
pm2 start app2.js -n test2 -i max
然后我们在浏览器中输入:“http://... ”(..*.*为我们服务器的公网 ip),就默认可以访问到 node http 服务返回的内容:
以上内容的访问,是通过nginx作为web前端反向代理,得到我们 node http 服务返回的结果,当然我们也可以在浏览器中输入 : “http://...:8088”(8088 是我们 node 在本机起的 http 服务监听端口,此端口可以根据需求自行在代码中设置) :
说到这里,为什么我们要 node http 通过前面的 nginx 转发呢?
这是因为 nginx 作为一个轻量级 http 七层负载均衡,能够针对 http 服务进行 rewrite规制、反向代理、缓存设置等等很多灵活的功能,nginx+node 的组合,就如同 nginx+php、nginx+tomcat 等相应的组合,能够让后端http服务更加稳定、灵活、及高效。