Skip to content
Start » Web development » Linux software development environment

Linux software development environment

If you want to ride the best environment for software development in Linux Mint (or Ubuntu or other Debian derivatives), this is the right article for that.

Every software developer organizes their work environment for programming using a mix of the needs of the technologies they use to program, and their personal preferences.

Therefore, I start by informing you that there is not the best but the most suitable development environment for you. Here I show you the best OS configuration, programming IDEs and other tools according to my context, but that can help you in yours.

Context

First, let's establish the context of the development environment that you want to set up.

My most common need is to develop systems for the Web. It does not mean that this environment, once configured, cannot be used to develop desktop or mobile applications (mobile apps), but in these contexts, the environment may need some adjustments.

To develop desktops for Microsoft Windows, Apple Mac iOS or iPhone, it is possible that the operating system itself, the basis of the entire environment, needs to be unique to the platform.

That's why this technical context is important, in my case the list of technologies I use in my applications:

  • Application model: Systems for the Web
  • Backend: PHP, Laravel, Eloquent, NodeJS, NPM, Express.js, Asp.NET Core, C#
  • Databases: Mysql, PostgreSQL, Sqlite, MongoDB
  • frontend: HTML, CSS, Blade, Javascript, jQuery, Webpack, Laravel Mix, NPM
  • Versioning: git

Operating System: Linux Mint

Sistema Operacional Linux Mint

Starting at the beginning, choosing the operating system to run like web development tools is crucial. For me, since 2005, developing software requires using a distro Linux.

A little about my history with Linux: I made the first attempts to use it in the late 90's, but with the focus on developing software and not working as a sysadmin, I found it very difficult to configure hardware and resolve several small conflicts in season. He used the Brazilian Conectiva which later became Mandriva.

A few years later, in 2005, developing corporate web applications using Eclipse to program with Java, JSF and running on JBoss application server, on Windows (ME or XP), the performance frustration was constant. Several minutes to climb server and application every small test.

I decided to give Linux another chance and chose the distro sensation of the time: Linux Ubuntu.

I was very pleased to be able to dual-boot much faster and easier than the first few experiences with Linux, and I was far more than pleased, ecstatic, when I ran the first tests with the Eclipse/Java/JBoss stack, and the performance (load speed mainly) be higher than 70% compared to Windows.

I had no doubts, 2 months later I was no longer dual-booting between Windows and Linux and had decided to adopt Linux as my primary operating system for my web software development environment, and other professional or personal activities.

Around 2012 when Ubuntu decided to adopt a new window manager, Unity, several problems started to displease me in the user experience, in addition to the performance that degraded too much. At this time a new change, and after testing some distros, I decided – and I am until today, to adopt Linux Mint, initially using the Mate window manager (fork of the Gnome project version 2) and more recently I use the Cinammon manager (initial fork of Gnome version 3).

Install Linux Mint

These are the steps I use to install Linux Mint on my computers (I will write a detailed tutorial soon):

  1. Download the latest iso image on Mint website
  2. Generate a bootable usb pendrive with rufus
  3. Boot from USB, run installation from USB Live version of Linux Mint
  4. When reaching the point of deciding on formatting or advanced installation, I choose advanced and define the disk partitions as follows:
    • Bootable area for EFI – 540 MB
    • Boot mount point, /boot – 50 MB
    • swap area, /swap – double the amount of RAM memory
    • General mount point (root), / – at least 120 GB
    • home montagrm point, /home – the rest of the free space

After installing the operating system, the development environment is ready to start being configured and customized.

docker

That's right, the next step is to install a virtualization tool to make the various environments that need to run for different projects more flexible. I do this even before installing my programming IDEs.

I'm basically talking about installing Docker, maybe VirtualBox, and other tools in this context that allow me to containerize my environment, up and down services according to the project.

Installing Docker on Linux Mint, Ubuntu, Debian

Leia o tutorial que explica como instalar o Docker no Linux Mint, Ubuntu e derivados Debian.

Após instalar o docker e docker-compose, estamos prontos para instalar a base de nossas linguagens, bancos de dados e outras ferramentas em conteineres Docker sem precisar “poluir” a instalação do sistema operacional, além de ter a vantagem de subir e descer serviços quando necessário e usar versões diferentes de linguagens de programação para cada projeto.

Docker Containers for PHP Laravel

To work with PHP Laravel in my projects, I install PHP and several tools with Docker. I like to be productive in the local environment without having to worry about extreme configurations for the containers, so I use a set of configurations to docker-compose called the Laradock project.

