Cómo instalar ReactJS en Ubuntu 20.04

ReactJS es una biblioteca JavaScript gratuita y de código abierto que se utiliza para crear componentes de interfaz de usuario reutilizables. Fue desarrollada por Facebook en 2011 para crear aplicaciones web ricas y atractivas de forma rápida y eficiente con una codificación mínima. Te permite crear elementos interactivos en sitios web. Utiliza DOM Virtual que hace que la aplicación sea rápida. Ofrece un amplio conjunto de funciones, como DOM virtual, enlace de datos unidireccional, componentes, JSX, declaraciones condicionales y muchas más.

En este tutorial, te mostraremos cómo instalar create react app y alojar una aplicación ReactJS con el servidor web Nginx en Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04 con un mínimo de 2 GB de RAM.
  • Un nombre de dominio válido apuntado con la IP de tu servidor. En este tutorial, utilizaremos el dominio reactjs.ejemplo.com.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, siempre es recomendable actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos ejecutando el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, instala otras dependencias necesarias ejecutando el siguiente comando:

apt-get install curl gnupg2 -y

Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.

Instalar Node.js

A continuación, tendrás que instalar Node.js en tu servidor. Por defecto, la última versión de Node.js no está disponible en el repositorio estándar de Ubuntu 20.04. Así que tendrás que instalar Node.js desde el repositorio oficial de Node.js.

Primero, añade el repositorio de Node.js con el siguiente comando:

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

A continuación, ejecuta el siguiente comando para instalar Node.js en tu sistema:

apt-get install nodejs -y

Tras instalar Node.js, actualiza el NPM a la última versión con el siguiente comando:

npm install npm@latest -g

Deberías obtener la siguiente salida:

/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
/usr/bin/npx -> /usr/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
updated 2 packages in 12.78s

A continuación, verifica la versión instalada de Node.js con el siguiente comando:

node -v

Deberías obtener la siguiente salida:

v14.15.3

Una vez que hayas terminado, puedes continuar con el siguiente paso.

Instalar la herramienta Create React App

Create React App es una herramienta que te ahorra tiempo de instalación y configuración. Sólo tienes que ejecutar un único comando y Create React App configurará todas las herramientas necesarias para iniciar tu proyecto.

Puedes instalar la herramienta Create React App utilizando el siguiente comando:

npm install -g create-react-app

Deberías obtener la siguiente salida:

/usr/bin/create-react-app -> /usr/lib/node_modules/create-react-app/index.js
+ [email protected]
added 67 packages from 25 contributors in 4.705s

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crea tu primera React App

En esta sección, te mostraremos cómo crear una aplicación React con la herramienta Create React App.

Primero, cambia el directorio a /opt y crea tu primer proyecto con el siguiente comando:

cd /opt
create-react-app reactproject

Deberías ver la siguiente salida:

Success! Created reactproject at /opt/reactproject
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 reactproject
  npm start

Happy hacking!

A continuación, cambia el directorio a tu proyecto e inicia tu aplicación con el siguiente comando:

cd /opt/reactproject
npm start

Deberías obtener la siguiente salida:

Compiled successfully!

You can now view reactproject in the browser.

  http://localhost:3000

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

Pulsa CTRL+C para detener la aplicación.

Crear un archivo de inicio para React App

Si quieres iniciar React App automáticamente al reiniciar el sistema, tendrás que crear un servicio systemd para tu aplicación React. Así podrás gestionar tu aplicación fácilmente utilizando el comando systemctl. Puedes crear un archivo de servicio systemd con el siguiente comando:

nano /lib/systemd/system/react.service

Añade las siguientes líneas:

[Service]
Type=simple
User=root
Restart=on-failure
WorkingDirectory=/opt/reactproject
ExecStart=npm start -- --port=3000

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio React y habilítalo para que se inicie al reiniciar el sistema ejecutando el siguiente comando:

systemctl start react
systemctl enable react

Puedes verificar el estado del servicio React con el siguiente comando:

systemctl status react

Deberías obtener la siguiente salida:

? react.service
     Loaded: loaded (/lib/systemd/system/react.service; static; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 06:11:42 UTC; 4s ago
   Main PID: 30833 (node)
      Tasks: 30 (limit: 4691)
     Memory: 141.0M
     CGroup: /system.slice/react.service
             ??30833 npm
             ??30844 sh -c react-scripts start "--port=3000"
             ??30845 node /opt/reactproject/node_modules/.bin/react-scripts start --port=3000
             ??30852 /usr/bin/node /opt/reactproject/node_modules/react-scripts/scripts/start.js --port=3000

Dec 19 06:11:42 ubuntu2004 systemd[1]: Started react.service.
Dec 19 06:11:43 ubuntu2004 npm[30833]: > [email protected] start /opt/reactproject
Dec 19 06:11:43 ubuntu2004 npm[30833]: > react-scripts start "--port=3000"
Dec 19 06:11:46 ubuntu2004 npm[30852]: ? ?wds?: Project is running at http://0.0.0.0:3000/
Dec 19 06:11:46 ubuntu2004 npm[30852]: ? ?wds?: webpack output is served from
Dec 19 06:11:46 ubuntu2004 npm[30852]: ? ?wds?: Content not from webpack is served from /opt/reactproject/public
Dec 19 06:11:46 ubuntu2004 npm[30852]: ? ?wds?: 404s will fallback to /
Dec 19 06:11:46 ubuntu2004 npm[30852]: Starting the development server...

Una vez que hayas terminado, puedes continuar con el siguiente paso.

Configurar Nginx para React App

Es una buena idea instalar y configurar Nginx como proxy inverso para React App. Así podrás acceder a tu aplicación a través del puerto 80.

En primer lugar, instala el paquete Nginx utilizando el siguiente comando:

apt-get install nginx -y

Una vez instalado Nginx, crea un nuevo archivo de configuración de host virtual Nginx:

nano /etc/nginx/sites-available/reactjs.conf

Añade las siguientes líneas:

upstream backend {
  server localhost:3000;
}

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

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Guarda y cierra el archivo y, a continuación, habilita el host virtual Nginx con el siguiente comando:

ln -s /etc/nginx/sites-available/reactjs.conf /etc/nginx/sites-enabled/

A continuación, comprueba si Nginx tiene algún error de sintaxis ejecutando el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

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

Por último, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes verificar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 06:12:42 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 30899 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 30913 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 30915 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.6M
     CGroup: /system.slice/nginx.service
             ??30915 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??30916 nginx: worker process
             ??30917 nginx: worker process

Dec 19 06:12:42 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 19 06:12:42 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

En este punto, Nginx está instalado y configurado para servir a React App. Ahora puedes proceder al siguiente paso.

Acceder a la interfaz web de React App

Ahora, abre tu navegador web y escribe la URL http://reactjs.example.com. Serás redirigido a la interfaz web de React.Js en la siguiente pantalla:

Conclusión

Enhorabuena! has instalado y configurado con éxito React.Js en el servidor Ubuntu 20.04. Espero que ahora tengas conocimientos suficientes para desplegar tu propia aplicación React en el entorno de producción. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio