Archive for diciembre, 2020

Balanceo de carga(nginx) entre dos servidores web(nginx) que comparten la misma web servida(cifs) por samba.

#Balanceo de carga usando nginx entre dos equipos que comparten la web que sirven a traves de samba.

El esquema que uso es el siguiente. Tengo un samba server sirviendo una carpeta compartida(192.168.0.13), esta carpeta la montan dos servidores web con nginx y sirven la misma web. La parte de configuracion de samba no la hago pero si se fijan en algun lado mas abajo aparece. Luego de hacer el laburo de instalar un servidor web con el recurso compartido montado y la web clono esa virtual y ya tengo los dos equipos con la web. Hay un tercer equipo que tiene la configureta de balanceo de carga a estos dos equipos que se explica mas abajo. 


#	Con esto configuro uno de los dos servidores web con nginx que van a ser 192.168.0.14 y 192.168.0.15(este luego de todo el laburo es un clon del 14)

#	Instalo cifs-utils ya que comparto por samba
sudo apt-get install cifs-utils
#	Creas el punto de montaje
mkdir /home/ed/compartidos
#	Las credenciales
sudo vi /home/ed/.smbcredentials

username=usuario
password=clave
domain=dominio
#	Aseguras los permisos
sudo chmod 600 /home/ed/.smbcredentials
#	Editas fstab
sudo vi /etc/fstab

//192.168.0.13/recursos /home/ed/compartidos cifs credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 0 0
#	Montas el recurso. 
sudo mount -a -v

#	Para resolver tuve que acudir a
https://oguya.ch/posts/2015-09-01-systemd-mount-partition/
Systemd: (Auto-) Mount cifs shares
https://stackoverflow.com/questions/35805354/systemd-start-service-at-boot-time-after-network-is-really-up-for-wol-purpose # Ojota con el nombre del .mount systemd se queja como los azules de cualquier pelotudes # si montas en Where=/a/b/c este archivo de abajo seria a-b-c.mount sino no funca. sudo vi /etc/systemd/system/home-ed-compartidos.mount [Unit] Description=Montar Recurso Compartido # Esto de abajo anda solo si no tenes network manager. En esos casos en los link mencionan como hacerlo andar After=systemd-networkd-wait-online.service Wants=systemd-networkd-wait-online.service [Mount] What=//192.168.0.13/recursos Where=/home/ed/compartidos Type=cifs Options=credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 [Install] WantedBy=multi-user.target sudo systemctl enable home-ed-compartidos.mount sudo systemctl start home-ed-compartidos.mount sudo systemctl restart home-ed-compartidos.mount sudo systemctl daemon-reload # la parte del servidor web # Me guio en esto https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10 sudo apt update sudo apt install nginx systemctl status nginx sudo systemctl stop nginx sudo systemctl start nginx sudo systemctl restart nginx sudo systemctl reload nginx sudo systemctl disable nginx sudo systemctl enable nginx sudo mkdir -p /home/ed/compartidos/web sudo chown -R $USER:$USER /home/ed/compartidos/web sudo chmod -R 755 /home/ed/compartidos/web nano /home/ed/compartidos/web/index.html <html> <head> <title>Prueba</title> </head> <body> <h1>En eso andamos... </h1> <p>Para aquellos......</p> </body> </html> sudo nano /etc/nginx/sites-available/web server { listen 80; listen [::]:80; root /home/ed/compartidos/web; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } } sudo ln -s /etc/nginx/sites-available/web /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx # Este lo hago una vez y luego clono dicho equipo. Necesito dos con la misma configuracion sirviendo el mismo web # Me guio en esto para la parte de balanceo de carga
Nginx: Balanceo de carga HTTP en Linux
sudo vi /etc/hosts # Esto no es si o si necesario pero lo hago igual # seteo hostname con hostmanectl en cada equipo y /etc/hosts # hosts 192.168.0.11 delantera.pablowsky.io 192.168.0.14 web.pablowsky.io 192.168.0.15 webs.pablowsky.io # En delantera(192.168.0.11) que hace balanceo de carga sudo apt install nginx # Edito sudo vi /etc/nginx/conf.d/loadbalancer.conf upstream delantera { server 192.168.0.15; server 192.168.0.14; } server { listen 80 default_server; listen [::]:80 default_server; server_name 192.168.0.11; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://delantera; } } # Verifico que este todo bien reinicio y habilito nginx sudo nginx -t sudo systemctl restart nginx sudo systemctl enable nginx

diciembre 31, 2020 at 9:57 pm Deja un comentario

MMLPQTP pero para SystemD. jajajaja

Como mierda solucionar el problema del SystemD que no le da pelota a los recursos compartidos por red, ni aunque los declares en /etc/fstab ni aunque crees el puto punto de montura .mount de dicho servicio. Ahí vamos.