In addition to these containers bringing the installation of the PHP language, I also use Docker databases, Laradock brings docker-compose configuration files for Mysql, MariaDB, PostgreSQL, MongoDB, Redis, ElasticSearch, Memcached.

Also containers for other tools like PHPMyadmin, PGAdmin, RabbitMQ, Beanstalkd, Selenium, Grafana, among others.

Information about what Laradock is and how to install or troubleshoot it can be found in these articles on my website:

Development Editors - IDE

Integrated development environments – IDE (Integrated Development Environments), are the well-known editors for programming. I mainly use PHPStorm to develop in PHP and Laravel, which also serves me in development with Javascript, VueJS, NodeJS.

Although I find it necessary to keep several IDEs installed to take advantage of the best environment according to the Stack. For quick edits I use MS VSCode (Visual Studio Code by Microsoft), mainly for Javascript.

Installing VSCode on Linux Mint, Ubuntu and Debian

Visual Studio Code is a lightweight source code editor that provides comprehensive and easy-to-understand support for editing, navigating, and debugging source code.

VS Code comes with built-in support for JavaScript, TypeScript and Node.js, has a rich ecosystem of extensions (plugins) for other languages (like C++, C #, Java, Python, PHP, Go) and runtimes (like .NET and Unity).

You can easily install extensions to add new languages, languages, themes, debuggers and to connect to additional services like databases or APIs.

To install VSCode on Linux Mint, Ubuntu and Debian, click here to read the article with explanatory tutorial on the blog.

Installing PHPStorm on Linux Mint, Ubuntu and Debian

PhpStorm is perfect for working with Symfony, Laravel, Drupal, WordPress, Zend framework, Magento, Joomla!, CakePHP, Yii and other PHP frameworks.

FTP e sincronização de arquivos

FTP – File Transfer Protocol, é um protocolo para tranferência de arquivos, que mesmo não sendo a ferramenta ideal para realizar o deploy de aplicações Web, é uma mão na roda ter instalada quando se necessita algum acesso rápido a servidores para baixar ou enviar arquivos de maneira contextual.

Logicamente existem contextos de extrema utilizadade para a transferência por FTP, porém no de desenvolvimento de software, seu uso para mim é secundário.

Além de FTP é muito útil manter dados sincronizados, como backup, em nuvem. Não estou falando sobre manter “backup” de seus arquivos fontes, sua gestão deve ser realizada com git ou outro sistema de versionamento de código fonte. Mas sim de manter seus arquivos de trabalho como documentos de editores de textos, planilhas, imagens e outras mídias, sincronizados e seguros.

Para isso também utilizo eu mantenho uma assinatura do Google Drive – R$ 9,99 para 200 MB, e sincronizo os dados usando Insync. Sua licença é muito acessível e vitalícia.

Instalando Filezilla

Filezilla é o meu cliente de FTP preferido por mais de 2 décadas.

Safety

Para meu controle de senhas de acesso e outros dados sensíveis utilizo um aplicativo de gestão de senhas open source, de um dos projetos mais antigos neste segmento. KeepassXC.

Navegadores

Essenciais para qualquer usuário de computador, para desenvolvedores web ferramenta básica de trabalho.

Como utilizo Linux Mint, mantenho apenas dois navegadores de internet instalados: Firefox e Chrome. No passado cheguei a manter o Chromium mas desisti de seu uso, apesar dos abusos de invasão de privacidade do Chrome. Porém é assunto para outro artigo.

Clientes de Banco de dados

Como trabalhar com desenvolvimento de software sem uma ferramenta que permita a manipulação dos bancos de dados, tanto para execução de comandos SQL, para os bancos de dados relacionais, como navegação de suas estruturas e reverse engineering para visualização em diagramas.

O meu software preferido há décadas para este fim é o DBaver.

Testes e consumo de APIs

Qualquer software moderno realiza integrações ou expõe suas funções por meio de APIs (Application Programming Interface), sobre o HTTP protocol.

Para desenvolver de maneira produtiva, documentar e testar APIs, utilizo o Postman.

Ferramentas para comunicação e trabalho em equipe

Já eram primordiais para equipes de desenvolvimento de software, agora que o trabalho remoto se consolidou (finalmente) mais ainda as equipes devem utilizar ferramentas efetivas para comunicação e colaboração.

As que uso em geral são de acesso “online”, no navegador, como Google Suite (Google Workspace), cliente de e-mail (geralmente Gmail).

Mas algumas acho mais produtivas instaladas localmente, que é o caso do Microsoft Teams.

Leave a Reply

Your email address will not be published.

en_USEnglish
%d bloggers like this: