腾讯云npm?腾讯云服务器官网首页下载

nodejs怎么部署到腾讯云服务器上

到小鸟云购买云服务器

作为一个穷逼+不熟悉服务器配置的菜鸟。选了最便宜的套餐: CPU: 1核/内存: 1024 MB/带宽:1Mbps/操作系统: CentOS

7.0购买环节会设置 ssh登陆密码,记下密码。登陆到小鸟云,查看购买的实例。注意公网 IP,下一步会用到

2.登陆服务器 sudo ssh你的服务器ip地址

提示输入mac的密码,提示输入服务器密码。输入后连接成功并显示服务器信息,如下:

登陆服务器后。这里对于我这个 Linux菜鸟有个大坑………就是 Linux系统常见的目录结构和文件放置区域。使用 root

用户身份登陆后,会直接进入到下图红色箭头标出的 root目录下。先 cd..跳转到上一层,再 ls-a

,就可以看到类似下图的目录结构了。

3.安装 node和 mongodb

node–编译后二进制文件应在/usr/local/bin/node下 mongodb–安装在/usr/local/mongodb下

下面就一步一步来,首先升级CentOS

yum-y update1

升级后,跳转到/usr/local/src,这个文件夹通常用来存放软件源代码

cd/usr/local/src1

下载 nodejs代码,也可以使用scp命令直接上传,因为下载实在太慢了。

wget 注*根据最新版本号为准12

解压

tar-xzvf node-v0.12.5.tar.gz1

进入解压后的文件夹

cd node-v0.12.51

执行配置脚本来进行编译预处理

./configure1

编译源代码

make//注*这个时间可能会很久12

当编译完成后,需要使之在系统范围内可用,

编译后的二进制文件将被放置到系统路径,默认情况下,Node二进制文件应该放在/user/local/bin/node文件夹下

make install1

安装 express和 forever,这两个模块都推荐 global安装

npm-g install express forever1

建立超级链接,不然 sudo node时会报“command not found”

sudo ln-s/usr/local/bin/node/usr/bin/nodesudo ln-s/usr/local/lib/node

/usr/lib/nodesudo ln-s/usr/local/bin/npm/usr/bin/npmsudo ln-s

/usr/local/bin/node-waf/usr/bin/node-wafsudo ln-s/usr/local/bin/forever

/usr/bin/forever12345

Nodejs到这里就基本安装完成了。

下面来安装mongodb

软件安装位置:/usr/local/mongodb数据存放位置:/var/mongodb/data

日志存放位置:/var/mongodb/logs

首先下载安装包

cd/usr/localwget

解压安装包,重命名文件夹为mongodb

tar zxvf mongodb-linux-x86_64-2.6.0.tgzmv mongodb-linux-x86_64-2.6.0

mongodb12

创建数据和日志存放目录

mkdir/var/mongodbmkdir/var/mongodb/datamkdir/var/mongodb/logs123

打开rc.local文件,添加CentOS开机启动项:

vim/etc/rc.d/rc.local1

将mongodb启动命令追加到本文件中,让mongodb开机自启动:

/usr/local/mongodb/bin/mongod--dbpath=/var/mongodb/data--logpath

/var/mongodb/logs/log.log-fork12

关闭 vim后,直接手动启动mongodb

/usr/local/mongodb/bin/mongod--dbpath=/var/mongodb/data--logpath

/var/mongodb/logs/log.log-fork12

看到类似的信息,说明已启动成功。我在这里发了个傻,以为26308是port号,导致后面设置port时折腾了好久。其实这里的 forked

process和 port号是两个东西,这个是程序本身在Server上的进程。

forked process: 263081

启动mongo shell

cd/usr/local/mongodb/bin/./mongo12

在 mongo shell中创建管理员及数据库

use admin//admin数据库db.createUser({user:

"用户名",pwd:"登陆密码",roles:["userAdminAnyDatabase"]

//超级管理员})use databaseFoo//nodeapp要连接的数据库db.createUser({user:

"用户名",pwd:"登陆密码",roles:["readWrite"]

//读写权限})12345678910111213

到这里 mongodb基本已经安装设置完成了。具体数据的迁移导入可自行研究。

4.配置及启动node app

我们把 nodeapp的程序放在/home下

js如何连接和操作腾讯云mysql数据库

首先是登陆腾讯云,登陆之后可以领取新手礼包,如图