#	Instalo cifs-utils ya que comparto por samba
sudo apt-get install cifs-utils
#	Creas el punto de montaje
mkdir /home/ed/compartidos
#	Las credenciales
sudo vi /home/ed/.smbcredentials

username=usuario
password=clave
domain=dominio
#	Aseguras los permisos
sudo chmod 600 /home/ed/.smbcredentials
#	Editas fstab
sudo vi /etc/fstab

//192.168.0.13/recursos /home/ed/compartidos cifs credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 0 0
#	Montas el recurso. 
sudo mount -a -v

#	Para resolver tuve que acudir a(junto a tres dias de no saber como resolverlo)
https://oguya.ch/posts/2015-09-01-systemd-mount-partition/
Systemd: (Auto-) Mount cifs shares
https://stackoverflow.com/questions/35805354/systemd-start-service-at-boot-time-after-network-is-really-up-for-wol-purpose # Ojota con el nombre del .mount systemd se queja como los azules de cualquier pelotudes # si montas en Where=/a/b/c este archivo de abajo seria a-b-c.mount sino no funca. sudo vi /etc/systemd/system/home-ed-compartidos.mount [Unit] Description=Montar Recurso Compartido # Esto de abajo anda solo si no tenes network manager. En esos casos en los link mencionan como hacerlo andar After=systemd-networkd-wait-online.service Wants=systemd-networkd-wait-online.service [Mount] What=//192.168.0.13/recursos Where=/home/ed/compartidos Type=cifs Options=credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 [Install] WantedBy=multi-user.target sudo systemctl enable home-ed-compartidos.mount sudo systemctl start home-ed-compartidos.mount sudo systemctl restart home-ed-compartidos.mount sudo systemctl daemon-reload

diciembre 31, 2020 at 8:17 pm Deja un comentario

lamp / lemp? en fin uno de los dos con servicios separados por equipo.

#	Instalación de lemp separando servicios en diferentes vm
Son tres equipos con Debian Buster. Las ip para cada equipo son 
El equipo con Samba tiene la ip 192.168.0.11
En este equipo compartimos una carpeta a través de la red. En esa carpeta alojamos nuestra web. Luego tenemos el equipo con el servidor web nginx y con php que va a servir la web que esta guardado en el servidor samba. Este servidor tiene la ip 192.168.0.12. Luego tenemos otro equipo que va a tener el servidor de bases de datos mariadb. La db tiene la ip 192.168.0.13

#	En el equipo con la db(192.168.0.13)
#	Actualizamos todo
sudo apt update && sudo apt upgrade
#	Instalamos mariadb server y cliente mas netstat entre otras cosas
sudo apt-get install mariadb-server mariadb-client net-tools
#	Para habilitar conexiones remota me guie en este enlace de abajo
https://websiteforstudents.com/configure-remote-access-mysql-mariadb-databases/
#	Básicamente editamos un archivo y permitimos conexiones remotas
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address                               = 0.0.0.0
#	Reiniciamos los servicios de db
sudo systemctl restart mysql.service
sudo systemctl restart mariadb.service
#	Y verificamos que el puerto 3306 este abierto
sudo netstat -anp | grep 3306
#	Creo la db a la que se van a conectar desde el equipo con el servidor nginx
#	Ingreso como root
sudo mysql -u root -p
#	Creo una db llamada wpdb
CREATE DATABASE wpdb;
#	Aca al usuario wpuser desde el equipo 192.168.0.12 le asigno clave
CREATE USER 'wpuser'@'192.168.0.12' identified by 'clave';
#	Y le garantizo permisos sobre la db creada
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'192.168.0.12';
#	Hago un flush de los privilegios
FLUSH PRIVILEGES;
# 	y salgo
EXIT;
# 	La configuración en el equipo con samba(192.168.0.11) es la siguiente
#	Sigo usando la guía
https://www.server-world.info/en/note?os=Debian_10&p=samba&f=2
#	Instalo Samba
sudo apt -y install samba sudo wget
#	Creo un grupo al que voy a asociar los usuarios que usen este recurso
sudo groupadd recursos
#	Creo la carpeta que voy a poner a disponibilidad del grupo
sudo mkdir /home/recursos
#	Cambio el grupo al que pertenece dicha carpeta
sudo chgrp recursos /home/recursos
#	Otorgo permisos sobre la misma
sudo chmod 777 /home/recursos
#	Edito configuracion de samba. 
sudo vi /etc/samba/smb.conf
# 	En la linea 25 agrego
unix charset = UTF-8
# 	En la linea 30: pongo el nombre del grupo de trabajo
workgroup = RECURSOS
# 	En la linea 37: descomento la linea y agrego la subred que va a poder acceder al servicio
interfaces = 192.168.0.0/24
# 	En la linea 44: descomento esta opción
bind interfaces only = yes
# 	Luego declaro el recurso a compartir
[Recursos]
    #	La carpeta que voy a compartir
    path = /home/recursos    
    writable = yes
    create mode = 0770
    directory mode = 0770
    # desabilito la comparticion para usuario guest
    guest ok = no
    # solo los que pertenezcan al grupo recursos podran acceder. 
    valid users = @recursos

