Cómo instalar ReactJS con proxy Nginx en CentOS 8

28 mar 2021 6 min di lettura
Cómo instalar ReactJS con proxy Nginx en CentOS 8
Indice dei contenuti

Introducción

React es una biblioteca JavaScript gratuita y de código abierto desarrollada por Facebook. Se utiliza para crear interfaces web y componentes de interfaz de usuario. A menudo se utiliza para desarrollar aplicaciones web o aplicaciones móviles. Permite a los desarrolladores crear componentes reutilizables que son independientes entre sí. Se puede usar con otras bibliotecas, incluidas Axios, JQuery AJAX o el window.fetch integrado del navegador.

En esta publicación, le mostraremos cómo instalar React JS en CentOS 8

Prerrequisitos

  • Un servidor que ejecuta CentOS 8.
  • Un nombre de dominio válido apunta a la IP de su servidor.
  • Acceso root o un usuario con privilegios sudo .

Para comenzar

Antes de comenzar, deberá actualizar los paquetes del sistema a la última versión. Puede actualizarlos ejecutando el siguiente comando:

sudo dnf update -y

Una vez que todos los paquetes estén actualizados, instale las otras dependencias requeridas con el siguiente comando:

sudo dnf install gcc-c++ make curl -y

Una vez que haya terminado de instalar las dependencias requeridas, puede continuar con el siguiente paso.

Instalador de NPM y Node.js

A continuación, deberá instalar Node.js y NPM en su sistema. NPM, también llamado administrador de paquetes, es una herramienta de línea de comandos que se utiliza para interactuar con paquetes de Javascript. De forma predeterminada, la última versión de NPM y Node.js no se incluyen en el repositorio predeterminado de CentOS. Luego, deberá agregar el repositorio de origen de Node a su sistema. Puede agregarlo con el siguiente comando cu r l :

curl -sL https://rpm.nodesource.com/setup_14.x | bash -

Una vez que se agrega el repositorio, instale Node.js y NPM con el siguiente comando:

sudo dnf install nodejs -y

Una vez que se complete la instalación, verifique la versión de Node.js ejecutando el siguiente comando:

node -v

Debería obtener el siguiente resultado:

v14.16.0

También puede verificar la versión de NPM ejecutando el siguiente comando:

npm -v

Debería obtener el siguiente resultado:

6.14.11

En este punto, NPM y Node.js están instalados en el sistema. Ahora puede continuar con la instalación de Reactjs.

Instalar Reactjs

Antes de comenzar, deberá instalar la aplicación create-react en su sistema. Es una utilidad de línea de comandos que se utiliza para crear una aplicación React.

Puede instalarlo usando NPM como se muestra a continuación:

sudo npm install -g create-react-app

Una vez instalada, verifique la versión instalada de create-react-app usando el siguiente comando:

create-react-app --version

Debería ver el siguiente resultado:

4.0.3

Entonces, cree su primera aplicación Reactjs con el siguiente comando:

create-react-app myapp

Debería ver el siguiente resultado:

Success! Created myapp at /root/myapp
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd myapp
  npm start

A continuación, cambie el directorio a myapp e inicie la aplicación con el siguiente comando:

cd myapp
sudo npm start

Una vez que la aplicación se haya iniciado correctamente, debería obtener el siguiente resultado:

Compiled successfully!

You can now view myapp in the browser.

  http://localhost:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

Ahora, presione CTRL + C para detener la aplicación. Ahora puede continuar con el siguiente paso.

Cree un archivo de servicio Systemd para Reactjs

A continuación, es una buena idea crear un archivo de servicio systemd para administrar el servicio Reactjs. Puedes crearlo con el siguiente comando:

sudo nano /lib/systemd/system/react.service

Agrega las siguientes líneas:

[Unit]
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/myapp
ExecStart=/usr/bin/npm start
Restart=on-failure

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

sudo systemctl daemon-reload

A continuación, inicie el servicio Reactjs y habilítelo para que se inicie cuando el sistema se reinicie con el siguiente comando:

sudo systemctl start react
sudo systemctl enable react

A continuación, verifique el estado de la aplicación Reactjs con el siguiente comando:

sudo systemctl status react

Debería obtener el siguiente resultado:

