Instalacion y Configuración de Workspace PHP en Linux Mint 20

Recientemente tuve que formatear mi PC de escritorio, reinstalar el sistema operativo, y volver a instalar todas las herramientas que necesito y uso para desarrollo web en PHP, y me pareció un buen momento para armar este post, y dejar registro de todos los pasos.

Estos son los pasos que seguí, en un Linux Mint 20 Ulyana recién instalado.

zsh y oh-my-zsh

Terminal ZSH en Linux Mint mientras redacto este post

Terminal ZSH en Linux Mint mientras redacto este post

Primero instalo el shell zsh y lo configuro como shell predeterminado para mi usuario.

sudo apt install zsh
sudo chsh -s /bin/zsh tehuel

Después instalo oh-my-zsh. El script de instalación se encarga de todos los pasos necesarios.

# instalo con wget
sudo apt install git
wget --no-check-certificate http://install.ohmyz.sh -O - | sh

# alternativamente, instalo con curl
sudo apt install git curl
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Luego de que el instalador finalice hay que reiniciar sesión. Debería tener zsh funcionando como shell por defecto, con oh-my-zsh.

Finalmente, modifico ~/.zshrc, cambio el parámetro theme a lambda.

PHP 8.0 y Composer

PHP y Composer funcionando, en sus ultimas versiones

PHP y Composer funcionando, en sus ultimas versiones

Ya que tengo que reinstalar desde 0, aprovecho y elijo la última versión de PHP. Instalo algunos paquetes adicionales, para poder instalar Laravel.

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.0-cli php8.0-bcmath php8.0-curl php8.0-mbstring php8.0-xml php8.0-json php8.0-mysql php8.0-sqlite3 php8.0-zip
php --version

Después de tener PHP funcionando, el siguiente paso es composer. Sin seguir los pasos recomendados en la documentación de Composer, opté por un método más directo: descargar el .phar, sin script instalador de por medio.

curl -sS https://getcomposer.org/installer | php
chmod +x composer.phar
sudo mv composer.phar /usr/local/bin/composer
composer --version

SSH Keys

Copio las claves SSH personales que tengo guardadas, y las agrego al sistema.

chmod 400 tehuel
chmod 400 tehuel.pub
mkdir .ssh
mv tehuel .ssh/
mv tehuel.pub .ssh/
ssh-add .ssh/tehuel

Comando SUDO

Configuro las opciones de SUDO usando el comando visudo, para que no me pida contraseña.

%sudo   ALL = (ALL) NOPASSWD: ALL

NodeJS / NPM

Instalo la versión LTS de Node, usando el instalador provisto por Nodesource.

sudo apt-get install curl python-software-properties
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

Una vez que está todo listo, proceso finalmente a la instalación de Node. Incluyo (tal como lo sugiere el script) algunas dependencias necesarias para compilar paquetes de forma nativa.

sudo apt-get install -y nodejs gcc g++ make

Corrijo los permisos para instalar paquetes de forma global

Edito ~/.zshrc, agrego al final:

# Adds global node packages binaries to path
export PATH="$HOME/.npm-global/bin:$PATH"

Sublime Text

Configuración de Sublime Text Editor, dentro del editor

Configuración de Sublime Text Editor, dentro del editor

Para instalar el editor de texto se puede hacer como indica la web, agregando los repositorios, o también se puede hacer directo en el store de apps de Linux Mint.

Voy por el camino oficial, agregando los repositorios.

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

Paquetes Instalados

Dejo un listado rápido de algunos paquetes instalados en Sublime Text.

Configuración (sólo incluyo las modificaciones):

{
  "font_size": 11,
  "hot_exit": false,
  "line_padding_bottom": 6,
  "line_padding_top": 6,
  "remember_full_screen": true,
  "scroll_past_end": false,
  "show_encoding": true,
  "show_line_ending": true,
}

Docker y docker-compose

// TODO

PHPStorm (y Jetbrains Toolbox)

Instalo JetBrains Toolbox (hace que la instalación y actualización de todo lo relacionado a Jetbrains sea más sencilla). Para eso, descargo desde jetbrains.com/toolbox-app/.

Extraigo y muevo el archivo ejecutable a /usr/local/bin. Luego, ejecuto el Jetbrains Toolbox.

tar -x jetbrains-toolbox-{version}.tar.gz
sudo mv jetbrains-toolbox-{version}/jetbrains-toolbox /usr/local/bin
/usr/local/bin/jetbrains-toolbox

Instalo y ejecuto PHPStorm. A partir de acá todas las configuraciones las hago de manera visual.

Configuración de Editor de PHPStorm

Configuración de Editor de PHPStorm

Configuraciones:

Settings > Editor > Font

  • Font: Cascadia Code
  • Size: 13
  • Line Spacing: 1.8
  • Activo “Enable Font Ligatures”

Settings > Editor > General > Breadcrumbs

  • Desactivo “Show breadcrumbs” (arriba de todo)

Settings > Editor > General > Code Folding

  • Activo “Documentation comments”

Settings > Tools > Web Browsers

  • Desactivo “Show browsers popup in the editor” (abajo de todo)

Otras Configuraciones: Inotify Watches Limit

Me aparece una notificación indicando que el limite actual de inotifiers puede ser demasiado bajo. Esto es una config a nivel sistema.

sudo nano /etc/sysctl.d/idea.conf

Agrego la linea

fs.inotify.max_user_watches = 524288

Luego, para cargar la nueva config ejecuto el comando:

sudo sysctl -p --system

Finalmente, reinicio PHPStorm.

Otros Programas

  • Sublime Merge: Después de agregar los repositorios para Sublime Text Editor, ejecutar
sudo apt-get install sublime-merge

Los siguientes programas se pueden instalar directamente a partir de archivos .deb.

Referencias: