在云服务器上部署node.js服务器
本文档介绍腾讯云·万象优图服务端nodejs的部署和集成,搭建一个nodejs+nginx为基础,对web端或者移动端提供http签名接口服务的例子程序。
注意:本文档只是简单的示例,展示了服务端为终端提供签名的基本示例,开发者务必根据自身业务开发相应的鉴权服务逻辑,并集成到自身服务器中。
1 环境准备
下面以在腾讯云云服务器CentOS 6.2 64位上安装nginx为例,简单介绍如何将腾讯云万象优图集成,对web端或者移动端提供http签名接口服务所需要的基础环境搭建。开发者可以根据自己业务的需要,构建http或者非http服务,为自身业务的web端、移动端提供签名。
1.1 安装nginx
yum install nginx –y
service nginx restart
1.2 验证nginx
直接访问云服务器ip地址,验证nginx是否已经运行起来。
2 安装配置Nodejs环境
下面介绍安装Nodejs和配置web container的详细步骤。
1 安装Nodejs
yum install -y nodejs npm
2 配置web container
修改/etc/nginx/conf.d/default.conf如下:
#
# The default server
#
server {
listen 80 default_server;
server_name _;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location ^~ /node/ {
proxy_pass http://localhost:9002;
}
}
3 重新加载nginx配置
修改配置完成后,需要执行以下命令重新加载配置。
nginx -s reload
3 安装Nodejs SDK
执行以下命令安装Nodejs SDK。
cd /data/www/tencentyun/node
npm install tencentyun
4 开发鉴权服务逻辑
将sdk集成到开发者代码,开发鉴权服务逻辑,这里以node目录下getsignv2.js为例(开发者务必根据自身业务开发相应的鉴权服务逻辑):
注意:如果开发者想按照本示例做简单地测试,需要将下面代码中的相应字段替换为自己的项目信息,具体见代码注释。
var http=require('http');
var url = require('url');
var util = require('util');
var tencentyun = require('tencentyun');
var server=new http.Server();
server.on('request',function(req,res){
var urlinfo = url.parse(req.url,true),
type = 'upload';
if (urlinfo.query && urlinfo.query.type) {
type = urlinfo.query.type;
}
//请将下面的bucket, projectId, secretId和secretKey替换成开发者自己的项目信息
var bucket = 'test0706',
projectId = '10000037',
userid = 0,
secretId = 'AKIDpoKBfMK7aYcYNlqxnEtYA1ajAqji2P7T',
secretKey = 'P4FewbltIpGeAbwgdrG6eghMUVlpmjIe';
tencentyun.conf.setAppInfo(projectId, secretId, secretKey);
var error = false;
switch(type) {
case 'upload':
var fileid = '/u/can/use/slash/sample' + Math.round(+new Date()/1000),
expired = Math.round(+new Date()/1000) + 999,
uploadurl = tencentyun.imagev2.generateResUrlV2(bucket, userid, fileid),
sign = tencentyun.auth.getAppSignV2(bucket, fileid, expired);
ret = {'sign':sign,'url':uploadurl};
break;
case 'stat':
if (!urlinfo.query || !urlinfo.query.fileid) {
error = true;
} else {
var fileid = decodeURIComponent(urlinfo.query.fileid),
otherurl = tencentyun.imagev2.generateResUrlV2(bucket, userid, fileid),
ret = {'url':otherurl};
}
break;
case 'del':
case 'copy':
if (!urlinfo.query || !urlinfo.query.fileid) {
error = true;
} else {
var fileid = decodeURIComponent(urlinfo.query.fileid),
otherurl = tencentyun.imagev2.generateResUrlV2(bucket, userid, fileid, type),
sign = tencentyun.auth.getAppSignV2(bucket, fileid, 0);
ret = {'sign':sign,'url':otherurl};
}
break;
case 'download':
if (!urlinfo.query || !urlinfo.query.fileid) {
error = true;
} else {
var fileid = decodeURIComponent(urlinfo.query.fileid),
expired = Math.round(+new Date()/1000) + 999,
sign = tencentyun.auth.getAppSignV2(bucket, fileid, expired);
ret = {'sign':sign};
}
break;
}
res.writeHead(200,{'Content-Type':'application/json'});
if (error) {
res.end({'error':'params error'});
} else {
res.end(JSON.stringify(ret));
}
});
server.listen(9002);
console.log('HTTP SERVER is LISTENING AT PORT 9002.');
5 运行程序
cd /data/www/tencentyun/node
nohup node getsignv2.js &
6 测试
- 终端通过CGI:http://203.195.194.28/node/?type=[opType]&fileid=[fileid]来获取相应的签名。
opType:可取值:upload(上传), stat(查询), copy(复制), del(删除)和download(下载,如果开启token防盗链);
fileid:是图片资源的唯一标识;当opType为upload时,如果开发者没有指定fileid,fileid置空,否则指定为相应的fileid;下载签名,fileid可以空,也可以为开发者查看的图片fileid。
注意: 下载签名只有开发者在控制台上面设置了token防盗链时才使用,如果没有token防盗链,不需要下载签名,直接使用下载url下载图片。
示例:http://203.195.194.28/node/?type=del&fileid=sample123
http://203.195.194.28/node/?type=copy&fileid=sample123
http://203.195.194.28/node/?type=stat&fileid=sample123
http://203.195.194.28/node/?type=download&fileid=sample123
http://203.195.194.28/node/?type=upload&fileid=sample123
在云服务器上部署node.js服务器的更多相关文章
- 在腾讯云(windows)上搭建node.js服务器
1:安装Node.js 使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:\Program Files\nodejs. 但这里我们需要修改安装路径到:D ...
- 如何线上部署node.js项目
来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...
- 在Heroku上部署Node.js应用
最近在学习Node.js,想找一个可以免费部署Node的平台,于是便找到了Heroku 直接进入主题,接下来我们一步一步部署自己的Node应用. 步骤1: 注册一个免费的Heroku账号. 步骤2: ...
- 那些在BAE上部署node.js碰到的坑
在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ...
- 在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)
一.环境部署 1.下载安装包: wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.xz 2.解压并进入目录: xz -d no ...
- 基于Apache的阿里云部署Node.js服务器(Windows环境)
1 前言 由于nodejs项目对方开放了多个端口,而且阿里云上的Apache服务器(windows)已经挂载了网站,此时需要把此项目也挂上去,网上查询资料,方法略少,基本是基于nginx版本的. 2 ...
- Node——服务器上安装Node.js
服务器版本 [root@izuf63g0jydq42k49eo7zcz ~]# uname -a Linux izuf63g0jydq42k49eo7zcz -.el7.x86_64 # SMP Tu ...
- Vue——服务器上部署vue.js
服务器版本 [root@izuf63g0jydq42k49eo7zcz ~]# uname -a Linux izuf63g0jydq42k49eo7zcz -.el7.x86_64 # SMP Tu ...
- 【转载】在Centos系统上采用二进制文件部署Node.js环境
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
随机推荐
- 【左偏树+延迟标记+拓扑排序】BZOJ4003-城池攻占
[题目大意] 有n个城市构成一棵树,除1号城市外每个城市均有防御值h和战斗变化参量a和v. 现在有m个骑士各自来刷副本,每个其实有一个战斗力s和起始位置c.如果一个骑士的战斗力s大于当前城市的防御值h ...
- bzoj 3790: 神奇项链
3790: 神奇项链 Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了 ...
- 最小生成树(Prime算法)
最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城 ...
- “Warning: Call-time pass-by-reference has been deprecated in”解决方法
刚刚在调试一个PHP木马,显示错误信息为: Warning: Call-time pass-by-reference has been deprecated in E:\New-Hack520org\ ...
- mysq-binlog
Auth: JinDate: 2014-04-23参考: http://dev.mysql.com/doc/refman/5.1/en/replication-options-binary-log.h ...
- 【spring cloud】spring cloud中启动eureka集群时候,发生端口已经绑定的报错The Tomcat connector configured to listen on port 8000 failed to start. The port may already be in use or the connector may be misconfigured.
在分别设置 进行微服务eureka集群启动时候,执行命令行启动jar包时候,报错前面一个端口8000已经被使用,而我这里启动的配置文件中端口号是8001,怎么会导致端口冲突呢?? 但是报错我的端口冲突 ...
- JavaMail入门:创建纯文本、HTML格式的邮件
转自:http://haolloyin.blog.51cto.com/1177454/353849/ 在 http://java.sun.com/products/javamail/ 下载了 Java ...
- ImageWriter制作ubuntu的U盘启动盘
转自:http://my.oschina.net/f839903061/blog/197935?p={{currentPage+1}} 1.工具从ubuntn中文网中下载指定软件:ImageWrite ...
- Nginx" upstream prematurely closed connection while reading response header from upstream"问题排查
问题背景 我们这边是一个基于Nginx的API网关(以下标记为A),最近两天有调用方反馈,偶尔会出现502错误,我们从Nginx的error日志里看,就会发现有" upstream prem ...
- BZOJ3157: 国王奇遇记 & 3516: 国王奇遇记加强版
令\[S_i=\sum_{k=1}^n k^i m^k\]我们有\[\begin{eqnarray*}(m-1)S_i & = & mS_i - S_i \\& = & ...