进入云产品->数据库->CDB for MYSQL->立即选购,选购最低配的可用礼包抵扣使用一个月,购买完成

主页->右上角产品管理->使用中的数据库,这时我们会看见一个实例,首先我们进入管理页面对实例进行一些基本的设置

实例名可以随意更改,外网地址必须开启,否则我们就不能在自己的项目中和本地访问云数据库。进入账号管理页面修改自己的root密码,然后点击右上角的登录数据库

登陆完成之后如下图

这个和本地客户端操作基本相同,我就不详细阐述了

二、使用一个demo来说明如何操作云mysql数据库

1.在实例上上新建一个为nodejs的数据库,然后新建一个为employee的表,新建四个字段 name sex age email除了年龄为int其它的全部为varchar格式

2.新建一个TimLiu的文件夹,打开cmd,cd TimLiu,初始化项目npm init,按照它的提示一步一步的操作即可,安装mysql模块,npm insitall mysql,这个模块的作用主要是连接mysql数据库。

3.新建一个model.js文件,

var mysql= require(‘mysql’);

var connection= mysql.createConnection({

host:'',

user:'root',

password:'123abc',

database:' nodejs',

port:6445

})

connection.connect();

这里的host为我们在腾讯云上开通的外地址,端口号也是在外网地址里面,注意要把外网地址写分开,用户为默认的管理员用户,密码为我们在云平台上设置的密码,数据库为我们创建的nodejs数据库。

接下来我们对数据库进行增删改查操作

/**

*增加员工

*/function addEmployee(){

var employeeInsertSql='INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';

var employeeInsertSql_Params= ['Tim','男',22,'18818216454@163.com']

connection.query(employeeInsertSql,employeeInsertSql_Params,function(err,result){

if(err) console.log('[INSERT ERR]-',err.message);

console.log(result);

})}addEmployee()

}

/**

*更新员工

*/

function insertEmployee(){

var employeeUpdateSql="UPDATE employee SET name=? WHERE age=?";

var employeeUpdateSql_Params= ['Peter',22];

connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

if(err) console.log('[UPDATE ERR]-',err.message);

console.log(result);

})}

insertEmployee();

/**

*查询员工

*/ function getEmployee(){

var employeeGetSql="SELECT* FROM employee";

connection.query(employeeGetSql,function(err,result){

if(err) console.log('[SELECT ERR]-',err.message);

console.log(result);

})}

getEmployee();

/**

*删除员工

*/ function deleteEmployee(){

var employeeDeleteSql="DELETE employee WHERE name=?";

var employeeDeleteSql_Params='Peter';

connection.query(employeeDeleteSql,employeeDeleteSql_Params,function(err,result){

if(err) console.log('[DELETE ERR]-',err.message);

console.log(result);

})

}deleteEmployee();

这样我们就可以愉快的操作数据库了

如果大家想把项目更模块化操作,可在model下面新建一个employee_two.js,代码如下

var mysql= require('mysql');var connection= mysql.createConnection({

host:'',

user:'root',

password:'',

database:'nodejs',

port:})connection.connect();/**

*增加员工

*@param{String} employee

*@param{Function} callback

*/exports.addEmployee=function(employee,callback){

var employeeInsertSql='INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';

var employeeInsertSql_Params= [employee.name,employee.sex,employee.age,employee.email]

connection.query(employeeInsertSql,employeeInsertSql_Params,callback)}/**

*更新员工

*@param{String} employee

*@param{Function} callback

*/exports.updateEmployee= function(name,age){

var employeeUpdateSql="UPDATE employee SET name=? WHERE age=?";

var employeeUpdateSql_Params= ['Peter',22];

connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

if(err) console.log('[UPDATE ERR]-',err.message);

console.log(result);

})}/**

*查询员工

*

*/exports.getEmployee= function(){

var employeeGetSql="SELECT* FROM employee";

connection.query(employeeGetSql,callback)}/**

*删除员工

*@param{String} name

*/exports.deleteEmployee= function(name){

var employeeDeleteSql="DELETE employee WHERE name=?";

var employeeDeleteSql_Params='Peter';

connection.query(employeeDeleteSql,employeeDeleteSql_Params,callback)

}再在根目录下新建index.js,代码如下var db= require('./model/employee_two');//增加员工var employee={

name:'lisa',

age:22,

sex:"女",

email:'99533212@qq.com'}db.addEmployee(employee,function(err,result){

if(err) console.log("[INSERT err]-",err.message)

console.log(result);})//删除员工db.deleteEmployee('Peter',function(err,result){

