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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 MongoDB,通用型 2核4GB
云服务器ECS,u1 2核4GB 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项目已经可以再服务器跑起来了,本文后续会持续完善更新,如有错误及其疏漏请不吝赐教!
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
4天前
|
网络协议
​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件
​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件
|
5天前
|
域名解析 弹性计算 应用服务中间件
基于nginx反向代理实现OSS固定域名IP访问
本文基于阿里云OSS手册:https://help.aliyun.com/zh/oss/use-cases/use-an-ecs-instance-that-runs-centos-to-configure-a-reverse-proxy-for-access-to-oss,继续深入讨论如何利用nginx反向代理,实现固定的IP/域名访问OSS bucket。官方文档能够解决大部分的反向代理固定IP访问oss bucket的场景,但是对于必须使用域名作为endpoint的系统,会出现signatrue鉴权问题。本文继续在官方文档的基础上,将反向代理需要域名作为endpoint的场景补齐方案。
|
7天前
|
网络协议 安全
ensp中nat server 公网访问内网服务器
ensp中nat server 公网访问内网服务器
|
7天前
|
域名解析 存储 缓存
Linux中搭建DNS 域名解析服务器(详细版)
Linux中搭建DNS 域名解析服务器(详细版)
|
7天前
|
安全 Linux 网络安全
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
|
14天前
|
域名解析 弹性计算 Linux
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
本文为大家介绍了2024年购买阿里云服务器和注册域名,绑定以及备案的教程,适合需要在阿里云购买云服务器、注册域名并备案的用户参考,新手用户可通过此文您了解在从购买云服务器到完成备案的流程。
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
阿里云域名购买注册流程_创建信息模板_域名实名认证全流程
阿里云域名注册指南:访问[阿里云域名注册入口,查询并注册心仪域名,选择后缀,加入清单后结算。价格因后缀而异,如.com首年78元。创建域名信息模板完成实名认证,首次需上传资料。获取优惠口令并使用可享折扣
|
15天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之在阿里云函数计算中想为两个不同的服务分别开通自定义域名如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
26 1
|
2月前
|
弹性计算 网络协议 关系型数据库
ECS域名问题之国内实例能不能导入阿里云新加坡的ECS和RDS如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
8天前
阿里云域名注册流程和备案流程(详细图文教程)
阿里云域名注册指南:访问[阿里云域名注册入口,查询并注册心仪域名,如.com/.cn,加入清单后结算。价格因后缀而异,如.com首年78元。创建信息模板进行实名认证,首次需上传资料。获取域名优惠口令并使用,详细步骤见文档。备案流程参照阿里云ICP备案系统。