Puede desplegar aplicaciones Node.js
como miembros de un colectivo utilizando las API REST DeployService. En
esta documentación, un miembro de colectivo de Node.js se denomina
servidor
Node.js.
Antes de empezar
Determine los hosts de destino en los cuales desea
instalar servidores Node.js. Instale
Node.js V4 y el paquete npm
apiconnect-collective-member en los hosts de
destino. El mandato para instalar el soporte para servidores Node.js
en Linux es:
npm install -g apiconnect-collective-member
Liberty admite las versiones 4.x y 6.x de Node.
![[16.0.0.x]](../ng_v1600x.gif)
Liberty admite la versión 4.x de Node.
Tras instalar Node.js, ejecute node --version desde una línea de mandatos en el directorio de instalación de Node.js para asegurarse de que tiene una versión de Node soportada; por ejemplo:
C:\nodejs>node --version
v4.7.3
Cada host de destino necesita RXA o SSH. Consulte
Configuración de RXA para operaciones de colectivo de Liberty.
Procedimiento
- Establezca un nombre de usuario y una contraseña para el
controlador colectivo en el archivo de controlador
server.xml; por ejemplo:
<collectiveController user="admin" password="adminpwd" />
- Añada una aplicación Node.js al controlador colectivo.
- Seleccione una aplicación Node.js para instalar. La aplicación
debe tener sus dependencias resueltas.
Desplegará en
Liberty un
archivo TAR comprimido de la aplicación del nodo con la extensión
.tgz. Normalmente,
la aplicación tiene la estructura de directorios siguientes:
package/
app.js
package.json
módulos_nodo/..
server.json
- app.js es la aplicación.
- package.json tiene dependencias para la
aplicación, como lo exige el npm Node.js.
- módulos_nodo/.. Los
directorios proporcionan inclusiones utilizadas por la
aplicación, generadas a partir de package.json.
- server.json es un archivo opcional que
configura puertos y otros valores.
Si desea más información sobre la aplicación que se va a
desplegar, consulte la descripción del mandato
pack en Mandatos apiconnect-collective-member wlpn-server y wlpn-collective.
- Haga que la aplicación Node.js esté disponible para el
controlador.
Complete alguna de las acciones siguientes:
- Asegúrese de que el archivo server.xml del
controlador tiene sentencias que definen variables de despliegue; por
ejemplo:
<deployVariable name="wlpn.appPort"
value="9090" increment="1"/>
<deployVariable name="wlpn.adminPort" value="9453" increment="1"/>
Las variables de despliegue deben establecer valores que permiten
a cada miembro tener un número de puerto exclusivo en los hosts de
destino. Consulte DeployVariable (deployVariable).
- Registre el host en el cual desea instalar un servidor Node.js
con el controlador colectivo.
El registro de un host permite al controlador colectivo
acceder a archivos, mandatos y otros recursos en el host. Utilice el
mandato wlpn-collective
registerHost para registrar el host de
destino. Si un host ya está registrado, puede utilizar el mandato
updateHost para restablecer la información de registro.
Importante: Asegúrese de que ejecuta el mandato wlpn-collective
registerHost o updateHost
como el usuario que utilizará posteriormente para desplegar el
servidor del miembro. Por ejemplo, si ejecuta el mandato como el
usuario root y, después, despliega más tarde un
miembro como un usuario diferente, el despliegue falla porque
DeployService no tiene los derechos para colocar un archivo
en el
directorio /root/wlpn.
Consulte el archivo server.xml del
controlador para buscar los valores para los parámetros
--host, --port,
--user y --password del
mandato. Para no
utilizar un archivo de claves privado SSH como, por ejemplo, para
hosts de destino en sistemas operativos
Linux o
Windows, incluya un usuario
y una contraseña de inicio de sesión del sistema operativo
estableciendo los parámetros --rpcUser y
--rpcUserPassword. El usuario especificado por --rpcUser debe tener derechos de sistema operativo sobre la ubicación de
despliegue de destino.
Asegúrese de que el mandato incluye --autoAcceptCertificates.
wlpn-collective registerHost
host_destino
--host=host_controlador
--port=puerto_HTTPS_controlador
--user=admin_controlador
--password=contraseña_admin_controlador
--rpcUser=usuario_so
--rpcUserPassword=contraseña_usuario_so
--autoAcceptCertificates
Para obtener más
información, consulte Mandatos apiconnect-collective-member wlpn-server y wlpn-collective.
- Revise las reglas de despliegue disponibles.
- Invoque una API REST que devuelva las reglas de despliegue
disponibles en la estructura JSON. Utilice una herramienta que pueda invocar las API REST para
obtener las reglas de despliegue disponibles.
GET
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/rule
La invocación devuelve las reglas de despliegue en la estructura
JSON; por ejemplo:
![[16.0.0.3 and later]](../ng_v16003plus.gif)
{"rules":
[
{"rules":[
{"id":"Node.js Server Rule","description":"Deploy rule for Node.js servers.","type":"Node.js",
"deployCommands":"curl https://${wlp.admin.host}:${wlp.admin.port}/IBMJMXConnectorREST/file/${applicationDir}%2F${applicationPackage}
--user ${wlp.admin.user}:${wlp.admin.password} -k
--create-dirs -o ${WLPN_USER_DIR}/${serverName}/${applicationPackage} --verbose && ${NODE_BIN}
${WLPN_INSTALL_DIR}/wlpn-server unpack ${serverName} ${WLPN_USER_DIR}/${serverName}/${applicationPackage} && ${NODE_BIN}
${WLPN_INSTALL_DIR}/wlpn-collective join ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port}
--user=${wlp.admin.user} --password=${wlp.admin.password} --keystorePassword=${keystorePassword}
--hostName=${wlp.deploy.host} --clusterName=${clusterName} --genDeployVars --autoAcceptCertificates",
"undeployCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName};
${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-collective remove ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port}
--user=${wlp.admin.user} --password=${wlp.admin.password} --autoAcceptCertificates --hostName=${wlp.deploy.host}",
"startCommands": "${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server start ${serverName}",
"stopCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName}",
"restartCommands":"${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server stop ${serverName} &&
${NODE_BIN} ${WLPN_INSTALL_DIR}/wlpn-server start ${serverName}",
"inputVariables":[
{"name":"applicationPackage","type":"file","description":"Name of the application package (.tgz) to install.","displayName":"Server Package File"},
{"name":"keystorePassword","type":"password","description":"Password for keystores of the deployed server","displayName":"Keystore Password"},
{"name":"serverName","type":"String","description":"Name of the server to run the application.","displayName":"Server Name"},
{"name":"applicationDir","type":"filePath","description":"Location of directory containing the application to deploy.","displayName":"Application Directory"},
{"name":"clusterName","type":"String","description":"Name of the Liberty Node.js cluster.","displayName":"Cluster Name"}
],
"name":"Node.js Server","default":true,"runtimeTypes":[{"displayName":"Node.js"}],"packageType":"Application Package"
}
]}
- Si es necesario, cree sus propias reglas de despliegue añadiendo
DeployRules a la configuración de controlador. Consulte
la Regla de despliegue (deployRule.
- Despliegue el servidor Node.js.
Utilice una herramienta que pueda invocar las API REST para
desplegar el servidor Node.js. La regla de despliegue contiene
variables que pueden especificar valores de entrada para la
invocación como, por ejemplo, el servidor Node.js para utilizar y
el nombre de contenedor que se creará. El
cuerpo de retorno contiene una señal que puede utilizar para
solicitar el estado y los resultados.
POST
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/deploy
{
"rule":"Regla de servidor Node.js",
"hosts":["localhost"],
"variables": [
{ "name":"applicationPackage","value":"express-example-app-1.0.2.tgz" },
{ "name":"serverName","value":"ds-member-ctrl5" },
{ "name":"clusterName","value":"MyCluster" },
{ "name":"keystorePassword","value":"password" },
{ "name":"applicationDir","value":"%2Ftmp%2FnodejsApplications" }
]
}
Atención: La variable applicationDir es
una vía de acceso de directorio codificado en UTF-8. La variable
applicationDir es la ubicación de la aplicación
Node.js en el controlador colectivo.
Utilice la señal de retorno, que podría parecerse a
{"id":3}, para obtener el estado y los resultados.
Puede obtener el resultado en formato JSON.
Qué hacer a continuación
Solicite y revise el estado y los resultados del
despliegue.
- Obtenga una lista de señales de despliegue para operaciones de
despliegue solicitadas.
GET
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/deploy
- Obtenga un estado abreviado de las operaciones de despliegue. Utilice la señal del paso 6 para {token}. De esta forma, para una
señal de retorno {"id":3} del paso 6, utilice
3 para el valor
{token}.
GET
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/{token}/status
Durante
el despliegue, la API devuelve IN_PROGRESS:{"status":{"host_destino":"IN_PROGRESS"}}
Tras
el despliegue, la API devuelve FINISHED:{"status":{"host_destino":"FINISHED"}}
También
puede obtener un estado final de ERROR si el
despliegue tiene problemas. Utilice la información siguiente para
obtener información para obtener los resultados completos. La
información de stdout y stderr
que se devuelve puede ayudarle a diagnosticar problemas.
- Obtenga los resultados completos de una operación de
despliegue. Utilice la señal del paso 6 para {token}. De esta forma, para una
señal de retorno {"id":3} del paso 6, utilice
3 para el valor
{token}.
GET
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/{token}/results
Una
vez completado el despliegue, los resultados contienen
información sobre la operación. El ejemplo siguiente muestra
resultados para FINISHED:{"results":[{"nombre_host":"host_destino","status":"FINISHED","result":0,"stdout":"salida_estándar_despliegue",
"stderr":"err_estándar_despliegue",
"deployedArtifactName":"nombre_servidor_de_vars_entrada",
"deployedUserDir":"directorio_host_destino_para_servidor_desplegado"}]}
Anule el despliegue del servidor Node.js. No tendrá que
especificar una regla de despliegue. La regla utilizada para el
despliegue se ha almacenado durante el despliegue. Puede utilizar
la regla para la anulación del despliegue. Se utiliza la tupla de
nombre de host, directorio de usuario y nombre de servidor para
anular el despliegue del servidor. Esta tuple se muestra en las
páginas de servidor en la herramienta Explorar de
Centro de administración.
- Anule el despliegue de un servidor Node.js.
POST
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/undeploy
{
"host": "myHostName",
"userDir":"/root/wlpn",
"serverName":"myServerName"
}
- Obtenga una lista de señales para operaciones de anulación de
despliegue.
GET
https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/undeploy
Para
obtener el estado y los resultados, siga pasos similares a
despliegues.