问答

egg部署阿里云成功之后,在外网访问不到

作者:admin 2021-06-29 我要评论

[egg-scripts] Save log file to /root/logs[egg-scripts] Wait Start: 1...[egg-scripts] egg started on http://127.0.0.1:7001 原本是这个问题,后来我看网上...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
[egg-scripts] Save log file to /root/logs
[egg-scripts] Wait Start: 1...
[egg-scripts] egg started on http://127.0.0.1:7001

原本是这个问题,后来我看网上大佬说把启动配置项的hostname改成'0.0.0.0'

第一次修改

我就从官网上面找了这个

// config/config.default.ts
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
  const config = {} as PowerPartial < EggAppConfig >;

  // ...

  return {
    ...config,
    ...bizConfig,
  };
};

exports.cluster = {
   listen: {
     port: 7003,
     hostname: '0.0.0.0', // 运行外网访问
   },
 };

这里我特意将端口改成7003,可以在Centos服务器上看是否生效,如果端口被改成了7003,则说明该语句生效,但是,在重启服务后,还是最开始的这个

[egg-scripts] Save log file to /root/logs
[egg-scripts] Wait Start: 1...
[egg-scripts] egg started on http://127.0.0.1:7001

第二次更改

我在网上找到一些资料说,可以这么写

import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
  const config = {} as PowerPartial < EggAppConfig >;

  // ...

  config.cluster = {
    listen: {
      port: 7003,
      hostname: '0.0.0.0',
    },
  };

  // ...

  return {
    ...config,
    ...bizConfig,
  };
};

但是还是端口还是在7001,说明这条语句没有生效
求求大佬相救

补充

环境:Centos服务器
语言:egg框架和typescript
如果是第二次修改时的代码,我在服务器环境下使用 npm run dev可以实现hostname和端口的改变

2020-04-30 00:07:06,590 INFO 17475 [master] egg started on http://0.0.0.0:7003 (1797ms)

但是使用npm start则不可以改变

如果是第一次修改的代码,在服务器运行npm run devnpm start都不可以得到hostname和端口改变的结果,地址仍然为http://127.0.0.1:7001

package.json

{
  "name": "eggdemo",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "egg": {
    "typescript": true,
    "declarations": true
  },
  "scripts": {
    "start": "egg-scripts start --daemon --title=egg-server-eggDemo",
    "stop": "egg-scripts stop --title=egg-server-eggDemo",
    "dev": "egg-bin dev",
    "debug": "egg-bin debug",
    "test-local": "egg-bin test",
    "test": "npm run lint -- --fix && npm run test-local",
    "cov": "egg-bin cov",
    "tsc": "ets && tsc -p tsconfig.json",
    "ci": "npm run lint && npm run cov && npm run tsc",
    "autod": "autod",
    "lint": "eslint . --ext .ts",
    "clean": "ets clean"
  },
  "dependencies": {
    "egg": "^2.6.1",
    "egg-alinode": "^2.0.1",
    "egg-scripts": "^2.6.0",
    "egg-view-arttemplate": "^2.0.2",
    "egg-view-ejs": "^2.0.1",
    "silly-datetime": "^0.1.2"
  },
  "devDependencies": {
    "@types/mocha": "^2.2.40",
    "@types/node": "^7.0.12",
    "@types/supertest": "^2.0.0",
    "autod": "^3.0.1",
    "autod-egg": "^1.1.0",
    "egg-ci": "^1.8.0",
    "egg-bin": "^4.11.0",
    "egg-mock": "^3.16.0",
    "tslib": "^1.9.0",
    "eslint": "^6.7.2",
    "eslint-config-egg": "^8.0.0",
    "typescript": "^3.0.0"
  },
  "engines": {
    "node": ">=8.9.0"
  },
  "ci": {
    "version": "8"
  },
  "repository": {
    "type": "git",
    "url": ""
  },
  "eslintIgnore": [
    "coverage"
  ],
  "author": "",
  "license": "MIT"
}
###

已解决

看了下官方 issues ,发现是要 npm run tsc然后再npm start....

###

第二次修改的配置文件是对的。第一次完全错误的。
第二次修改后,本地生效是因为,npm run dev 用的egg-bin启动的。egg-bin内置了ts-node,直接编译ts,所以你修改ts文件后启动,直接生效。
你部署到服务器上,npm start用的是egg-scripts启动。得先执行npm run tsc把ts文件编译成js文件,然后再执行npm start。服务器环境只读取js文件(具体为啥,egg文档上“教程--typeScript”那块有写)。

###

没看明白你到底是要问怎么改端口。还是在问阿里云怎么外网访问。

阿里云外网访问需要在安全组配置的,开了对应的端口才可以。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • egg部署阿里云成功之后,在外网访问不

    egg部署阿里云成功之后,在外网访问不

  • 前端实现小说阅读器

    前端实现小说阅读器

  • vue请求接口,使用put时报net::ERR_CON

    vue请求接口,使用put时报net::ERR_CON

  • 关于react渲染更新的问题

    关于react渲染更新的问题

腾讯云代理商
海外云服务器