#	Reinicio samba
sudo systemctl restart smbd
# 	Agrego un usuario a samba y le pongo contraseña al mismo
sudo smbpasswd -a ed
#	Ese usuario tiene que pertenecer al grupo recursos asi que le asigno dicho grupo. 
sudo usermod -G recursos ed
#	El equipo con nginx y php va a conectarse a la db(192.168.0.11) remota y 
#	va a guardar las cosas en el equipo samba(192.168.0.13) tiene la ip(192.168.0.12)
#	Instalamos cifs-utils
sudo apt install cifs-utils -y
#	Creas el punto de montaje
mkdir /home/ed/compartidos
#	Las credenciales
sudo vi /home/ed/.smbcredentials
username=usuario
password=clave
domain=dominio
#	Aseguras los permisos
sudo chmod 600 /home/ed/.smbcredentials
#	Edito fstab
sudo vi /etc/fstab
//192.168.0.11/recursos /home/ed/compartidos cifs credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 0 0
#	Montas el recurso. 
sudo mount -a -v
#	Probamos la conexión con la db para eso instalamos cliente mariadb
sudo apt-get install -y mariadb-client
#	Corroborar conexión a la db externa
sudo mysql -uwpuser -pclave wpdb -h 192.168.0.13
#	Ahora instalamos nginx y php
sudo apt-get install nginx mariadb-client php-cgi php-common php-fpm php-pear php-mbstring php-zip php-net-socket php-gd php-xml-util php-gettext php-mysql php-bcmath unzip wget git -y
#	Wordpress va a tener sus archivos en la siguiente ruta 
/home/ed/compartidos
#	Ingreso al recurso que voy a compartir
cd /home/ed/compartidos
#	Descargo la ultima versión de wordpress
sudo wget https://wordpress.org/latest.tar.gz
#	La descomprimo
sudo tar -xvzf latest.tar.gz
#	Edito parámetros de php
sudo vi /etc/php/7.3/fpm/php.ini

post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 32M
date.timezone = America/Argentina/Buenos_Aires
#	Reinicio este servicio
sudo systemctl restart php7.3-fpm
#	Ingresamos a la carpeta de wordpress
cd compartidos/wordpress/
#	Hago una copia de un archivo de configuración 
sudo cp wp-config-sample.php wp-config.php
#	Edito el mismo
sudo nano wp-config.php

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'clave' );

/** MySQL hostname */
define( 'DB_HOST', '192.168.0.13' );
#	La configuracion de nginx con respecto al sitio
sudo nano /etc/nginx/sites-available/wordpress.conf


server {
	listen 80;
	root /home/ed/compartidos/wordpress;
	index index.php index.html index.htm;
	server_name 192.168.0.12;

	access_log /var/log/nginx/wordpress_access.log;
	error_log /var/log/nginx/wordpress_error.log;

	client_max_body_size 64M;

	location / {
		try_files $uri $uri/ /index.php?$args;
		}

	location ~ \.php$ {
		try_files $uri =404;
		include /etc/nginx/fastcgi_params;
		fastcgi_read_timeout 3600s;
		fastcgi_buffer_size 128k;
		fastcgi_buffers 4 128k;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass unix:/run/php/php7.3-fpm.sock;
		fastcgi_index index.php;
			}

		}

#	Genero el enlace para habilitar este sitio
sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
#	Reinicio tanto nginx como php
sudo systemctl restart nginx
sudo systemctl restart php7.3-fpm

Y listo solo queda acceder a la ip(192.168.0.12) de este equipo y configurar lo ultimo. 

La idea detrás de este tutorial es que no di con muchos ejemplos de como hacer algo similar. Siempre que veo tutoriales de instalación de lamp y lemp es todo junto en un mismo equipo. Nunca vi algo así separado por servicios. Esto se podría mejorar si por ejemplo se configuración dominios o subdominios para cada equipo.

diciembre 30, 2020 at 3:54 pm Deja un comentario

Reírte en la cara del puto mensaje de permisos denegado al montar un recurso por samba

#	Creas el punto de montaje
mkdir /home/ed/compartidos
#	Las credenciales
sudo vi /home/ed/.smbcredentials

username=usuario
password=clave
domain=dominio
#	Aseguras los permisos
sudo chmod 600 /home/ed/.smbcredentials
#	Editas fstab
sudo vi /etc/fstab