if(err) console.log("[DELETE err]-",err.message)

console.log(result);})//更新员工db.updateEmployee('Tim',23,function(err,result){

if(err) console.log("[UPDATE err]-",err.message)

console.log(result);})//查询员工db.getEmployee(function(err,result){

if(err) console.log("[GET err]-",err.message)

console.log(result);})

uni-app 使用腾讯云im开发app聊天室

组件地址:

哪找教程引入就行,开发什么端看什么端文档

npm install tim-wx-sdk@2.15.0--save

npm install cos-wx-sdk-v5@0.7.11--save

----------------------------------------------------------

import TIM from'tim-wx-sdk';

import COS from"cos-wx-sdk-v5";

import logger from'./utils/logger';// app.js

import{ genTestUserSig} from'./debug/GenerateTestUserSig.js'

在app.vue文件下onLaunch周期里面:

/// userInfo为判断用户是否登录

if( userInfo!=''|| userInfo!= undefined){

if( uni.getStorageSync('zuserInfo').role== 1|| uni.getStorageSync('zuserInfo').role== 2){

//连接im

//如果您已经接入 tim,请将 uni.tim修改为 uni.$TUIKit。

uni.$TUIKit= TIM.create({

  SDKAppID:'  '  //填写你申请的AppID

});

uni.$TUIKit.registerPlugin({

 'cos-wx-sdk': COS

});

uni.$resetLoginData= this.resetLoginData(userInfo)

uni.$TUIKitTIM= TIM;

uni.$TUIKitEvent= TIM.EVENT;

uni.$TUIKitVersion= TIM.VERSION;

uni.$TUIKitTypes= TIM.TYPES;//监听系统级事件

uni.$TUIKit.on(uni.$TUIKitEvent.SDK_NOT_READY, this.onSdkNotReady);

uni.$TUIKit.on(uni.$TUIKitEvent.KICKED_OUT, this.onKickedOut);

uni.$TUIKit.on(uni.$TUIKitEvent.ERROR, this.onTIMError);

uni.$TUIKit.on(uni.$TUIKitEvent.NET_STATE_CHANGE, this.onNetStateChange);

uni.$TUIKit.on(uni.$TUIKitEvent.SDK_RELOAD, this.onSDKReload);

uni.$TUIKit.on(uni.$TUIKitEvent.SDK_READY, this.onSDKReady);

}

}

// TODO:

  resetLoginData(info){

let _this= this

   this.globalData.expiresIn='';

   this.globalData.sessionID='';

   this.globalData.userInfoIm={

    userID: info.userId,

    userSig: info.txSig,

    token: info.token,

    phone: info.phone

  };

   this.globalData.userProfile= null;

uni.$TUIKit.login({userID: info.userId.toString(), userSig: info.txSig.toString()})

.then(function(imResponse){

 // console.log(imResponse.data);//登录成功

// _this.getUpdateMyProfile()

  if(imResponse.data.repeatLogin=== true){

  //标识帐号已登录,本次登录操作为重复登录。v2.5.1起支持

  // console.log(imResponse.data.errorInfo);

 }

})

.catch(function(imError){

  console.warn('login error:', imError);//登录失败的相关信息

});

 },

onTIMError(){},

  onNetStateChange(){},

  onSDKReload(){},

  onSDKReady(event){

let _this= this

_this.getUpdateMyProfile()

_this.getImUnread()

},

  onSdkNotReady(){

this.getImLogin()

},

  onKickedOut(){

   uni.showToast({

    title:'您被踢下线',

    icon:'error'

  });

let userinfo=''

uni.setStorageSync('zuserInfo', userinfo)

setTimeout(()=>{

uni.redirectTo({

  url:'/pages/login/login'

});

},2000)

  // uni.navigateTo({

  //  url:'./pages/TUI-Login/login'

  //});

 },

logoutTim(){

uni.$TUIKit.logout()

},

uni.navigateTo({

url:'/pages/TUI-Chat/chat?conversationID=C2C'+ this.info.user_id

});

getImUnread(){

uni.$TUIKit.getConversationList().then(res=>{

// console.log(res.data.conversationList)

for( let i of res.data.conversationList){

if( i.unreadCount!= 0){

uni.showTabBarRedDot({index:2})

return

}

}

}).catch(fail=>{

// console.log(fail)

});

},

阅读剩余
THE END