阿里ECS部署Node项目并实现域名访问

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
.cn 域名,1个 12个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 阿里ECS部署Node项目并实现域名访问

Ⅰ· 需求:将Node项目部署到阿里ECS实现域名访问

Ⅱ· 步骤:

  1. SSH连接远程服务器
  2. 随手更新yum

yum update -y

  1. 安装wget

yum install wget -y

  1. 下载、解压、查看Node版本号
  • wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
  • tar xvf /root/node-v12.16.1-linux-x64.tar.xz
  • ./bin/node -v
  1. 配置环境变量(或使用软链接)

    • 配置环境变量:编辑/etc/profile 末尾新增

      export NODE_HOME=/usr/local/bin/node-v12.16.1
      
      export PATH=$PATH:$NODE_HOME/bin 
      
      export NODE_PATH=$NODE_HOME/lib/node_modules
    • 软链接(示例)

      ln -s /root/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node
      ln -s /root/node-v8.9.3-linux-x64/bin/npm /usr/local/bin/npm
  2. 全局安装 PM2(管理node项目)
官方文档: https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
  • 安装:npm install pm2@latest -g
  • 启动:pm2 start app.js
  1. 使用 Nginx
  • 安装:yum install nginx
  • 版本:nginx -v
  • 配置:cd /etc/nginx/nginx.conf

    server {
        listen       80;
        server_name  _;
        root         /usr/share/nginx/html;        
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location / {
        }
    
        error_page 404 /404.html;
            location = /40x.html {
        }
    
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    
    server {
      listen 80;
      server_name *.wangxiaohang.com;
      location / {
        proxy_pass http://*.*.*.*:3000;## 自己的服务器地址:Port
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
        proxy_set_header Host $http_host; 
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
      }
    }
  • 启动:service nginx start
  • 重启:service nginx reload
  1. MongoDB
  • 官网:https://www.mongodb.com/download-center/community
  • 借鉴:https://juejin.im/post/5cb6cc72518825327854752e
  • 版本说明

    • development release ---->开发版
    • current release ---->当前稳定版
    • previous release ---->旧版本
  • 系统说明

    • Ubuntu ----> 优般图
    • Linux legacy ----> 通用版
    • window ----> 不解释
    • RHEL Linux ----> 红帽
    • Amazon Linux ----> 亚马逊
    • Debian Linux ----> Debian
    • SUSE Linux ----> SUSE
  • 用户权限说明

    • Read:允许用户读取指定数据库
    • readWrite:允许用户读写指定数据库
    • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    • root:只在admin数据库中可用。超级账号,超级权限。
  • 常用命令

    • mongo:连接数据库
    • show dbs:查看数据库
    • use admin:切换到admin数据库
    • db.creatUser():创建用户
  • 安装流程

    • Ⅰ· 组织文件夹目录

      • cd /usr/local/
      • wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.9.tgz
      • tar -zxvf mongodb-linux-x86_64-rhel70-4.0.9.tgz -C /usr/local/
      • mv mongodb-linux-x86_64-rhel70-4.0.9 mongoDB
      • cd mongoDB
      • mkdir data
      • mkdir data/db
      • mkdir logs
      • touch logs/mongoLogs.log
      • touch mongodb.conf
      • vim mongodb.conf

        #端口号 默认27017
        port=27017
        
        #数据目录
        dbpath = /usr/local/mongoDB/data/db
        
        #日志文件
        logpath = /usr/local/mongoDB/logs/mongoLogs.log
        
        #设置后台运行
        fork = true
        
        #日志输出方式
        logappend = true
  • Ⅱ· 配置本地访问

    • ./mongod --config /usr/local/mongoDB/mongodb.conf
    • ./mongo
    • use admin
    • db.createUser({user:"root",pwd:"123456",roles:["root"]})
    • 修改密码

      • db.changeUserPassword("usertest","changepass") //usertest用户, changepass
      • db.updateUser("usertest",{pwd:"changepass1"})
    • use admin
    • db.auth('root','123456');
    • db.shutdownServer();
  • Ⅲ· 修改配置内容使远程访问

    #端口号 默认27017
    port=27017
    #绑定ip 默认127.0.0.1只允许本地连接
    bind_ip = 0.0.0.0
    
    #数据目录
    dbpath = /usr/local/mongoDB/data/db
    
    #日志文件
    logpath = /usr/local/mongoDB/logs/mongoLogs.log
    
    #设置后台运行
    fork = true
    
    #日志输出方式
    logappend = true
    
    #开启身份验证
    auth = true
    
    • ./mongod --config /usr/local/mongoDB/mongodb.conf
    • ctrl C^
    • ./mongo 127.0.0.1:27017/admin --username "root" --password "123456"
    • use blog
    • db.createUser({user:"blogAdmin",pwd:"123456",roles:[{role:"readWrite",db:"blog"}]})
  • Ⅳ· 开放对外端口,远程连接

    相关报错信息解决办法:
    https://jingyan.baidu.com/article/49ad8bce97bd965834d8fa8b.html
    https://serverfault.com/questions/951870/why-does-firewall-cmd-throws-error-already-enabled-but-is-the-port-not-listed
    • systemctl status firewalld

      • systemctl start firewalld 打开防火墙
    • firewall-cmd --zone=public --add-port=27017/tcp --permanent
    • firewall-cmd --reload
    • firewall-cmd --zone=public --query-port=27017/tcp
    • NodeJs连接数据库

      • mongoose.connect('mongodb://user:password@localhost:port/databaseName')

Ⅲ · 撒花

至此,一个完整的Node项目已经可以再服务器跑起来了,本文后续会持续完善更新,如有错误及其疏漏请不吝赐教!
目录
相关文章
|
25天前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
36 8
|
29天前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
1月前
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
63 1
|
1月前
|
JavaScript C++ 容器
【Azure Bot Service】部署NodeJS ChatBot代码到App Service中无法自动启动
2024-11-12T12:22:40.366223350Z Error: Cannot find module 'dotenv' 2024-11-12T12:40:12.538120729Z Error: Cannot find module 'restify' 2024-11-12T12:48:13.348529900Z Error: Cannot find module 'lodash'
46 11
|
1月前
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
81 2
|
2月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
2月前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express框架构建Web服务器
使用Node.js和Express框架构建Web服务器
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
30 0
|
3月前
|
JavaScript 应用服务中间件 Linux
宝塔面板部署Vue项目、服务端Node___配置域名
本文介绍了如何使用宝塔面板在阿里云服务器上部署Vue项目和Node服务端项目,并配置域名。文章详细解释了安装宝塔面板、上传项目文件、使用pm2启动Node项目、Vue项目打包上传、以及通过Nginx配置域名和反向代理的步骤。
692 0
宝塔面板部署Vue项目、服务端Node___配置域名
|
3月前
|
JavaScript Linux 开发工具
如何将nodejs项目程序部署到阿里云服务器上
该文章详细描述了将Node.js项目部署到阿里云服务器的步骤,包括服务器环境配置、项目上传及使用PM2进行服务管理的过程。