课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html

项目github地址:https://github.com/hellozhangran/happy-egg-server

通过前面的讲解,可以完成一个基本的node api服务了,接下尝试把项目部署到刚买的腾讯云上。

登陆服务

  • 购买腾讯云容器,购买后会把账号信息通过腾讯云站内信发给你,里面有公网ip和初始密码,后面ssh登陆会用到。

  • 登陆云linux。本地Mac命令行输入:ssh root@xx.xx.xx.xx,根据提示输入密码即可。

安装Node环境

  • cd && mkdir download && cd download

  • 下载node: wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz

  • 解压node文件:tar xvf node-v12.13.0-linux-x64.tar.xz

  • 把解压好的文件移动到/opt/node下:

    • mkdir /opt/node
    • mv ~/download/node-v12.13.0-linux-x64 /opt/node
  • 创建软连接:

    • ln -s /opt/node/node-v12.13.0-linux-x64/bin/node /usr/local/bin/node
    • ln -s /opt/node/node-v12.13.0-linux-x64/bin/npm /usr/local/bin/npm
  • 验证node与npm已经安装成功:

    • npm -v

    • node -v

安装git

  • 安装: yum -y install git,这种安装方式快捷,但只能安装较低版本。下面安装新版本git

  • 删除已有git:yum remove git

  • 下载源码包: wget -O ~/download/git-2.21.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz

  • 安装编译依赖:yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

  • 解压:

    • tar -zxf ~/download/git-2.21.0.tar.gz
    • cd ~/donwload/git-2.21.0
  • 检验相关依赖,设置安装路径:./configure --prefix=/opt/git

  • 编译安装:make && make install

  • 配置PATH变量:

    • vi /etc/profile
    GIT_HOME=/usr/local/git
    export PATH=$PATH:$GIT_HOME/bin
    • source /etc/profile
  • 使用https的链接git clone代码是比较简单的,如果用ssh则需要在本地生成SSH Key,目前优先使用https的方式,但可能会报fatal: Unable to find remote helper for 'https',如果遇到该问题则:

    yum install curl-devel
    # cd to wherever the source for git is
    cd /usr/local/src/git-1.7.9
    ./configure
    make
    make install

安装mongodb

  • 下载源码:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.9.tgz,事实证明,wget比curl下载快多了,curl应该适合做请求不适合下载包。看到很多教程用curl下载mongo包,说明一下。

  • 解压:tar -zxvf mongodb-linux-x86_64-4.0.9.tgz

  • 移动到合适目录 mv mongodb-linux-x86_64-3.0.6 /opt/mongodb

  • 配置PATH:vi /etc/profile

  • 创建配置文件:cd /opt/mongodb && touch mongodb.conf 输入:

    # Store data in /opt/mongodb/data instead of the default /data/db
    dbpath = /opt/mongodb/data # Append logs to /opt/mongodb/log/mongodb.log
    logpath = /opt/mongodb/log/mongodb.log
    logappend = true # Only accept local connections
    bind_ip = 127.0.0.1

其中的data目录与mongodb.log文件要自己手动创建

  • 启动mongod服务:mongod --config /opt/mongodb/mongod.conf &,后面加&是为了服务在后台运行

安装pm2

  • 安装:npm install pm2@latest -g

  • 启动node:pm2 start express/app.js

  • 重启:pm2 restart express/app.js

  • 开启监控模式:pm2 monit

  • 通过配置文件启动:pm2 start pm2.json

    • 可以配置console.log等收集到日志文件
    • 配置开启的实例数,pm2通过多个实例做负载均衡
    • 详细可查看本项目中的pm2.json文件

试一下你的服务

  • 在本地启动node后通过localhost:3000访问,而在腾讯云启动后就要通过腾讯云的ip:3000访问了

  • 后面可以通过配置nginx把3000端口号抹去,不过现在可以通过蹩脚的方式拿到自己腾讯云服务器上的接口了。

技巧篇

参考:

【重学Node.js 第5篇】部署项目到腾讯云服务器的更多相关文章

  1. 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务

    实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...

  2. 【重学Node.js 第3篇】mongodb以及mongoose的使用

    mongodb以及mongoose的使用 本篇为这个系列的第三篇,想看更多可以直接去github的项目:https://github.com/hellozhangran/happy-egg-serve ...

  3. 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务

    本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...

  4. 打算写一个《重学Node.js》系列,希望大家多多支持

    先放上链接吧,项目已经开始2周了:https://github.com/hellozhangran/happy-egg-server 想法 现在是2019年11月24日,还有人要开始学习Node.js ...

  5. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  6. Tomcat+Nginx+Linux+Mysql部署豆瓣TOP250的项目到腾讯云服务器

    写在前面 因为前面有写过一篇关于豆瓣的top250的电影的可视化展示项目,你可以移步http://blog.csdn.net/liuge36/article/details/78607955了解这个项 ...

  7. 译\Node.js应用的持续部署

    Node.js应用的持续部署 翻译前 翻译自:https://blog.risingstack.com/continuous-deployment-of-node-js-applications/ 正 ...

  8. Node.js Stream-基础篇

    Node.js Stream - 基础篇 邹斌 ·2016-07-08 11:51 背景 在构建较复杂的系统时,通常将其拆解为功能独立的若干部分.这些部分的接口遵循一定的规范,通过某种方式相连,以共同 ...

  9. 手把手教你学node.js之一个简单的express应用

    一个简单的express应用 目标 建立一个 lesson1 项目,在其中编写代码.当在浏览器中访问 http://localhost:3000/ 时,输出 Hello World. 挑战 访问 ht ...

随机推荐

  1. typedef & #defiine & struct

    #define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了. typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名), ...

  2. python中的局部变量和全局变量

  3. LeetCode-7.reverse-integer 【翻转字符串】【数学】

    PS: 第一次写文章好累啊,没想到这么短的文章写完这么累,大家给我点反馈,多给我留言啊.

  4. 关于CSS选择器连续性的问题

    在html中有以下结构: --- ----- <div class="row100"> <div class="col"> <di ...

  5. mac查看开关机记录-last命令

    命令 last | grep reboot (查看开机时间记录) last | grep shutdown (查看关机时间记录) /var/log/messages日志中查询reboot(系统重启) ...

  6. HDU-1027Ignatius and princess II

    Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about ...

  7. BIOS安全设置

    1.开机按F2进入BIOS 2.进入 Security 界面 3.Set user password 用户密码 开机密码 设置为123456 4.Set supervisor password 进BI ...

  8. python爬虫--代理.让你的ip在坚挺一会!!

    代理 代理简述 代理服务器:实现请求转发,从而可以实现更换请求的ip地址 在requests中如何将请求的ip进行更换 代理的匿名度: 透明:服务器知道你使用了代理并且知道你的真实ip 匿名:服务器知 ...

  9. 用递归实现N!

    def digui(n): result = 1 if n == 2: result = 2 elif n > 2: result = n* digui(n-1) print(result) r ...

  10. ELK和EFK的区别

    ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...