{"id":2564,"date":"2023-01-20T21:42:41","date_gmt":"2023-01-20T21:42:41","guid":{"rendered":"https:\/\/orfeolibre.org\/inicio\/?post_type=knowledgebase&#038;p=2564"},"modified":"2023-08-03T14:11:01","modified_gmt":"2023-08-03T14:11:01","slug":"orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04","status":"publish","type":"knowledgebase","link":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/","title":{"rendered":"OrfeoNG RC2 desde fuentes"},"content":{"rendered":"<h2>Descripci\u00f3n<\/h2>\n<p>C\u00f3mo paso de descargar los fuentes del aplicativo a tener una copia funcional.<\/p>\n<h2>Prerrequisitos<\/h2>\n<p>Arrancamos con un Kuine-LAMP v5 actualizado<\/p>\n<p>Versi\u00f3n de\u00a0 php 7.3 +<\/p>\n<p>Habilitar el m\u00f3dulo de escritura de apache y reiniciar el servicio<\/p>\n<pre>$&gt; sudo a2enmod rewrite\r\n$&gt; sudo service apache2 restart<\/pre>\n<p>Para algunas versiones de Kuine, apache no tiene permisos de editar su archivo de configuraci\u00f3n mediante el comando anterior, por lo que se debe agregar un archivo personalizado \/etc\/apache2\/confenable\/orfeong.conf que se debe copiar de ng_backend\/api\/documentacion\/ofeong.apache<\/p>\n<p>Instalaci\u00f3n de <em>Backend<\/em> Se necesita montar git, composer<\/p>\n<pre>$&gt; apt-get install git composer curl<\/pre>\n<p>Composer recomienda no hacer nada como root, entonces lo que vamos a hacer, es cambiar los permisos a \/var\/www\/html al usuario admin:nogroup para trabajar de ahora en adelante como admin<\/p>\n<pre>$&gt; chown -R admin:nogroup \/var\/www\/html\r\n\r\n<\/pre>\n<h2>Descargue los fuentes<\/h2>\n<div>\n<p>git config &#8211;global http.sslVerify false<\/p>\n<p>git clone https:\/\/aruba.skinatech.com\/Orfeo-NG\/ng_backend<\/p>\n<p>ng_frontend<br \/>\nng_sockets<\/p>\n<p>git checkout jmgamez<\/p>\n<\/div>\n<h2>Prepare los soportes del programa<\/h2>\n<h3>1. Crear la base de datos y usuario<\/h3>\n<p><strong>* MySQL &#8211; MariaDB<\/strong><\/p>\n<p>mysql -u root<\/p>\n<p>MariaDB [(none)]&gt; create database orfeong_db;<br \/>\nQuery OK, 1 row affected (0.031 sec)<\/p>\n<p>MariaDB [(none)]&gt; grant all on orfeong_db.* to orfeong_usr@localhost identified by &#8216;aeCh7zu1Oova0oe2esio&#8217;;<br \/>\nQuery OK, 0 rows affected (0.125 sec)<\/p>\n<p>En caso que no lo deje hacer lo anterior, primero cree el usuario y luego asigne los permisos<\/p>\n<p>MariaDB [(none)]&gt; create user orfeong_usr@localhost identified by &#8216;new_password&#8217;;<br \/>\nQuery OK, 1 row affected (0.031 sec)<\/p>\n<p>Hay un script en ng_backend\/api\/documentacion\/base_mariadb.sql<\/p>\n<p>$&gt; mysql -p -u orfeong_usr orfeong_db &lt; .\/api\/documentacion\/mariadb\/estructura.sql<\/p>\n<p>Y agregue los datos<\/p>\n<p>$&gt; mysql -p -u orfeong_usr orfeong_db &lt; .\/api\/documentacion\/mariadb\/datos_minimos.sql\u00a0 \u00a0 \u00a0y puede agregar los otros datos_adicionales_para_pruebas.sql<\/p>\n<p>$** Aqui para MySQL &#8211; MariaDB .. aplique la BD adecuada<\/p>\n<pre><strong>* PGSQL<\/strong>\r\n\r\n\r\n<strong>* ORACLE DB<\/strong>\r\n\r\nNo olvide montar la extensi\u00f3n para Oracle OCI8 (php-oci8 y php-dbo).. Ver el wiki de <a href=\"https:\/\/guadalupe.skinatech.com\/egroupware\/index.php?menuaction=wiki.wiki_ui.view&amp;lang=es-es&amp;page=Oracle+DB\">Oracle\u00a0DB<\/a>\r\n\r\nTambi\u00e9n revise las pruebas de diferentes bases de datos <a href=\"https:\/\/guadalupe.skinatech.com\/egroupware\/index.php?menuaction=wiki.wiki_ui.view&amp;page=OrfeoNG+-+Pruebas+de+Bases+de+Datos\">AQUI<\/a>\r\n\r\n\r\n*** recordar que antes conectarse ejecute export NLS_LANG=.AL32UTF8\r\n\r\n\r\n<strong>* SQL SERVER<\/strong>\r\n\r\n\r\n<\/pre>\n<h3>2. Escogencia de su servidor de correo<\/h3>\n<pre>AQUI DEBE SABER QUE MTA va a usar para sacar alertas\r\n\r\n\r\n<\/pre>\n<h2>Instalaci\u00f3n del Backend<\/h2>\n<h3>1. Descargue el backend del repositorio<\/h3>\n<pre>$&gt; git clone https:\/\/aruba.skinatech.com\/Orfeo-NG\/ng_backend.git<\/pre>\n<p>Ingrese su usuario y contrase\u00f1a para descargar<\/p>\n<h3>2 Instalar los paquetes de terceros mediante composer<\/h3>\n<p>C\u00e1mbiese a la carpeta ng_backend e instale los <em>plugins<\/em> necesarios para Yii2<\/p>\n<p>Puede revisar la gu\u00eda en https:\/\/www.yiiframework.com\/doc\/guide\/2.0\/es\/start-installation<\/p>\n<pre>$&gt; composer --version\r\n\r\n<a>$&gt; <\/a>composer global require \"fxp\/composer-asset-plugin:^1.4.1\"    (no funciona con =&gt; 7.4 )\r\n<\/pre>\n<p>** todas las restricciones de kuine joden\u00a0 (\/etc\/php\/7.4\/cli\/php.ini)<br \/>\nopen_basedir<br \/>\nallow_url_open<br \/>\ndisable_functions *exec* curl* proc_open<\/p>\n<p>habilite extension curl<\/p>\n<p>C\u00e1mbiese al directorio y ejecute<\/p>\n<pre>$&gt; composer install<\/pre>\n<p>Aqu\u00ed tenemos varias alertas de paquetes abandonados .. resolver<\/p>\n<p><em>Package codeception\/base is abandoned, you should avoid using it. No replacement was suggested.<br \/>\nPackage phpunit\/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.<\/em><\/p>\n<p>Ignore estas alertas<\/p>\n<h3>3 Inicie el backend de YII<\/h3>\n<p>En ese mismo directorio, ejecute el inicio de Yii con<\/p>\n<pre>$&gt; php init<\/pre>\n<p>Seleccionar 0 \u00f3 1 de acuerdo al entorno que se desee utilizar:<\/p>\n<pre>$&gt; Yii Application Initialization Tool v1.0<\/pre>\n<pre>Which environment do you want the application to be initialized in?\r\n\r\n[0] Development\r\n[1] Production\r\n\r\nYour choice [0-1, or \"q\" to quit]<\/pre>\n<p>Escribir <em>yes<\/em> y pulsar la tecla <em>Enter<\/em> para confirmar el paso:<\/p>\n<p>Initialize the application under &#8216;Development&#8217; environment? [yes|no] yes<\/p>\n<p>Y listo ..<\/p>\n<p>OJO con los directorios en que debe escribir .. OJO ** Protejalos<\/p>\n<p>chmod 0777 api\/runtime<br \/>\nchmod 0777 api\/web\/assets<br \/>\nchmod 0777 backend\/runtime<br \/>\nchmod 0777 backend\/web\/assets<br \/>\nchmod 0777 console\/runtime<br \/>\nchmod 0777 frontend\/runtime<br \/>\nchmod 0777 frontend\/web\/assets<br \/>\nchmod 0755 yii<\/p>\n<p>Hemos tenido problemas con el api\/runtime<\/p>\n<p>chown -R www-data:www-data cache debug logs mpdf<\/p>\n<h3>4. Afinar los archivos del backend<\/h3>\n<p>Yii necesita de archivos de configuraci\u00f3n y par\u00e1metros para poder conectarse con bases de datos, correos, entre otros los cuales no se encuentran agregados en el repositorio por temas de seguridad de contrase\u00f1as.<\/p>\n<p>Hay archivos con la extensi\u00f3n .dist de los cuales se debe crear una copia con el mismo nombre exceptuando la extensi\u00f3n .dist y configurar las contrase\u00f1as de acceso seg\u00fan el ambiente con el que se desea trabajar<\/p>\n<p><u><strong>api\/web\/index.php<\/strong><\/u><\/p>\n<p>Sobrescriba a partir del archivo de ejemplo: \/api\/web\/index.php.dist en la ruta \/api\/web\/<\/p>\n<pre>$&gt; cp index.php.dist index.php<\/pre>\n<p>Confirmar que las variables de entorno se encuentren correctamente configuradas de acuerdo al entorno con el se est\u00e9 trabajando [desarrollo | producci\u00f3n]<\/p>\n<pre>defined('YII_DEBUG') or define('YII_DEBUG', true); \/\/ [true | false] ** Debe ser false en produccion\r\ndefined('YII_ENV') or define('YII_ENV', 'dev'); \/\/ [dev | prod]<\/pre>\n<p>$** OJO que Yii no hace esto bien. Si lo deja en produccion no hay ningun mensaje de debug<\/p>\n<p><strong> <u> common\/config\/main-local.php <\/u> <\/strong><\/p>\n<p>Sobreescriba a partir del archivo de ejemplo: \/common\/config\/main-local.php.dist en la ruta \/common\/config\/<\/p>\n<pre>$&gt; cp main-local.php.dist main-local.php<\/pre>\n<p><strong>Nota:<\/strong> En este se deben configurar las credenciales de la conexi\u00f3n a base de datos y el env\u00ed\u00ado de correos que se configur\u00f3 anteriormente<\/p>\n<p>EJM:<\/p>\n<p>&#8216;db&#8217; =&gt; [<br \/>\n&#8216;class&#8217; =&gt; &#8216;yii\\db\\Connection&#8217;,<br \/>\n&#8216;dsn&#8217; =&gt; &#8216;MySQL &#8211; MariaDB:host=127.0.0.1;dbname=orfeong_db&#8217;,<br \/>\n&#8216;username&#8217; =&gt; &#8216;orfeong_usr&#8217;,<br \/>\n&#8216;password&#8217; =&gt; &#8216;aeCh7zu1Oova0oe2esio&#8217;,<br \/>\n&#8216;charset&#8217; =&gt; &#8216;utf8&#8217;,<br \/>\n],<\/p>\n<p><strong><u> common\/config\/params-local.php<\/u> <\/strong><\/p>\n<pre>$&gt; cp params-local.php.dist params-local.php<\/pre>\n<p>Si no se puede cambiar su configuraci\u00f3n .. para que lo tengo aqu\u00ed .. !!\u00a0 ??<\/p>\n<p><strong><u>api\/config\/params.php<\/u><\/strong><u><br \/>\n<\/u><br \/>\nEn las implementaciones comerciales, es decir proyectos implementados por nosotros se debe poner <strong>orfeoNgExpress<\/strong> en false<u><\/u><\/p>\n<p>&#8211; <strong>orfeoNgExpress<\/strong> =&gt; false,<u><br \/>\n<\/u><\/p>\n<p><strong><u>api\/config\/params-local.php<\/u><\/strong><u><\/u><\/p>\n<p>&nbsp;<\/p>\n<pre>$&gt; cp params-local.php.dist params-local.php<\/pre>\n<p>Asegure que los valores son los correctos<u><br \/>\n<\/u><br \/>\n&#8211; <strong>llaveAES<\/strong>: cambien la llave de AES por un larga .. EJM: pwgen -y 30 (\u00e9sta tiene que estar en el front tambi\u00e9n)<br \/>\n&#8211; <strong>debugAES<\/strong> : \/\/ [TRUE,FALSE]<br \/>\n&#8211; <strong>ipServer<\/strong>: Es la direcci\u00f3n publica del aplicativo. (Esto es usado para las notificaciones con Link .. para que pueda entrar)<\/p>\n<div>\n<p>ejm: &#8216;http:\/\/demong1.skinatech.com\/orfeo-ng\/#\/&#8217;,\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ********* OJO .. termina en \/<\/p>\n<p>&#8212; puede ser https pero si escoge ir por SSL .. entonces todo debe ser https hasta los sockets<\/p>\n<\/div>\n<div>&#8211; <strong>urlBaseApiPublic<\/strong>: La ruta de la pagina publica de PQRs<br \/>\nejm: &#8216;http:\/\/demong1.skinatech.com\/ng_backend\/frontend\/web\/&#8217;, \/\/Ruta de p\u00e1gina p\u00fablica<\/div>\n<p>&#8211; <strong>debugEmail<\/strong>: Es para etapa de desarrollo .. donde recibe todas las notificaciones.<\/p>\n<p>Conexi\u00f3n a la autenticaci\u00f3n externa con protocolo LDAP (LDAP o AD) los par\u00e1metros son est\u00e1ndares y reconocidos (ojo con el SSL del AD)<\/p>\n<p>&#8211; &#8216;<strong>ldapServer<\/strong>&#8216; =&gt; &#8216;192.168.69.217&#8217;,<br \/>\n&#8211; &#8216;<strong>cadenaBusqLDAP<\/strong>&#8216; =&gt; &#8216;ou=People,o=skinatech,dc=com&#8217;,<br \/>\n&#8211; &#8216;<strong>campoBusqLDAP<\/strong>&#8216; =&gt; &#8216;uid&#8217;,<br \/>\n&#8211; &#8216;<strong>adminLDAP<\/strong>&#8216; =&gt; &#8216;cn=Manager,dc=skinatech,dc=com&#8217;,<br \/>\n&#8211; &#8216;<strong>paswLDAP<\/strong>&#8216; =&gt; &#8216;agh0la$p8U&#8217;,<\/p>\n<p>Usuario y clave de la p\u00e1gina p\u00fablica (Usuario An\u00f3nimo, utilizado para <em>login<\/em> autom\u00e1tico)<\/p>\n<div>&#8211; &#8216;<strong>userPublicPage<\/strong> =&gt; &#8216;anonimo&#8217;,<\/div>\n<div>\n<p>&#8211; &#8216;<strong>passwordPublicPage<\/strong> =&gt; &#8216;4n0N1m0$&#8217;,<\/p>\n<p>Por \u00faltimo el tipo de BD<\/p>\n<p>&#8211;<strong> motorDB<\/strong>: Motor utilizado para la basede datos principal: [&#8216;MySQL &#8211; MariaDB&#8217;, &#8216;POSTGRESQL&#8217;, &#8216;MSSQL&#8217;, &#8216;ORACLE&#8217;]<br \/>\n<u><\/u><\/p>\n<p>&#8211; Comente lo que no necesita<u><\/u><\/p>\n<p>NOTA: Lo que est\u00e1 common son par\u00e1metros de toda la aplicaci\u00f3n mientras que los del api solo sirven para el backend.<\/p>\n<\/div>\n<h3>5. Crear directorios para almacenamiento de archivos de la aplicaci\u00f3n<\/h3>\n<p>En el mismo directorio de backend, se deben crear las siguientes carpetas donde se almacenar\u00e1n los archivos generados por la aplicaci\u00f3n.<\/p>\n<p>mkdir api\/web\/trd_formats\u00a0 api\/web\/tmp_mail\u00a0 api\/web\/bodega<\/p>\n<p>y asignarle permisos 775 con permisos de apache<\/p>\n<pre>$&gt; cd api\/web\/\r\n$&gt; chown www-data:www-data -----&gt;\r\n$&gt; chmod 755 actas\/ cuadro_documental\/ documentos\/ plantillas\/ tmp_docs\/ tmp_masiva\/ user_formats\/ usuarios\/ trd_formats\/ tmp_mail\/ bodega\/ gestion_archivo\/<\/pre>\n<p>** Esto toca corregirlo eventualmente porque por ahora lo parchamos con Apache, pero no es presentable y es una vulnerabilidad de seguridad<\/p>\n<h2>Instalaci\u00f3n de Sockets Server<\/h2>\n<p>La documentaci\u00f3n para instalar nodejs<\/p>\n<p>https:\/\/github.com\/nodesource\/distributions\/blob\/master\/README.md<\/p>\n<p>Por ejemplo para instalar la versi\u00f3n 12 en <strong>Debian<\/strong> 10<\/p>\n<pre>$&gt; sudo su - \r\n$&gt; curl -fsSL https:\/\/deb.nodesource.com\/setup_12.x <span class=\"pl-k\">|<\/span> bash -\r\n\r\n$&gt; sudo apt-get install -y nodejs<\/pre>\n<p>https:\/\/github.com\/nodesource\/distributions\/blob\/master\/README.md<\/p>\n<p>Y monte el angular cli (en donde o como que usuario)<\/p>\n<pre>$&gt; sudo npm install -g @angular\/cli@8 (para version angular 8 .. poner @8)\r\n\r\n$&gt; sudo ng version\r\n\r\n     _                      _                 ____ _     ___\r\n    \/ \\   _ __   __ _ _   _| | __ _ _ __     \/ ___| |   |_ _|\r\n   \/ \u25b3 \\ | '_ \\ \/ _` | | | | |\/ _` | '__|   | |   | |    | |\r\n  \/ ___ \\| | | | (_| | |_| | | (_| | |      | |___| |___ | |\r\n \/_\/   \\_\\_| |_|\\__, |\\__,_|_|\\__,_|_|       \\____|_____|___|\r\n                |___\/\r\n    \r\n\r\nAngular CLI: 8.3.29\r\nNode: 12.22.1\r\nOS: linux x64\r\nAngular: \r\n... \r\n\r\nPackage                      Version\r\n------------------------------------------------------\r\n@angular-devkit\/architect    0.803.29\r\n@angular-devkit\/core         8.3.29\r\n@angular-devkit\/schematics   8.3.29\r\n@schematics\/angular          8.3.29\r\n@schematics\/update           0.803.29\r\nrxjs                         6.4.0\r\n\r\n\r\n\r\n<\/pre>\n<h3>1. Descargue el sockets del repositorio<\/h3>\n<pre>$&gt; git clone https:\/\/aruba.skinatech.com\/Orfeo-NG\/ng_sockets.git<\/pre>\n<p>y en el directorio creado corra<\/p>\n<pre>$&gt; npm install<\/pre>\n<p>para instalar todas las dependencias<\/p>\n<h3>2. Active el Servicio<\/h3>\n<p>2.1 Instalaci\u00f3n<\/p>\n<p>Pruebe el servicio de angular para que todo este bien<\/p>\n<pre>$&gt; npm run dev<\/pre>\n<div>y ahora m\u00e1ndelo a <em>background<\/em> y para producci\u00f3n<\/div>\n<p>$&gt; npm start &amp;&gt; \/dev\/null &amp;<\/p>\n<p>Pruebe que el puerto esta abierto<\/p>\n<pre>$&gt; telnet localhost 3005<\/pre>\n<p>Es importante verificar que este puerto tambi\u00e9n est\u00e1 disponible desde los clientes (o sea, desde afuera)<\/p>\n<p>firewall-cmd\u00a0 &#8211;zone=external &#8211;permanent &#8211;add-port=3005\/tcp<br \/>\nfirewall-cmd\u00a0 &#8211;reload<\/p>\n<h3>3. Agregue un servicio al arranque<\/h3>\n<p>Los pasos a seguir del proceso anterior:<\/p>\n<p>$&gt; sudo su<br \/>\n$&gt; vim \/etc\/systemd\/system\/ng_sockets.service<\/p>\n<p>Agregue el siguiente script<\/p>\n<p>[Unit]<br \/>\nDescription=OrfeoNG Sockets<br \/>\nDocumentation=http:\/\/www.orfeolibre.org<br \/>\nAfter=network.target remote-fs.target nss-lookup.target<\/p>\n<p>[Service]<br \/>\nType=simple<br \/>\nUser=admin<br \/>\nGroup=nogroup<br \/>\nWorkingDirectory=\/var\/www\/html\/ng_sockets<br \/>\nExecStart=\/usr\/bin\/npm start<br \/>\nRestart=on-abort<br \/>\nStartLimitInterval=60<br \/>\nStartLimitBurst=10<\/p>\n<p>[Install]<br \/>\nWantedBy=multi-user.target<\/p>\n<p>Incluirlo en la secuencia de arranque<\/p>\n<p>$&gt; sudo systemctl daemon-reload<br \/>\n$&gt; sudo systemctl enable ng_sockets.service<br \/>\n$&gt; sudo systemctl start ng_sockets.service<\/p>\n<p>Verifique que esta corriendo con<\/p>\n<p>$&gt; sudo systemctl status ng_sockets.service<\/p>\n<p><strong>2.1. Provea el tunel de SSL<br \/>\n<\/strong><br \/>\nSiga este howto <a href=\"https:\/\/guadalupe.skinatech.com\/egroupware\/index.php?menuaction=wiki.wiki_ui.view&amp;page=Stunnel4\">Stunnel &#8211;&gt;<\/a><br \/>\n<strong>2.2 Evite que se caiga con Monit<\/strong><\/p>\n<p>En \/etc\/mont\/conf-available\/ng_sockets<\/p>\n<p>set daemon 60<\/p>\n<p>check host ng_sockets with address 127.0.0.1<br \/>\nstart program = \u00ab\/usr\/bin\/systemctl start ng_sockets.service\u00bb<br \/>\nstop program = \u00ab\/usr\/bin\/systemctl stop ng_sockets.service\u00bb<br \/>\nif failed port 3005 then restart<br \/>\nif 5 restarts within 5 cycles then timeout<\/p>\n<h2>Instalaci\u00f3n de FrontEnd<\/h2>\n<h3>1. Descargue el <em>frontend<\/em> del repositorio<\/h3>\n<pre>$&gt; git clone https:\/\/aruba.skinatech.com\/Orfeo-NG\/ng_frontend.git<\/pre>\n<p>y en el directorio creado ng_frontend corra<\/p>\n<pre>$&gt; npm install<\/pre>\n<p>para instalara todos las dependencias<\/p>\n<p>OJO: Esto no debe existir &#8230; found 982 vulnerabilities (938 low, 9 moderate, 35 high)<\/p>\n<p>Verifique como quedo<\/p>\n<pre>$&gt; ng version\r\n\r\n_ _ ____ _ ___\r\n\/ \\ _ __ __ _ _ _| | __ _ _ __ \/ ___| | |_ _|\r\n\/ \u00e2\u2013\u00b3 \\ | '_ \\ \/ _` | | | | |\/ _` | '__| | | | | | |\r\n\/ ___ \\| | | | (_| | |_| | | (_| | | | |___| |___ | |\r\n\/_\/ \\_\\_| |_|\\__, |\\__,_|_|\\__,_|_| \\____|_____|___|\r\n|___\/\r\n\r\n\r\nAngular CLI: 8.0.1\r\nNode: 12.20.2\r\nOS: linux x64\r\nAngular: 8.0.0\r\n... animations, cdk, common, compiler, compiler-cli, core, forms\r\n... material, platform-browser, platform-browser-dynamic\r\n... platform-server, router\r\n\r\nPackage Version\r\n------------------------------------------------------------\r\n@angular-devkit\/architect 0.803.17\r\n@angular-devkit\/build-angular 0.803.9\r\n@angular-devkit\/build-optimizer 0.803.9\r\n@angular-devkit\/build-webpack 0.803.9\r\n@angular-devkit\/core 8.3.17\r\n@angular-devkit\/schematics 8.3.17\r\n@angular\/cli 8.0.1\r\n@angular\/http 7.2.15\r\n@angular\/material-moment-adapter 8.2.3\r\n@ngtools\/webpack 8.3.9\r\n@schematics\/angular 8.3.17\r\n@schematics\/update 0.803.17\r\nrxjs 6.5.2\r\ntypescript 3.4.5\r\nwebpack 4.39.2\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>2. Edite los archivos de configuraci\u00f3n<\/h3>\n<p>En ng_frontend\/src\/environments toca editar environment.prod.ts y el environment.ts<\/p>\n<p>$&gt; cp environment.ts.dist environment.ts\u00a0\u00a0 (para devel )<\/p>\n<p>$&gt; cp environment.prod.ts.dist environment.prod.ts (para produccion)<br \/>\n$&gt; ln -s environment.prod.ts environment.ts\u00a0 (necesita ambos iguales)\u00a0 **<\/p>\n<p>Cambie los servidores<\/p>\n<div><strong>apiUrl<\/strong>: &#8216;http:\/\/demong1.skinatech.com\/ng_backend\/api\/web\/&#8217;,<\/div>\n<div>\n<div><strong>frontUrl<\/strong>: &#8216;http:\/\/demong1.skinatech.com\/orfeo-ng\/&#8217;,<\/div>\n<div><strong>SOCKET_ENDPOINT<\/strong>: &#8216;http:\/\/demong1.skinatech.com:3005&#8217;,<\/div>\n<div>\n<p>En las implementaciones comerciales, es decir proyectos implementados por nosotros se debe poner <strong>orfeoNgExpress<\/strong> en false<\/p>\n<p><strong>orfeoNgExpress: false <\/strong><\/p>\n<\/div>\n<p><strong>llaveAES<\/strong>: &#8216;aegoh3quai3Aijum7cae0theifo}uv&#8217;, (esta es la misma que coloco en ng_backend\/api\/config\/params-local.php)<\/p>\n<p><strong> captchaSiteKey<\/strong>: &#8216;6Lc8_d4UAAAAANK-6A3w_lP6Crr6BJzT9ldbK_iO&#8217;, (para el uso de recaptcha de google .. obligatorio)<\/p>\n<\/div>\n<p>Los hash no deberian cambiar\u00a0 ??<\/p>\n<h3>3. Pruebe que funciona local<\/h3>\n<p>$&gt; ng serve &#8211;host 0.0.0.0<\/p>\n<p>Debe mostrar <em>compiling<\/em> &#8230; !!! y no ning\u00fan error<\/p>\n<h3>4. Construya el distribuible para producci\u00f3n<\/h3>\n<p>$&gt; ng build &#8211;prod<\/p>\n<p>Esto se demora arto y toca ponerle memoria (4G min) para que lo complete adem\u00e1s .. es bueno<\/p>\n<p>export NODE_OPTIONS=\u00bb&#8211;max-old-space-size=3072&#8243;<\/p>\n<h3>5. Ubicar carpeta generada de la aplicaci\u00f3n<\/h3>\n<p>Luego de ejecutar el comando anterior, se debe ubicar la carpeta \u00aborfeo-ng\u00bb generada en la ruta \u00abng_frontend\/dist\/orfeo-ng\u00bb y moverla a la ruta base del servidor \u00ab\/var\/www\/html\u00bb para que pueda ser accedida desde el navegador<\/p>\n<p>https:\/\/192.168.8.27\/orfeo-ng<\/p>\n<h3>6. Verifique que el firewall local le permite<\/h3>\n<p>firewall-cmd &#8211;zone=external &#8211;list-all<\/p>\n<p>Deben aparecer los puertos, si no .. toca agregarlos<\/p>\n<p>firewall-cmd &#8211;zone=external &#8211;permanent &#8211;add-service=http<br \/>\nfirewall-cmd &#8211;zone=external &#8211;permanent &#8211;add-port=3005\/tcp<br \/>\nfirewall-cmd &#8211;reload<\/p>\n<div><\/div>\n<h2>Trucos<\/h2>\n<p>&nbsp;<\/p>\n<h2>Problemas<\/h2>\n<h3>1. En directorios no est\u00e1ndar (userdir) se necesita PUT<\/h3>\n<p>Hay que poner en tambi\u00e9n la opci\u00f3n de PUT<\/p>\n<p>Require method GET POST PUT OPTIONS<\/p>\n<p>&nbsp;<\/p>\n<h3>2. Al hacer npm install hay muchas vulnerabildades reportadas<\/h3>\n<p>found 962 vulnerabilities (938 low, 7 moderate, 17 high)<br \/>\nrun `npm audit fix` to fix them, or `npm audit` for details<\/p>\n<p>Esto usualmente es causado por paquetes obsoletos. Puede arreglarlo a las manos con<\/p>\n<p>$&gt; npm audit fix<br \/>\no<br \/>\n$&gt; npm audit fix &#8211;force<\/p>\n<p>Puede revisar la info extendida con<\/p>\n<p>$&gt; npm audit<\/p>\n<p>Al final pueden quedar problemas con paquetes obsoletos que toca remover .. y parcharlo con codigo filtrando las entradas o algo asi<\/p>\n<p>** OJO esto pude upgradear la version de angular cli y ser incompatible<\/p>\n<h3>3. Hay problemas con la version de Angular &#8211; CLI<\/h3>\n<p>Option \u00abextractCss\u00bb is deprecated: Deprecated since version 11.0. No longer required to disable CSS extraction for HMR.<br \/>\nThis version of CLI is only compatible with Angular versions ^11.0.0-next || &gt;=11.0.0 &lt;12.0.0,<br \/>\nbut Angular version 8.0.0 was found instead.<\/p>\n<p>Please visit the link below to find instructions on how to update Angular.<br \/>\nhttps:\/\/update.angular.io\/<\/p>\n<h3>4. FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed &#8211; JavaScript heap out of memory<\/h3>\n<p>Tene problemas con la configuracion de NODE<\/p>\n<p>export NODE_OPTIONS=\u00bb&#8211;max-old-space-size=3072&#8243;<\/p>\n<h3>5. No muestra los fonts<\/h3>\n<p>Esto suele ser un URL malo. Una forma de averigurlo es abrir el debugger del navegador y en la pesta\u00f1a de navegacion ver los URL perdidos<\/p>\n<p>Nos ocurrio con el environment.prod.ts que decia<\/p>\n<p><strong>frontUrl<\/strong>: &#8216;http:\/\/demong1.skinatech.com\/ng_frontend\/&#8217;,<\/p>\n<p>y debia decir<\/p>\n<p><strong>frontUrl<\/strong>: &#8216;http:\/\/demong1.skinatech.com\/orfeo-ng\/&#8217;,<\/p>\n<h3>6. \u00abCall to a member function validateCsrfToken() on string\u00bb<\/h3>\n<p>En algunos servidores dependiendo de la versi\u00f3n de php instalada, la librer\u00eda descargada por composer yiisoft\/yii2 genera este error, \u00abCall to a member function validateCsrfToken() on string\u00bb<br \/>\nPara esto, se coloc\u00f3 un archivo comprimido en la base del repositorio de backend llamado \u00abyii2.tar.gz\u00bb el cual se debe descomprimir y mover la carpeta a la ruta \u00abvendor\/yiisoft\/\u00bb<\/p>\n<p>Usuario vencido<\/p>\n<p>[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: auth_key = lbFLavEgSFKrr57N5sBgMh2J-8Ecwc32<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: password_hash = $2y$13$0WsazEUxjZ2ldzqZuI\/FDegLw2DfJIR8ng8Zagz.rNsMgk0f4UmIq<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: status = 10<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: created_at = 1620256240<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: update_at = 1631822016<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: ahora en la tabla de userhistorypassword<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: esto:<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: en ti userid agrega este hash<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: $2y$13$AyFpy6MidDvfYnpmWoNpCeuW\/EC8Gwu4km59Sdm4O5M2mmYgJRY9.<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: y en creaci\u00f3n user history&#8230;.<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: 2026-07-31 19:44:21<br \/>\n[5:07 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: Hacer los pasos que acabo de enviar<br \/>\n[5:08 p.\u00a0m., 21\/9\/2021] Jenny Maritza Gamez: Esto en la tabla usuarios, el usuario de soporte<\/p>\n<h3>7. Sale mal la interfaz &#8230;\u00a0 (FINGERPRINT Login)<\/h3>\n<p>En ambientes super restringidos, los clientes no tiene acceso a google y ciertos dominios necesarios. Entonces toca abrirles a los usuarios acceso a<\/p>\n<p>fonts.googleapis.com<br \/>\nfonts.gstatic.com<br \/>\nmaxcdn.bootstrapcdn.com<br \/>\nwww.google.com<br \/>\nwww.gstatic.com<br \/>\ncontent-autofill.googleapis.com<br \/>\nupdate.googleapis.com<\/p>\n<h3>8. Error de permisos con APPARMOR<\/h3>\n<p>ln -s \/etc\/apparmor.d\/usr.lib.libreoffice.program.soffice.bin \/etc\/apparmor.d\/disable\/<br \/>\nln -s \/etc\/apparmor.d\/usr.lib.libreoffice.program.xpdfimport \/etc\/apparmor.d\/disable\/<br \/>\nln -s \/etc\/apparmor.d\/usr.lib.libreoffice.program.senddoc \/etc\/apparmor.d\/disable\/<br \/>\napparmor_status<br \/>\ncat \/sys\/kernel\/security\/apparmor\/profiles | grep libreoff<br \/>\napparmor_parser -R \/etc\/apparmor.d\/usr.lib.libreoffice.program.soffice.bin<br \/>\napparmor_parser -R \/etc\/apparmor.d\/usr.lib.libreoffice.program.xpdfimport<br \/>\napparmor_parser -R \/etc\/apparmor.d\/usr.lib.libreoffice.program.senddoc<\/p>\n<h3>9. Error de conexi\u00f3n<\/h3>\n<p>El error de conexi\u00f3n lo pueden generar varias cosas. En esencia es comunicaci\u00f3n con el <em>Bakend<\/em> entonces revise<\/p>\n<ul>\n<li>Que el ng_sockets este arriba y que el puerto esta abierto y que corresponda con la direcci\u00f3n que est\u00e1 en el front<\/li>\n<li>La configuraci\u00f3n de la Base de datos. revise los par\u00e1metros de la BD y si tiene conexi\u00f3n<\/li>\n<li>Verifique que la configuraci\u00f3n en ng_backend\/api\/config\/params-local tiene las direcciones correctas de acceso al API<\/li>\n<li>Las llaves AES de ciframiento entre el front y el back deben ser iguales<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>10. Activar el debug para entender errores de backend<\/h3>\n<p>Cuando el servidor genera un error de conexi\u00f3n, se debe revisar la consola del navegador, para evidenciar el error que se presenta, en caso de que indique \u00abError interno del servidor\u00bb, se debe activar el debug<\/p>\n<ul>\n<li>En el archivo <strong>ng_backend\/api\/web\/index.php <\/strong><\/li>\n<li>La configuraci\u00f3n de la Base de datos. revise los par\u00e1metros de la BD y si tiene conexi\u00f3n<\/li>\n<li>Verfique que la configuraci\u00f3n en ng_backend\/api\/config\/params-local tiene las direcciones correctas de acceso al API<\/li>\n<li>Las llaves AES de ciframiento entre el front y el back deben ser iguales<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Referencias<\/h2>\n<p>&#8211; NuevaG21%<\/p>\n<p>FIN<\/p>\n<hr \/>\n<div><u><strong>Advertencia<\/strong><\/u><\/div>\n<p>Este documento es privado y es de u so exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorizaci\u00f3n escrita es contra la ley de derechos de autor y de propiedad intelectual, y ser\u00e1 motivo de una acci\u00f3n legal.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>==============================================================<br \/>\n25-Septiembre-2020 Elvis Valera V1.1<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descripci\u00f3n C\u00f3mo paso de descargar los fuentes del aplicativo a tener una copia funcional. Prerrequisitos Arrancamos con un Kuine-LAMP v5 actualizado Versi\u00f3n de\u00a0 php 7.3 + Habilitar el m\u00f3dulo de escritura de apache y reiniciar [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","knowledgebase_cat":[54],"class_list":["post-2564","knowledgebase","type-knowledgebase","status-publish","hentry","knowledgebase_cat-orfeong-beta"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental<\/title>\n<meta name=\"description\" content=\"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental\" \/>\n<meta property=\"og:description\" content=\"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos\" \/>\n<meta property=\"og:url\" content=\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/\" \/>\n<meta property=\"og:site_name\" content=\"Orfeo SGDEA - Gesti\u00f3n Documental\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-03T14:11:01+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/\",\"url\":\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/\",\"name\":\"OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental\",\"isPartOf\":{\"@id\":\"https:\/\/orfeolibre.org\/inicio\/#website\"},\"datePublished\":\"2023-01-20T21:42:41+00:00\",\"dateModified\":\"2023-08-03T14:11:01+00:00\",\"description\":\"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos\",\"breadcrumb\":{\"@id\":\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/orfeolibre.org\/inicio\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OrfeoNG RC2 desde fuentes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/orfeolibre.org\/inicio\/#website\",\"url\":\"https:\/\/orfeolibre.org\/inicio\/\",\"name\":\"Orfeo SGDEA - Gesti\u00f3n Documental\",\"description\":\"Sistema de Gesti\u00f3n Documental de Archivo Electr\u00f3nico\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/orfeolibre.org\/inicio\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental","description":"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/","og_locale":"es_ES","og_type":"article","og_title":"OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental","og_description":"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos","og_url":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/","og_site_name":"Orfeo SGDEA - Gesti\u00f3n Documental","article_modified_time":"2023-08-03T14:11:01+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/","url":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/","name":"OrfeoNG RC2 desde fuentes - Orfeo SGDEA - Gesti\u00f3n Documental","isPartOf":{"@id":"https:\/\/orfeolibre.org\/inicio\/#website"},"datePublished":"2023-01-20T21:42:41+00:00","dateModified":"2023-08-03T14:11:01+00:00","description":"Descripci\u00f3n de c\u00f3mo paso de descargar el aplicativo a tener una copia funcional y sus prerrequisitos","breadcrumb":{"@id":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orfeolibre.org\/inicio\/documentacion-orfeo\/documentacion-orfeong\/orfeong-beta\/orfeong-rc2-con-php-7-3-debian-10-ubuntu-20-04\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/orfeolibre.org\/inicio\/"},{"@type":"ListItem","position":2,"name":"OrfeoNG RC2 desde fuentes"}]},{"@type":"WebSite","@id":"https:\/\/orfeolibre.org\/inicio\/#website","url":"https:\/\/orfeolibre.org\/inicio\/","name":"Orfeo SGDEA - Gesti\u00f3n Documental","description":"Sistema de Gesti\u00f3n Documental de Archivo Electr\u00f3nico","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orfeolibre.org\/inicio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/knowledgebase\/2564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/knowledgebase"}],"about":[{"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/types\/knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/comments?post=2564"}],"version-history":[{"count":8,"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/knowledgebase\/2564\/revisions"}],"predecessor-version":[{"id":3402,"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/knowledgebase\/2564\/revisions\/3402"}],"wp:attachment":[{"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/media?parent=2564"}],"wp:term":[{"taxonomy":"knowledgebase_cat","embeddable":true,"href":"https:\/\/orfeolibre.org\/inicio\/wp-json\/wp\/v2\/knowledgebase_cat?post=2564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}