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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
.cn 域名,1个 12个月
简介: 阿里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项目已经可以再服务器跑起来了,本文后续会持续完善更新,如有错误及其疏漏请不吝赐教!
目录
相关文章
|
27天前
|
弹性计算 监控 负载均衡
|
2月前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
|
21天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
129 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
236 62
|
23天前
|
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'
39 11
|
28天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
303 3
|
2月前
|
NoSQL Linux PHP
|
2月前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
123 1