//192.168.0.11/recursos /home/ed/compartidos cifs credentials=/home/ed/.smbcredentials,,uid=1000,gid=1000 0 0
#	Montas el recurso. 
sudo mount -a -v

diciembre 27, 2020 at 8:17 pm Deja un comentario

Instalar el puto samba y agregar un recurso compartido sin que tu vecina se entere

#	Guía
https://www.server-world.info/en/note?os=Debian_10&p=samba&f=2
#	Instalar Samba
sudo apt -y install samba
#	Creo un grupo al que voy a asociar los usuarios que usen este recurso
sudo groupadd recursos
#	Creo la carpeta que voy a poner a disponibilidad del grupo
sudo mkdir /home/recursos
#	Cambio el grupo al que pertenece dicha carpeta
sudo chgrp recursos /home/recursos
#	Otorgo permisos sobre la misma
sudo chmod 770 /home/recursos
#	Edito configuración de samba. 
sudo vi /etc/samba/smb.conf
# 	En la linea 25 agrego
unix charset = UTF-8
# 	En la linea 30: pongo el nombre del grupo de trabajo
workgroup = RECURSOS
# 	En la linea 37: des-comento la linea y agrego la subred que va a poder acceder al servicio
interfaces = 192.168.0.0/24
# 	En la linea 44: des-comento esta opción
bind interfaces only = yes
# 	Luego declaro el recurso a compartir
[Recursos]
	#	La carpeta que voy a compartir
    path = /home/recursos    
    writable = yes
    create mode = 0770
    directory mode = 0770
    # desabilito la comparticion para usuario guest
    guest ok = no
    # solo los que pertenezcan al grupo recursos podrán acceder. 
    valid users = @recursos

#	Reinicio samba
sudo systemctl restart smbd
# 	Agrego un usuario a samba y le pongo contraseña al mismo
sudo smbpasswd -a ed
#	Ese usuario tiene que pertenecer al grupo recursos asi que le asigno dicho grupo. 
sudo usermod -G recursos ed

diciembre 27, 2020 at 6:40 pm Deja un comentario

Sitio web con el puto nginx sin que el puto gato te queme las tostadas.

#	Me guio en esto 
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10

sudo apt update
sudo apt install nginx
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw status
systemctl status nginx
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl disable nginx
sudo systemctl enable nginx
sudo mkdir -p /var/www/web/html
sudo chown -R $USER:$USER /var/www/web/html
sudo chmod -R 755 /var/www/web
nano /var/www/web/html/index.html

<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

sudo nano /etc/nginx/sites-available/web


server {
        listen 80;
        listen [::]:80;

        root /var/www/web/html;
        index index.html index.htm index.nginx-debian.html;

        server_name 192.168.0.19;

        location / {
                try_files $uri $uri/ =404;
        }
}

sudo ln -s /etc/nginx/sites-available/web /etc/nginx/sites-enabled/
sudo nano /etc/nginx/nginx.conf
sudo nginx -t
sudo systemctl restart nginx

diciembre 26, 2020 at 11:46 pm Deja un comentario

Instalar el puto Moodle en el puto Debian Buster sin que se te pudra el yogur.

#	Sigo esta guia para la parte Lamp en debian buster
https://www.linuxbabe.com/debian/install-lamp-stack-debian-10-buster
sudo apt update && sudo apt upgrade
sudo apt install apache2 apache2-utils
systemctl status apache2
sudo systemctl start apache2
sudo systemctl enable apache2
sudo ufw allow http
sudo chown www-data:www-data /var/www/html/ -R
sudo apt install mariadb-server mariadb-client
systemctl status mariadb
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
sudo mariadb -u root
sudo mysql -u root
sudo apt install php7.3 libapache2-mod-php7.3 php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
sudo a2enmod php7.3
sudo systemctl restart apache2
sudo apt install php7.3-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.3-fpm
sudo systemctl restart apache2
#	Sigo esta guia para la parte moodle
Cómo instalar Moodle en Debian 10 Buster
# Descargas la ultima version de moodle sudo tar xf moodle-latest-310.tgz -C /var/www/html/ sudo chown -R www-data: /var/www/html/moodle/ sudo mkdir /var/www/moodledata sudo chown www-data: /var/www/moodledata/ sudo apt -y install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip sudo apt install -y php-mysql sudo systemctl reload apache2.service sudo mariadb -u root create database moodle charset utf8mb4 collate utf8mb4_unicode_ci; create user moodle@localhost identified by 'tuclave'; grant all privileges on moodle.* to moodle@localhost;

diciembre 16, 2020 at 8:08 pm Deja un comentario


bueno

diciembre 2020
L M X J V S D
 123456
78910111213
14151617181920
21222324252627
28293031  

Archivos