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
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
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-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
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.
- DocBlockr
- DotENV
- FileIcons
- SyncedSideBar
- SidebarEnhancements
- SublimeLinter
- SublimeLinter-eslint
- Vue Syntax Highlight
- Typescript
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.
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:
- https://www.computersnyou.com/3145/setup-zsh-oh-zsh-linux-mint-quick-guide/
- https://serverfault.com/questions/160581/how-to-setup-passwordless-sudo-on-linux
- https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
- https://www.sublimetext.com/docs/3/linux_repositories.html
- https://tecadmin.net/install-latest-nodejs-npm-on-linux-mint/
- https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit