PM2 启动服务使用80端口

原则上不允许普通用户操作1024以下的端口,如果要绑定,则需要root权限。

解决方法:

  1. AUTHBIND:

    It’s a general rule that you should not run node as root. However only root can bind to ports less than 1024. This is where authbind comes in. Authbind allows non-root users to bind to ports less than 1024. Replace %user% with the user that will be running pm2.

     

    sudo apt-get install authbind

    sudo touch /etc/authbind/byport/80

    sudo chown %user% /etc/authbind/byport/80

    sudo chmod 755 /etc/authbind/byport/80

    You should also add an alias to the user that runs pm2 profile, e.g. ~/.bashrc or ~/.zshrc (note you will need to run source ~/.bashrc or source ~/.zshrc immediately after):

    +alias pm2='authbind --deep pm2'

    Finally ensure that pm2 is updated with authbind:

    authbind --deep pm2 update

     

    Or simply pm2 update if you added the alias to your user’s profile.

    Now you can start applications using PM2 that can bind to port 80 without being root!

  2. startFile class:

    报 null 80,因为权限不够。

    PM2用sudu是有权限的,但是执行命令的是由PM2fork出来的新进程进行处理,新进程是没有root权限的,所以,用启动文件的方式,让PM2自己去启动脚本。

    xxx.json,放在www同级目录

    {
     "apps" : [{
         "name" : "app-name",
         "script"    : "./www",
         "instances" : "max",
         "exec_mode" : "cluster" ,
         "env_development": {
               "PORT": 3000,
               "NODE_ENV": "development"
         },
         "env_production": {
               "PORT": 80,
               "NODE_ENV": "production"
         }
     }]
    }

    Here the default environment is in the env, but you can decide to use env_production by using pm2 start ecosystem.config.js --env production.

    You can define as many environments as you like, just remember that you must pass the name of the environment (after env_) you want to use with --env.

    login with root auth

    pm2 start xxx.json --env production

    if failed check 80 port is used by another process(netstat -anp|grep 80, and kill the process)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用pm2和宝塔面板来部署node项目的步骤如下: 1. 首先,在宝塔面板中安装node.js环境; 2. 然后,使用Git将你的node项目拉取到服务器上; 3. 接着,在服务器上使用npm安装项目依赖; 4. 最后,使用pm2启动你的node项目。 ### 回答2: 使用PM2和宝塔面板来部署Node.js项目非常方便。以下是详细步骤: 1. 在宝塔面板创建一个新站点,并选择Node.js版本。确保您的服务器已经安装了Node.js和NPM。 2. 在您的本地开发环境中,将您的Node.js项目文件上传到服务器上的新站点目录中。 3. 创建一个pm2配置文件。在您的项目根目录中,创建一个名为ecosystem.config.js的文件,并添加以下内容: ``` module.exports = { apps: [{ name: "your-app-name", script: "app.js", watch: true, env: { "NODE_ENV": "production" } }] } ``` 确保将"your-app-name"替换为您的应用程序的名称,"app.js"替换为您的应用程序的启动脚本文件。 4. 在宝塔面板中的站点设置中找到SSH连接信息,使用SSH连接到服务器,并导航到您的项目目录。 5. 在项目目录中,运行以下命令安装PM2: ``` npm install pm2 -g ``` 6. 使用自定义的pm2命令启动您的应用程序: ``` pm2 start ecosystem.config.js ``` 7. 确保您的应用程序已经成功启动。您可以使用以下命令检查应用程序的状态: ``` pm2 status ``` 通过以上步骤,您已经成功使用PM2和宝塔面板来部署Node.js项目。您的应用程序将在后台持续运行,并且您可以随时通过宝塔面板来管理和监控它。 ### 回答3: 使用pm2和宝塔面板来部署Node项目的步骤如下: 1. 首先,确保已经安装了Node.js和宝塔面板,并且已经将宝塔面板配置到了服务器。 2. 在宝塔面板中创建一个新的网站,配置好域名和文件路径,并将域名解析到服务器IP地址。 3. 在本地开发环境中将Node项目完善并进行测试。 4. 将Node项目文件上传到服务器的宝塔面板中创建的网站目录下。 5. 登录到服务器中,打开终端或SSH工具,并进入到Node项目的目录。 6. 运行npm install命令,安装项目所需的依赖。 7. 安装全局pm2模块,运行npm install -g pm2命令。 8. 使用pm2启动Node项目,运行pm2 start app.js(或其他入口文件名)命令。 9. 使用pm2保存进程守护配置,运行pm2 save命令。 10. 在宝塔面板的网站设置中,将网站路径指向Node项目的入口文件。 11. 在宝塔面板的网站设置中,将网站类型设置为Proxy代理模式。 12. 在宝塔面板的网站设置中,配置反向代理,将网站域名和端口指向Node项目监听的地址。 13. 保存设置并重启网站。 通过以上步骤,就可以使用pm2和宝塔面板来部署Node项目了。pm2可以实现Node项目的进程管理和守护,宝塔面板则提供了便捷的界面操作和反向代理配置,将Node项目部署到生产环境中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值