? react.service
   Loaded: loaded (/usr/lib/systemd/system/react.service; disabled; vendor preset: disabled)
   Active: active (running) since 2021-03-22 01:51:33 EDT; 4s ago
 Main PID: 2191 (node)
    Tasks: 29 (limit: 12524)
   Memory: 220.3M
   CGroup: /system.slice/react.service
           ??2191 npm
           ??2202 node /root/myapp/node_modules/.bin/react-scripts start
           ??2209 /usr/bin/node /root/myapp/node_modules/react-scripts/scripts/start.js

Mar 23 02:52:34 centos8 npm[2191]: ? ?wds?: Project is running at http://0.0.0.0:3000/
Mar 23 02:52:34 centos8 npm[2191]: ? ?wds?: webpack output is served from
Mar 23 02:52:34 centos8 npm[2191]: ? ?wds?: Content not from webpack is served from /root/myapp/public
Mar 23 02:52:34 centos8 npm[2191]: ? ?wds?: 404s will fallback to /
Mar 23 02:52:34 centos8 npm[2191]: Starting the development server...
Mar 23 02:52:37 centos8 npm[2191]: Compiled successfully!
Mar 23 02:52:37 centos8 npm[2191]: You can now view myapp in the browser.
Mar 23 02:52:37 centos8 npm[2191]:   http://localhost:3000
Mar 23 02:52:37 centos8 npm[2191]: Note that the development build is not optimized.
Mar 23 02:52:37 centos8 npm[2191]: To create a production build, use npm run build.

En este punto, Reactjs se inicia y escucha en el puerto 3000. Puede verificar esto con el siguiente comando:

ss -antpl | grep 3000

Debería obtener el siguiente resultado:

LISTEN    0         128                0.0.0.0:3000             0.0.0.0:*        users:(("node",pid=2209,fd=18))    

Una vez hecho esto, puede continuar con el siguiente paso.

Configure Nginx como un proxy inverso para la aplicación React

A continuación, deberá configurar Nginx como un proxy inverso para acceder a la aplicación React en el puerto 80. Primero, instale el paquete Nginx con el siguiente comando:

sudo dnf install nginx -y

Una vez que Nginx esté instalado, cree un nuevo archivo de configuración de host virtual Nginx con el siguiente comando:

sudo nano /etc/nginx/conf.d/react.conf

Agrega las siguientes líneas:

server {
    listen 80;
    server_name react.example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://localhost:3000;
    }
}

Guarde y cierre el archivo cuando haya terminado, luego verifique Nginx en busca de errores de sintaxis con el siguiente comando:

sudo nginx -t

Debería obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, inicie el servicio Nginx y habilítelo para que se inicie cuando el sistema se reinicie ejecutando el siguiente comando:

sudo systemctl start ngin
sudo systemctl enable nginx

También puede verificar el estado de Nginx ejecutando el siguiente comando:

sudo systemctl status nginx

Debería obtener el estado del servicio React en el siguiente resultado:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-03-23 02:57:48 EDT; 4s ago
  Process: 4079 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 4078 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 4076 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 4081 (nginx)
    Tasks: 2 (limit: 12524)
   Memory: 4.0M
   CGroup: /system.slice/nginx.service
           ??4081 nginx: master process /usr/sbin/nginx
           ??4082 nginx: worker process

Mar 23 02:57:48 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 23 02:57:48 centos8 nginx[4078]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 23 02:57:48 centos8 nginx[4078]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 23 02:57:48 centos8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Mar 23 02:57:48 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Una vez hecho esto, puede continuar con el siguiente paso.

Configurar el cortafuegos

A continuación, deberá permitir los puertos 80 y 443 a través del firewall. Si usa CMD Firewall , puede permitirlos ejecutando los siguientes comandos:

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp

Luego, vuelva a cargar el firewall para aplicar los cambios de configuración:

sudo firewall-cmd --reload

Una vez hecho esto, puede continuar con el siguiente paso.

Inicie sesión en la aplicación Reactjs

Ahora abra su navegador web e inicie sesión en su aplicación Reactjs usando la URL http://react.example.com . Debería ver la página de Reactjs en la captura de pantalla a continuación:

Conclusión

¡Felicidades! ha instalado con éxito Reactjs en CentOS 8. También ha configurado Nginx como un proxy inverso para la aplicación Reactjs. Ahora puede comenzar a desarrollar su aplicación Reactjs.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.