#node.js #amazon-web-services #amazon-ec2 #amazon-cloudformation #pm2
Вопрос:
Текущая настройка:
Вручную запустил экземпляр Windows server 2019 с приложением nodes в AWS. Приведенные ниже команды отлично работают с этим экземпляром
Pm2 delete myapp
Pm2 start
Вопрос :
Мы создали AMI вышеупомянутого экземпляра и запустили его с шаблоном cloudformation. В данных пользователя шаблона cloudformation мы внесли некоторые изменения в конфигурационный файл nodejs и перезапустили приложение nodes с помощью вышеуказанных команд.
Выход:
файл конфигурации успешно изменен с помощью данных пользователя cloduformation
Ошибка:
Вышеуказанные команды (Pm2 удалить myapp и Pm2 запустить) не удалось выполнить данные пользователя. ниже приведен журнал данных пользователя.
The errors from user scripts: pm2 : The term 'pm2' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:WindowsTEMPUserScript.ps1:15 char:1
pm2 delete RenderWorker
~~~
CategoryInfo : ObjectNotFound: (pm2:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException
pm2 : The term 'pm2' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:WindowsTEMPUserScript.ps1:16 char:1
pm2 start
~~~
CategoryInfo : ObjectNotFound: (pm2:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException
Другие выводы:
Команда Pm2 доступна для недавно запущенного экземпляра ec2.
C:UsersAdministrator>pm2
usage: pm2 [options] <command>
pm2 -h, --help all available commands and options
pm2 examples display pm2 usage examples
pm2 <command> -h help on a specific command
Access pm2 files in ~/.pm2
Данные пользователя в облачном подтверждении:
UserData:
Fn::Base64: !Sub |
<powershell>
$config = '{
"MyENV": "${MyENV}",
"UR1L": "${URL1}",
"URL2": "${URL2}",
"BUCKET": "${MyBucket}",
"PATH": "${Mypath}"
}'
echo $config
$config | Set-Content C:Projectsmyappsettingsconfig.json
cd 'C:Projectsmyapp'
pm2 delete RenderWorker
pm2 start
</powershell>
<runAsLocalSystem>true</runAsLocalSystem>
<persist>true</persist>
Ответ №1:
Я сомневаюсь, что вы можете работать pm2
напрямую так, потому что путь к pm2
не существует в СИСТЕМНОМ пути.
Вероятно, вам потребуется указать полный путь к нему следующим образом, чтобы выполнить команду.
Например, вы pm2
проживаете в разделе C:etc
, в котором вам нужно указать следующее:
C:etc.pm2 delete RenderWorker
C:etc.pm2 start
или, если вы знакомы с путем, вы можете сделать его переменной среды.
Комментарии:
1. это из-за того, что мой .pm2 находится в каталоге администратора . C:UsersAdministrator.pm2 ?