Last active
February 7, 2023 01:50
-
-
Save pmNiko/082848bf713bf332cec1219a89c46785 to your computer and use it in GitHub Desktop.
Centos 7 + Apache httpd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-------- Hosting compartido a través de Apache Httpd ----------- | |
---__________________________________________________________________--- | |
El objetivo será enlazar las distintas aplicaciones con un nombre específico dentro del dominio del servidor | |
compartido. Asumiendo que el dominio es "digitalservices.com" vamos a realizar la implementación tal que | |
tengamos el siguiente esquema: | |
____Esquema de APIS con Node JS | |
HOST | CNAME | SUBDOMAIN | DOMAIN | PATH | TIPO | PROJECT | PORT | ENDPOINT | |
------------------------------------------------------------------------------------------------------------------------- | |
http:// | www | api.tasks | digitalservices.com | / | API-REST | api-tasks | 4000 | /api/v1 | |
http:// | www | api.users | digitalservices.com | / | API-REST | api-users | 4001 | /api/v1 | |
http:// | www | api.auth | digitalservices.com | / | API-REST | api-auth | 4002 | /api/v1 | |
------------------------------------------------------------------------------------------------------------------------ | |
------------------------------------------------------------------------------------------------------------------------ | |
____Esquema de SPAS y páginas estáticas | |
HOST | CNAME | SUBDOMAIN | DOMAIN | PATH | TIPO | PROJECT |PORT | location | |
------------------------------------------------------------------------------------------------------------------------- | |
http:// | www | blog | digitalservices.com | / | SPA | blog-react| 80 | /var/www/blog | |
http:// | www | dash | digitalservices.com | / | SPA | dashboard | 80 | /var/www/dashboard | |
http:// | | | digitalservices.com | / | HTML | intranet | 80 | /var/www/intranet | |
http:// | | | digitalservices.com | /sign | HTML | login | 80 | /var/www/sign | |
------------------------------------------------------------------------------------------------------------------------ | |
------------------------------------------------------------------------------------------------------------------------ | |
___Preparación del entorno | |
- Para el ejemplo usamos un droplet de Digital Ocean con Centos 7 y Apache httpd | |
- Actualizamos el sistema: yum update | |
- Instalamos apt install: snapd - tree - nano - nvm - git | |
- Versión de Node utilizada: nvm install Gallium | |
- Instalaciones de Node JS globales: nodemon - yarn - pm2 | |
- Creamos un directorio de repositorios: mkdir repositories/ | |
*Enlace: | |
https://gist.github.com/pmNiko/c23a71bc7824e0313806269593ef49e0#file-preparacion-del-server-txt | |
___Clonamos los tres proyectos de backend y los dos de frontend | |
- Realizamos la build de cada proyecto para optimizar el código. | |
- Ponemos a correr con PM2 las 3 API-REST -> pm2 start dist/index.js --name "<API NAME>" | |
- Creamos 4 directorios en /var/www/ : | |
1 - blog | |
2 - dash | |
3 - intranet | |
4 - sign | |
- Movemos los archivos del build de cada front a su directorio correspondiente: | |
blog_ mv ~/repositories/blog-react/build/* /var/www/blog/ | |
dash_ mv ~/repositories/dashboard/build/* /var/www/dash/ | |
- Creamos los index.html dentro de intranet/ y sign/ cada uno con su estructura. | |
- Si el usuario no es root debe asignar los permisos: | |
$ sudo chown -R $USER:$USER /var/www/example.com/html | |
$ sudo chmod -R 755 /var/www | |
___Enrutamiento con Apache httpd para los servicios REST | |
- Ahora que ya tenemos preparado el escenario vamos a comenzar por enrutar las APIS: | |
1. Apache httpd tiene un directorio por defecto para ser servido, nosotros vamos | |
a crear dos directorios en /etc/httpd/ : | |
- sites-available: son los sitos validos con la configuración de enrutamiento. | |
- sites-enabled: son enlaces simbolicos a los archivos de configuración de la | |
carpeta sites-available. | |
- Una vez creados vamos a agregar al final del archivo /etc/httpd/conf/httpd.conf | |
---- ------------- -------- | |
IncludeOptional sites-enabled/*.conf | |
......... ....................... | |
2. Antes de redireccionar las rutas vamos a abrir temporalmente el puerto 4000 para poder probar | |
el funcionamiento de la api | |
$ firewall-cmd --zone=public --add-port=4000/tcp --permanent | |
$ firewall-cmd --reload | |
Accedamos a url: http://www.digitalservices.com:4000/api/v1/docs/ | |
Ahhora creamos los archivos de configuración para Apache: | |
- cp /sites-available/default /sites-available/api.tasks | |
- nano /sites-available/api.tasks: | |
<VirtualHost *:80> | |
ServerName apitasks.deployapp.shop | |
ServerAlias www.apitasks.deployapp.shop | |
ProxyRequests Off | |
ProxyPreserveHost On | |
ProxyPass / http://159.223.185.11:4000/api/v1/ | |
ProxyPassReverse / http://159.223.185.11:4000/api/v1/ | |
</VirtualHost> | |
3. Ahora generamos el enlace simbólico en los sitios habilitados: | |
- ln -s /sites-available/api.tasks /sites-enabled/api.tasks | |
- nginx -t -> nos retorna si la sintaxis fue aceptada | |
- systemctl restart httpd o systemctl reload httpd | |
- systemctl status httpd | |
- En la url del navegador: | |
http://api.tasks.digitalservices.com/v1 | |
http://www.api.tasks.digitalservices.com/v1 | |
___Enrutamiento con Apache httpd para los sitios státicos y las SPA | |
1. El proceso de creación de los archivos de configuración: | |
- cp /sites-available/default /sites-available/blog | |
- nano /sites-available/blog: | |
<VirtualHost *:80> | |
ServerName blog.deployapp.shop | |
ServerAlias www.blog.deployapp.shop | |
DocumentRoot /var/www/deployapp.shop/blog | |
ErrorLog /var/www/deployapp.shop/log/error.log | |
CustomLog /var/www/deployapp.shop/log/requests.log combined | |
</VirtualHost> | |
2. Para el caso del sitio de sign: http://digitalservices.com /sign :: intranet - login | |
- cp /sites-available/default /sites-available/home | |
- nano /sites-available/home.conf: | |
<VirtualHost *:80> | |
ServerName digitalservices | |
ServerAlias www.digitalservices | |
Alias "/sign" "/var/www/digitalservices/sign" | |
DocumentRoot /var/www/digitalservices/intranet | |
ErrorLog /var/www/digitalservices/log/error.log | |
CustomLog /var/www/digitalservices/log/requests.log combined | |
</VirtualHost> | |
3. Finalmente repetimos el punto _3_ de la sección "Enrutamiento con Nginx para los servicios REST" | |
para generar los enlaces simbolicos y recargar Apache httpd. | |
____Certificación SSL con Certbot | |
Fuente: https://certbot.eff.org/instructions?ws=apache&os=ubuntufocal | |
Una vez realizado el procedimiento de certbot podemos acceder a nuestras URL | |
anteponiento HTTPS. | |
*Nota en Centos 7 se debe instalar mod_ssl para que certbot pueda certificar los sitios | |
___Conclusión | |
De esta manera pudemos ver las distintas estrategias que se pueden utilizar para redireccionar | |
nuestros servicios a través del puerto 80 con el servidor web de Apache httpd. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment