📘 Este artículo forma parte de nuestra Guía Completa de Linux 2026 y complementa a nuestra Guía Completa de Servidores y Virtualización. Si quieres montar un entorno de desarrollo profesional, esas guías son tu punto de partida.
Introducción
Linux es el sistema operativo preferido por los desarrolladores web, y no es casualidad. Más del 80% de los desarrolladores profesionales usan Linux o macOS como entorno principal, y la mayoría de servidores web del mundo (96%) funcionan con Linux. Trabajar en Linux significa desarrollar en el mismo entorno que producción, evitando sorpresas al desplegar.
En 2026, con el auge de Docker, Kubernetes, Node.js, Python, PHP, Go y frameworks modernos (Next.js, Laravel, Django, React), Linux se ha consolidado como el entorno de desarrollo definitivo. Y con el soporte de WSL2 en Windows y Homebrew en macOS, la barrera de entrada es más baja que nunca.
En esta guía completa vas a aprender:
- Por qué Linux es el mejor SO para desarrollo web.
- Qué distribución elegir según tu perfil.
- Instalación y configuración del sistema base.
- Herramientas esenciales para desarrollo web.
- Stacks de desarrollo (LAMP, LEMP, MERN, JAMstack).
- Entornos aislados con Docker y VMs.
- Editores y IDEs para programar en Linux.
- Terminal, shell y productividad.
- Optimización para desarrollo.
- Solución de problemas comunes.
- FAQ con las preguntas más frecuentes.
Si eres nuevo en Linux, consulta nuestra Guía Completa de Linux. Para servidores en producción, nuestra Guía Completa de Servidores.
Índice de contenidos
- Por qué Linux para desarrollo web
- Qué distribución elegir
- Instalación del sistema base
- Configuración inicial
- Herramientas esenciales
- Stacks de desarrollo web
- Docker para desarrollo
- Editores e IDEs
- Terminal y shell
- Productividad y automatización
- Optimización para desarrollo
- Solución de problemas
- FAQ
- Conclusión
1. Por qué Linux para desarrollo web

