Node.js / npm / Composer无根

在较早的博客文章中,我描述了如何使用Heroku免费托管Node.js。 现在,我将向您展示一种如何通过几行代码在没有root权限的情况下在任何其他共享主机上安装Node.jsnpmComposer的方法。 使用它,您可以安装软件包,部署Vue.js应用程序或仅启动Express.js服务器。 我们始终在用户目录中工作,并使用nvm-节点软件包管理器。


重要的是要事先确保composer和node不可用,并且以下各行不会产生任何输出:

16c389ff1cdd9380cc5f9244775eb6c8

首先,我们设置临时环境变量,稍后将需要它。 为此,我们确定用户的用户目录(通常为〜/,在某些共享主机上也为/ www / htdocs / xxxxxxx /)和所需的PHP版本(例如,使用提供程序All-Inkl / usr / bin / php72,以及DomainFactory / usr / local / bin / php7-72LATEST-CLI):

16c389ff1cdd9380cc5f9244775eb6c8

现在,我们确保控制台上正在运行最新版本的PHP。 为此,我们在主目录中创建一个新文件夹,创建一个软链接,然后将该目录添加到PATH的开头。

16c389ff1cdd9380cc5f9244775eb6c8

现在,我们通过下载,检查和执行安装脚本来安装全局composer,然后还将composer.phar放置在用户目录中并再次创建符号链接:

16c389ff1cdd9380cc5f9244775eb6c8

我们使用nvm安装Node.js。 这是一个bash脚本,实际上用于在节点版本之间方便地切换。 我们在此处使用的属性是,安装的Node.js没有root权限:

16c389ff1cdd9380cc5f9244775eb6c8

我需要对.bashrc进行一些小的更正:

16c389ff1cdd9380cc5f9244775eb6c8

现在我们可以安装并激活当前稳定的Node.js版本:

16c389ff1cdd9380cc5f9244775eb6c8

借助nvm,我们还可以轻松切换版本。

16c389ff1cdd9380cc5f9244775eb6c8

我能够与一些德国共享主机提供商一起执行所有这些步骤,而没有任何问题。 一些托管人在符号链接方面遇到问题,但别名也可以提供帮助。 例如,以下.bashrc可帮助DomainFactory:

16c389ff1cdd9380cc5f9244775eb6c8

在虚拟/共享环境中访问/ proc / stat时,还会出现问题,这就是为什么节点函数os.cpus()例如返回undefined而不是正确数量的core的原因。 安装npm软件包时,这会导致出现错误消息,例如“无法读取未定义的属性'length'”。 我可以使用当前版本的Node.js(例如11.15.0)解决了该问题,从而解决了该问题。

背部