腾讯云服务器跑egg项目遇到的问题

1,266 阅读4分钟

node 环境部署遇到的坑

环境

配置node.js的环境,选择下面的环境直接重新安装。

安全组

什么是安全组:

安全组是一种虚拟防火墙,具备有状态的数据包过滤功能,用于设置云服务器负载均衡、数据库等实例的网络访问控制,是重要的网络安全隔离手段。

您可以通过配置安全组规则,允许或禁止安全组内的实例对公网或私网的访问:

  • 安全组是一个逻辑上的分组,您可以将同一地域内具有相同网络安全隔离需求的基础网络云服务器或弹性网卡实例加到同一个安全组内。
  • 您可以通过安全组策略对实例的出入流量进行安全过滤,实例可以是基础网络云服务器或弹性网卡实例 。
  • 您可以随时修改安全组的规则。新规则立即生效。

安全组的配置

安全组不是很会配置,所以全部放开了。如果有多个实例,将安全组和实例关联

遇到的问题
  • 使用ping 可以ping通服务器

  • 使用telnet 端口的是不可以,具体什么原因不知道,但是xshell和xfp可以上传文件

  • 可能原因:

    • 公司局域网的防火墙
    • 服务器防火墙没有关闭
  • 关闭服务器防火墙

    • 查看系统是centos7还是centos6: 输入 cat /etc/redhat-release,即可显示系统版本。

    • Centos 6.x版本 iptables

      • 查看防火墙状态:

      [root@centos6 ~]# service iptables status

      iptables: Firewall is not running. 说明防火墙没有开启。

      • 开启防火墙:

      [root@centos6 ~]# service iptables start

      • 关闭防火墙:

      [root@centos6 ~]# service iptables stop

    • Centos 7.x版本 firewall

      • 停止firewall systemctl stop firewalld.service
      • 禁止firewall开机启动 systemctl disable firewalld.service
      • 查看默认防火墙状态(关闭后显示notrunning,开启后显示running) firewall-cmd --state

ngnix 配置

  • nginx -t 查看nginx的地址
    # 全局块
...              
# events块
events {         
   ...
}
# http块
http      
{
    # http全局块
    ...   
    # 虚拟主机server块
    server        
    { 
        # server全局块
        ...       
        # location块
        location [PATTERN]   
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    # http全局块
    ...     
}
  • 配置详解
    ########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    # 定义常量
    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页 

    #定义某个负载均衡服务器
    #root 是指定项目的根目录,适用与server和location。可以指定多个,如果locaiton没有指定,会往其外层的server或http中寻找继承。 
    server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口,服务器默认接口是8080不会可以不需要修改
        server_name  127.0.0.1;   #监听地址  
        root         /data/gezhinode; # 指定项目的根目录,配置你项目的更目录(默认是这个)
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录(自己可以设置)   
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }
} 

xfp:用来上传文件的,好像可以git直接上传不会。

Xshell: 用来控制服务器的

升级node

  • 因为使用了egg框架来做后台,但是安装的node的版本太低。

  • 升级node后发现有两个node

    • 修改vim ~/.bash_profile 文件加

    • export N_PREFIX=/data/home/server/nodejs #node实际安装位置

    • export PATH=$N_PREFIX/bin:$PATH // 退出保存就可以

    引用连接 : blog.csdn.net/qq_16339527…

使用PM2管理

pm2的作用

  1. 监听文件变化,自动重启程序
  2. 支持性能监控
  3. 负载均衡
  4. 程序崩溃自动重启
  5. 服务器重新启动时自动重新启动
  6. 自动化部署项目

安装

npm install -g pm2

配置

在工程目录输入:$ pm2 ecosystem

{
  "apps": {
    "name": "pm2-test-server",
    "script": "app.js",
    "watch": true,  // 监听文件改变,自动重启服务
    "ignore_watch": [ // 忽略监听目录
      "node_modules",
      "logs"
    ],
    "instances": 4, // 多进程
    "error_file": "logs/error.log", // 错误日志
    "out_file": "logs/out.log", // 日志
    "log_date_format": "YYYY-MM-DD HH-mm-ss" // 日志时间格式
  }
}

PM2常用命令

  • pm2 list 查看
  • pm2 start ... 开始
  • pm2 restart / 重启
  • pm2 stop / 停止
  • pm2 delete / 删除
  • pm2 info / 基本信息
  • pm2 log / 日志
  • pm2 monit / 查看cup和内存

显示面板解析

字段 解释
app name / id 进程的标识,可以对他们进行别的操作,比如stop,delete
mode 进程模式,cluster或fork。cluster有多个进程,而fork只有一个。
status 进程是否在线
restart 重启次数
uptime 运行时间
cpu cpu占用率
mem 内存占用大小

访问: ip+端口 直接访问

启动成功后看到端口,ip是服务器公网ip