1.1 Ventajas de Linux para desarrollo
- Coincide con producción: la mayoría de servidores son Linux.
- Rendimiento: más rápido que Windows/macOS en muchos escenarios.
- Herramientas nativas: Docker, Kubernetes, Node.js, Python, etc.
- Terminal potente: Bash, Zsh, herramientas CLI de primer nivel.
- Gestión de paquetes: instalación rápida y actualizaciones.
- Personalización: control total del entorno.
- Gratis: sin licencias.
- Comunidad: documentación y ayuda abundantes.
- Estabilidad: sesiones largas sin problemas.
- Seguridad: menos malware dirigido a escritorio.
1.2 Comparativa con otros SO
| Aspecto | Linux | macOS | Windows |
|---|---|---|---|
| Coincide con producción | ✅ | 🟡 (Unix) | ❌ |
| Docker nativo | ✅ | ✅ | 🟡 (WSL2) |
| Terminal | ✅✅ | ✅ | 🟡 |
| Rendimiento | ✅ | ✅ | 🟡 |
| Gestión de paquetes | ✅ | 🟡 (Homebrew) | 🟡 (Chocolatey) |
| Personalización | ✅✅ | 🟡 | 🟡 |
| Precio | Gratis | Hardware Apple | Licencia |
| Comunidad dev | ✅✅ | ✅ | ✅ |
1.3 El caso del servidor
El 96% de los servidores web del mundo usan Linux. Desarrollar en Linux significa:
- Sin sorpresas al desplegar.
- Mismo entorno local y remoto.
- Scripts que funcionan igual.
- Docker con rendimiento nativo.
Consulta Guía Completa de Servidores.
1.4 Perfiles de desarrollador
- Frontend: React, Vue, Angular, Svelte.
- Backend: Node.js, Python, PHP, Go, Rust, Java.
- Full-stack: combinaciones de los anteriores.
- DevOps: Docker, Kubernetes, Terraform, Ansible.
- Data/IA: Python, Jupyter, PyTorch.
Todos se benefician de Linux.
2. Qué distribución elegir
2.1 Para desarrolladores principiantes
Ubuntu LTS:
- La más popular.
- Documentación abundante.
- Compatibilidad total.
- Ciclos LTS (5 años).
Linux Mint:
- Basada en Ubuntu.
- Interfaz familiar.
- Muy estable.
Pop!_OS:
- De System76.
- Optimizada para desarrollo.
- Excelente soporte de hardware.
2.2 Para desarrolladores avanzados
Fedora Workstation:
- Innovadora.
- Paquetes recientes.
- Buena integración con contenedores.
Debian:
- Estabilidad extrema.
- Ideal para servidores.
Arch Linux:
- Rolling release.
- Control total.
- Curva de aprendizaje alta.
openSUSE Tumbleweed:
- Rolling release estable.
- Excelente para KDE.
2.3 Recomendaciones por perfil
| Perfil | Distribución recomendada |
|---|---|
| Principiante | Ubuntu LTS, Linux Mint |
| Frontend | Ubuntu, Pop!_OS, Fedora |
| Backend | Ubuntu, Debian, Fedora |
| Full-stack | Ubuntu, Fedora |
| DevOps | Ubuntu, Fedora |
| Data/IA | Ubuntu, Pop!_OS |
| Avanzado | Arch, Fedora, Debian |
2.4 Alternativas sin cambiar de SO
- WSL2 (Windows): Linux dentro de Windows.
- Máquina virtual: VirtualBox, VMware, Proxmox.
- Dual boot: Linux + Windows/macOS.
Consulta Guía completa de VirtualBox y Guía de VMware.
3. Instalación del sistema base
3.1 Preparación
- Backup de datos importantes.
- USB booteable (Rufus, Etcher, Ventoy).
- ISO descargada desde la web oficial.
- Espacio libre (mínimo 50 GB, ideal 250 GB+).
3.2 Instalación (Ubuntu Server o Desktop)
Para desarrollo, Ubuntu Desktop es más cómodo.
Pasos generales:
- Arranca desde el USB.
- Selecciona «Instalar Ubuntu».
- Idioma y teclado.
- Conexión a internet.
- Tipo de instalación:
- Borrar disco (solo Ubuntu).
- Instalar junto a (dual boot).
- Algo más (manual).
- Particionado recomendado:
- /: 50-100 GB.
- /home: resto del disco.
- swap: 2-8 GB (o archivo swap).
- Usuario y contraseña.
- Espera y reinicia.
3.3 Configuración post-instalación
# Actualizar el sistema
sudo apt update && sudo apt full-upgrade -y
# Instalar herramientas esenciales
sudo apt install -y \
build-essential git curl wget vim \
htop net-tools gnupg lsb-release \
ca-certificates software-properties-common \
apt-transport-https3.4 Configurar el entorno
Zona horaria:
sudo timedatectl set-timezone Europe/MadridHostname:
sudo hostnamectl set-hostname dev-machineFuentes adicionales (opcional):
# Fuentes de programación
sudo apt install fonts-firacode fonts-jetbrains-mono3.5 Dual boot con Windows
Recomendaciones:
- Instala Windows primero, luego Linux.
- Desactiva Fast Startup en Windows.
- Desactiva Secure Boot si es necesario.
- Backup antes de particionar.
Consulta Guía Completa de Linux.
4. Configuración inicial
4.1 Drivers gráficos
NVIDIA:
sudo ubuntu-drivers autoinstall
sudo rebootAMD/Intel:
Drivers open source (integrados).
4.2 Herramientas de desarrollo base
# Git
sudo apt install git
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
# Node.js (vía nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
# Python
sudo apt install python3 python3-pip python3-venv
pip install --upgrade pip
# PHP
sudo apt install php php-cli php-fpm php-mysql php-curl php-gd \
php-mbstring php-xml php-zip composer
# Go
sudo apt install golang-go
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh4.3 Docker
# Instalar Docker
curl -fsSL https://get.docker.com | sudo sh
# Añadir usuario al grupo docker
sudo usermod -aG docker $USER
newgrp docker
# Verificar
docker --version
docker run hello-worldConsulta Qué es Docker.
4.4 Bases de datos
MySQL/MariaDB:
sudo apt install mariadb-server
sudo mysql_secure_installationPostgreSQL:
sudo apt install postgresql postgresql-contrib
sudo -u postgres psqlMongoDB:
# Repositorio oficial
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y mongodb-orgRedis:
sudo apt install redis-serverConsulta Cómo instalar MariaDB en Ubuntu 24.04.
4.5 Servidores web
Nginx:
sudo apt install nginx
sudo systemctl enable --now nginxApache:
sudo apt install apache2
sudo systemctl enable --now apache2Consulta Guía de instalación de Nginx y Guía de Apache.
4.6 Configurar SSH
# Instalar
sudo apt install openssh-server
# Habilitar
sudo systemctl enable --now ssh
# Ver estado
sudo systemctl status sshGenerar claves SSH:
ssh-keygen -t ed25519 -C "tu@email.com"Copiar a GitHub/GitLab:
cat ~/.ssh/id_ed25519.pubPega en tu cuenta.
5. Herramientas esenciales
5.1 Control de versiones
Git:
sudo apt install git
# Configuración
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
git config --global init.defaultBranch main
git config --global core.editor "vim"Clientes gráficos:
- GitKraken.
- Sublime Merge.
- Git Cola.
5.2 Terminal
Emuladores:
- GNOME Terminal (por defecto).
- Konsole (KDE).
- Alacritty (GPU-acelerado).
- Kitty (GPU-acelerado).
- WezTerm.
- Tilix (paneles).
Consulta Emuladores de Terminal en Linux.
5.3 Shells
- Bash (por defecto).
- Zsh (con Oh My Zsh).
- Fish (amigable).
Instalar Zsh:
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"5.4 Editores e IDEs
Editores:
- VS Code (el más popular).
- Neovim (terminal).
- Sublime Text.
- Atom (descontinuado).
IDEs:
- JetBrains (IntelliJ, PyCharm, WebStorm, PHPStorm).
- Eclipse.
- NetBeans.
5.5 Herramientas de red
- curl (HTTP).
- wget (descargas).
- httpie (HTTP moderno).
- Postman/Insomnia (APIs).
- Wireshark (tráfico).
sudo apt install httpie postman5.6 Bases de datos – clientes
- DBeaver (universal).
- pgAdmin (PostgreSQL).
- MySQL Workbench.
- Robo 3T (MongoDB).
- RedisInsight.
5.7 Otros
- tmux (multiplexor).
- screen (multiplexor).
- fzf (búsqueda difusa).
- ripgrep (grep rápido).
- fd (find moderno).
- bat (cat moderno).
- exa (ls moderno).
sudo apt install tmux fzf ripgrep fd-find batConsulta Guía básica de tmux y Usos avanzados de grep.
6. Stacks de desarrollo web
6.1 LAMP (Linux + Apache + MySQL + PHP)
Clásico, ideal para WordPress, Laravel, Symfony.
sudo apt install apache2 mariadb-server php php-mysql libapache2-mod-php
# Verificar
sudo systemctl status apache2
sudo mysql_secure_installation
# Probar
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.phpAccede a: http://localhost/info.php
Consulta Cómo montar un servidor LAMP.
6.2 LEMP (Linux + Nginx + MySQL + PHP)
Moderno, mejor rendimiento.
sudo apt install nginx mariadb-server php-fpm php-mysql
# Configurar Nginx para PHP
sudo nano /etc/nginx/sites-available/default
# Reiniciar
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm6.3 MERN (MongoDB + Express + React + Node.js)
Stack JavaScript full-stack.
# MongoDB (ver sección 4.4)
# Node.js (ver sección 4.2)
# Instalar herramientas
npm install -g create-react-app
npm install -g express-generator6.4 MEAN (MongoDB + Express + Angular + Node.js)
Alternativa con Angular.
6.5 JAMstack
JavaScript, APIs, Markup.
- Next.js (React).
- Nuxt (Vue).
- Gatsby.
- Astro.
- Hugo, Jekyll (estáticos).
# Next.js
npx create-next-app@latest mi-app
# Astro
npm create astro@latest6.6 Python + Django/Flask/FastAPI
Stack Python.
# Entorno virtual
python3 -m venv venv
source venv/bin/activate
# Django
pip install django
django-admin startproject mi_proyecto
# Flask
pip install flask
# FastAPI
pip install fastapi uvicorn6.7 Go + Gin/Echo
Stack moderno de alto rendimiento.
# Gin
go install github.com/gin-gonic/gin@latest
# Echo
go get github.com/labstack/echo/v46.8 Comparativa de stacks
| Stack | Lenguaje | Rendimiento | Curva |
|---|---|---|---|
| LAMP | PHP | Medio | Baja |
| LEMP | PHP | Alto | Baja |
| MERN | JS/Node | Alto | Media |
| MEAN | JS/Node | Alto | Media |
| Django | Python | Medio | Media |
| FastAPI | Python | Alto | Media |
| Go | Go | Muy alto | Alta |
7. Docker para desarrollo
7.1 Por qué Docker
- Aislamiento: cada proyecto con sus dependencias.
- Reproducibilidad: mismo entorno en cualquier máquina.
- Portabilidad: funciona igual en desarrollo y producción.
- Versionado: imágenes versionadas.
- Eficiencia: menos recursos que VMs.
Consulta Qué es Docker.
7.2 Docker Compose para desarrollo
Ejemplo: stack LEMP con Docker Compose.
Crea docker-compose.yml:
version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- db
php:
image: php:8.2-fpm
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mi_app
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:Arrancar:
docker compose up -dDetener:
docker compose down7.3 Dev Containers (VS Code)
VS Code permite desarrollar dentro de un contenedor.
Ventajas:
- Entorno idéntico para todo el equipo.
- Sin ensuciar el sistema host.
- Fácil de reproducir.
Configuración:
- Instala la extensión Dev Containers.
- Añade
.devcontainer/devcontainer.jsonal proyecto. - Pulsa «Reopen in Container».
7.4 Docker y bases de datos
PostgreSQL:
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
-v postgres_data:/var/lib/postgresql/data \
postgres:16MongoDB:
docker run -d \
--name mongodb \
-p 27017:27017 \
-v mongodb_data:/data/db \
mongo:77.5 Kubernetes para desarrollo local
Minikube, kind, k3s.
# Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Arrancar
minikube start
# Verificar
kubectl get nodesConsulta Qué es Kubernetes.
8. Editores e IDEs
8.1 VS Code
El editor más popular.
Instalación:
# Snap
sudo snap install code --classic
# O desde el repositorio oficial
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | \
gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg \
/etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] \
https://packages.microsoft.com/repos/code stable main" | \
sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install codeExtensiones recomendadas:
- Python.
- Pylance.
- ESLint.
- Prettier.
- GitLens.
- Docker.
- Remote – SSH / Containers.
- Live Server.
- Tailwind CSS IntelliSense.
8.2 Neovim
Editor de terminal moderno.
# Ubuntu
sudo apt install neovim
# Distribuciones preconfiguradas
# LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
nvim8.3 JetBrains
IDEs profesionales.
# Toolbox App
# Descargar desde: https://www.jetbrains.com/toolbox-app/IDEs:
- IntelliJ IDEA (Java/Kotlin).
- PyCharm (Python).
- WebStorm (JS/TS).
- PHPStorm (PHP).
- GoLand (Go).
- RustRover (Rust).
8.4 Sublime Text
Editor ligero y rápido.
# Repositorio oficial
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/sublimehq-pub.gpg
echo "deb [signed-by=/etc/apt/keyrings/sublimehq-pub.gpg] \
https://download.sublimetext.com/ apt/stable/" | \
sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt update
sudo apt install sublime-text8.5 Comparativa
| Editor | Tipo | Gratis | Ideal para |
|---|---|---|---|
| VS Code | Editor | ✅ | Todo |
| Neovim | Editor terminal | ✅ | Avanzados |
| JetBrains | IDE | ❌ (Community gratis) | Profesionales |
| Sublime Text | Editor | ❌ (evaluación) | Rápidos |
9. Terminal y shell
9.1 Configuración de Bash
.bashrc típico:
# Alias
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias gs='git status'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph'
# Historial
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTCONTROL=ignoreboth
shopt -s histappend
# Prompt
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '9.2 Zsh + Oh My Zsh
Más moderno que Bash.
# Instalar Zsh
sudo apt install zsh
# Instalar Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Tema
nano ~/.zshrc
# ZSH_THEME="agnoster"
# Plugins útiles
# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# Añadir a plugins=() en .zshrc9.3 tmux
Multiplexor de terminal.
sudo apt install tmux
# Uso básico
tmux new -s mi-sesion # Nueva sesión
tmux attach -t mi-sesion # Reconectar
tmux ls # Listar
tmux kill-session -t nombre # Cerrar
# Atajos (prefijo Ctrl+b)
# c: nueva ventana
# n/p: siguiente/anterior
# %: split vertical
# ": split horizontal
# d: detachConsulta Guía básica de tmux.
9.4 Comandos esenciales
# Navegación
pwd, cd, ls, tree
# Archivos
cp, mv, rm, mkdir, touch, find, locate
# Texto
cat, less, head, tail, grep, sed, awk
# Procesos
ps, top, htop, kill, pkill
<# Red
curl, wget, ping, traceroute, ss, netstat
# Sistema
df, du, free, uname, uptime
# Permisos
chmod, chown, umask
# Compresión
tar, gzip, zip, unzipConsulta 10 comandos esenciales de Linux.
10. Productividad y automatización
10.1 Scripts útiles
Backup de proyectos:
#!/bin/bash
# backup.sh
FECHA=$(date +%Y-%m-%d)
DESTINO="/backup/proyectos-$FECHA"
mkdir -p "$DESTINO"
rsync -av ~/proyectos/ "$DESTINO/"
echo "Backup completado: $DESTINO"Script de limpieza:
#!/bin/bash
# limpieza.sh
sudo apt autoremove -y
sudo apt autoclean
docker system prune -f
rm -rf ~/.cache/thumbnails/*10.2 Alias útiles
# Añadir a .bashrc o .zshrc
alias ll='ls -alF'
alias gs='git status'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph'
alias dps='docker ps'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias py='python3'
alias venv='python3 -m venv'10.3 fzf
Búsqueda difusa en terminal.
sudo apt install fzf
# Uso: Ctrl+R para buscar en historial
# Ctrl+T para buscar archivos10.4 Automatización con cron
# Editar cron
crontab -e
# Ejemplos
0 3 * * * /home/user/backup.sh <em># Diario a las 3:00</em>
0 * * * * /home/user/sync.sh <em># Cada hora</em>Consulta Cómo automatizar tareas con cron.
10.5 Ansible para automatizar
Configuración como código.
sudo apt install ansible
# Playbook
ansible-playbook -i hosts site.ymlConsulta Cómo automatizar tareas con Ansible.
11. Optimización para desarrollo
11.1 Rendimiento del sistema
Swappiness bajo:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.confFile descriptors:
echo "fs.file-max=100000" | sudo tee -a /etc/sysctl.confAplicar:
sudo sysctl -p11.2 SSD optimizado
# Habilitar TRIM
sudo systemctl enable fstrim.timer11.3 Memoria
- Recomendado: 16 GB mínimo.
- Ideal: 32 GB+ para contenedores y VMs.
11.4 Almacenamiento
- SSD NVMe para el sistema y proyectos.
- HDD para backups y datos fríos.
- Separar /home en disco distinto (opcional).
11.5 Monitorización
htop, btop, glances:
sudo apt install htop btop glancesnvtop (GPU):
sudo apt install nvtopiotop (I/O):
sudo apt install iotop11.6 Extensiones del navegador
Para desarrollo:
- React DevTools.
- Vue DevTools.
- Redux DevTools.
- JSON Viewer.
- Wappalyzer.
11.7 Configuración de VS Code
Settings recomendados:
{
"editor.fontSize": 14,
"editor.fontFamily": "Fira Code, monospace",
"editor.fontLigatures": true,
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.minimap.enabled": false,
"files.autoSave": "onFocusChange",
"terminal.integrated.fontSize": 13,
"workbench.colorTheme": "One Dark Pro"
}11.8 Dotfiles
Versiona tu configuración.
# Estructura
~/dotfiles/
├── .bashrc
├── .zshrc
├── .gitconfig
├── .vimrc
├── .config/
└── install.shCon GNU Stow:
sudo apt install stow
cd ~/dotfiles
stow bash zsh git vimRepositorio: GitHub (privado o público).
Consulta Guía Completa de Linux.
12. Solución de problemas
12.1 «npm install falla con permisos»
Causa: npm sin permisos correctos.
Solución:
# NO uses sudo
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# O usa nvm (recomendado)12.2 «Docker permission denied»
Causa: usuario no está en grupo docker.
Solución:
sudo usermod -aG docker $USER
newgrp docker12.3 «Puerto 80 ocupado»
Causa: Apache/Nginx ya usa el puerto.
Solución:
# Ver qué usa el puerto
sudo ss -tulpn | grep :80
# Detener el servicio
sudo systemctl stop apache2
# O cambiar el puerto12.4 «MySQL no arranca»
Solución:
# Ver estado
sudo systemctl status mariadb
# Ver logs
sudo journalctl -u mariadb -n 50
# Reparar
sudo mysql_install_db
sudo systemctl start mariadb12.5 «Node.js versión incorrecta»
Causa: múltiples versiones instaladas.
Solución:
# Usar nvm
nvm install --lts
nvm use --lts
nvm alias default node12.6 «Git no acepta mi clave SSH»
Solución:
# Verificar clave cargada
ssh-add -l
# Añadir clave
ssh-add ~/.ssh/id_ed25519
# Probar
ssh -T git@github.com12.7 «El sistema va lento»
Causas:
- Swap alta.
- Muchos procesos.
- Falta de RAM.
Solución:
# Ver uso
htop
free -h
# Cerrar procesos
kill PID
# Limpiar caché
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches12.8 «Docker consume mucho disco»
Solución:
# Ver uso
docker system df
# Limpiar
docker system prune -a
docker volume prune12.9 «Los cambios en archivos no se ven en el navegador»
Causa: caché del navegador.
Solución:
- Ctrl + Shift + R (recarga forzada).
- DevTools → Network → Disable cache.
- Modo incógnito.
12.10 «VPN bloquea conexiones locales»
Solución:
- Configurar split tunneling.
- Añadir rutas locales.
- Usar VPN solo cuando sea necesario.
12.11 «El editor no reconoce el intérprete»
Solución:
# VS Code
# Ctrl+Shift+P → Python: Select Interpreter
# O en settings.json
"python.defaultInterpreterPath": "~/proyecto/venv/bin/python"12.12 «Errores al instalar paquetes Python»
Solución:
# Usar entorno virtual
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt12.13 «WSL2 consume mucha RAM»
Solución:
Crea .wslconfig en Windows:
[wsl2]
memory=8GB
processors=4
swap=2GB12.14 «Los contenedores no se comunican»
Causa: redes de Docker.
Solución:
# Ver redes
docker network ls
# Crear red
docker network create mi-red
# Conectar contenedores
docker network connect mi-red contenedor13. FAQ
¿Por qué Linux es mejor para desarrollo web?
Ventajas principales:
- Coincide con producción (96% de servidores son Linux).
- Docker nativo sin capas intermedias.
- Terminal potente (Bash, Zsh).
- Herramientas nativas (Node, Python, Go, PHP).
- Gestión de paquetes eficiente.
- Gratis y open source.
- Personalización total.
¿Qué distribución de Linux elijo para desarrollar?
Recomendaciones:
- Principiantes: Ubuntu LTS, Linux Mint.
- Frontend: Ubuntu, Pop!_OS, Fedora.
- Backend: Ubuntu, Debian, Fedora.
- DevOps: Ubuntu, Fedora.
- Avanzados: Arch, Debian, Fedora.
Ubuntu LTS es la apuesta segura para el 90% de casos.
¿Necesito saber Linux para programar?
No imprescindible, pero muy recomendable.
- Frontend: puedes usar Windows/macOS.
- Backend: Linux es prácticamente imprescindible.
- DevOps: Linux es obligatorio.
- Full-stack: Linux facilita mucho las cosas.
¿Puedo desarrollar en Windows?
Sí, con WSL2.
- Linux dentro de Windows.
- Docker nativo.
- Terminal Linux.
- Integración con VS Code.
Alternativa: máquina virtual con Ubuntu.
¿Cuánta RAM necesito para desarrollo web?
Recomendaciones:
- Mínimo: 8 GB.
- Recomendado: 16 GB.
- Ideal: 32 GB+ (con contenedores, VMs).
¿Cuánto disco necesito?
Recomendaciones:
- Sistema: 30-50 GB.
- Proyectos: 50-100 GB.
- Docker: 50-100 GB.
- Total mínimo: 250 GB.
- Ideal: 500 GB SSD NVMe.
¿Qué editor uso para desarrollo web?
Recomendaciones:
- VS Code: el más popular y versátil.
- Neovim: para amantes de terminal.
- JetBrains: para proyectos grandes.
- Sublime Text: para rapidez.
VS Code es la apuesta segura.
¿Docker es obligatorio para desarrollo web?
No obligatorio, pero muy recomendable.
- Aislamiento: cada proyecto con sus dependencias.
- Reproducibilidad: mismo entorno para todo el equipo.
- Coincide con producción.
- Fácil de limpiar (docker compose down).
¿Puedo usar WSL2 en lugar de Linux nativo?
Sí, muy buena opción.
- Linux dentro de Windows.
- Docker nativo.
- Terminal Linux.
- Integración con VS Code.
Limitación: rendimiento ligeramente inferior en I/O de disco.
¿Cómo instalo Node.js correctamente?
Recomendación: usa nvm.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
nvm alias default nodeVentaja: múltiples versiones, sin sudo.
¿Cómo gestiono múltiples versiones de Python?
Herramientas:
- pyenv: múltiples versiones de Python.
- venv: entornos virtuales por proyecto.
- poetry: gestión moderna de dependencias.
# pyenv
curl https://pyenv.run | bash
# venv
python3 -m venv venv
source venv/bin/activate¿Cómo configuro Git correctamente?
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"
git config --global pull.rebase falseClave SSH:
ssh-keygen -t ed25519 -C "tu@email.com"
cat ~/.ssh/id_ed25519.pub¿Qué terminal uso en Linux?
Recomendaciones:
- GNOME Terminal: por defecto.
- Alacritty: GPU-acelerado.
- Kitty: GPU-acelerado con más features.
- WezTerm: multiplataforma.
- Tilix: con paneles.
GNOME Terminal o Alacritty son buenas opciones.
¿Bash o Zsh?
Bash: por defecto, más compatible.
Zsh: más moderno, con Oh My Zsh.
Recomendación: empieza con Bash. Cuando quieras, pasa a Zsh.
¿Cómo automatizo tareas repetitivas?
Herramientas:
- Scripts Bash.
- cron para tareas programadas.
- Makefile para tareas de proyecto.
- Ansible para configuración.
Consulta Cómo automatizar tareas con cron.
¿Cómo hago backup de mi entorno de desarrollo?
Opción 1: Dotfiles
# Versionar configuración en Git
~/dotfiles/
├── .bashrc
├── .zshrc
├── .gitconfig
├── .vimrc
└── .config/Opción 2: rsync
rsync -av ~/proyectos/ /backup/proyectos/Opción 3: Backups en cloud
- Nextcloud.
- Dropbox.
- GitHub (para código).
Consulta La importancia de los backups.
¿Cómo migro mi entorno de Windows a Linux?
Plan:
- Exporta proyectos y configuración.
- Instala Linux (dual boot o VM).
- Instala herramientas equivalentes.
- Migra dotfiles.
- Prueba todo.
Alternativa: empieza con WSL2 para adaptarte.
¿Qué hago si algo no funciona?
Pasos:
- Lee el error completo.
- Busca el error en Google/Stack Overflow.
- Revisa logs:
journalctl -xe,dmesg, logs de la app. - Consulta la documentación oficial.
- Pregunta en foros (Stack Overflow, Reddit, Discord).
Recomendación: la mayoría de errores tienen solución documentada.
14. Conclusión
Linux es el sistema operativo definitivo para desarrollo web. Con las herramientas adecuadas, la configuración correcta y un poco de práctica, tendrás un entorno profesional que coincide con producción, es rápido, estable y totalmente personalizable.
Puntos clave:
- Linux coincide con producción (96% de servidores).
- Ubuntu LTS es la apuesta segura para empezar.
- Docker aísla proyectos y reproduce entornos.
- VS Code es el editor más popular.
- Node, Python, PHP, Go se instalan fácilmente.
- Zsh + Oh My Zsh mejoran la terminal.
- tmux multiplica tu productividad.
- Dotfiles en Git versionan tu configuración.
- Automatiza con scripts y cron.
- WSL2 es buena opción si vienes de Windows.
Recomendación para empezar:
- Instala Ubuntu LTS (o WSL2).
- Configura Git + SSH.
- Instala VS Code + extensiones.
- Instala Docker.
- Configura Node, Python, PHP.
- Crea tu primer proyecto.
- Versiona tu configuración en Git.
Si quieres profundizar:
- Guía Completa de Linux 2026
- Guía Completa de Servidores y Virtualización
- Emuladores de Terminal en Linux
- Guía básica de tmux
- Usos avanzados de grep
- Cómo automatizar tareas con cron
- Cómo automatizar tareas con Ansible
- Qué es Docker
- Qué es Kubernetes
- Cómo montar un servidor LAMP
- Cómo instalar MariaDB en Ubuntu 24.04
- Guía de instalación de Nginx







Pingback: Protegiendo tu Red Doméstica