sudo apt update && sudo apt-upgrade -y
sudo apt install wget curl vim -y
sudo env LC_ALL=C.UTF-8 add-apt-repository --yes ppa:ondrej/php
PHP 7.4 and most extensions
sudo apt-get install php7.4-fpm php7.4-common php7.4-dev php7.4-curl php7.4-gd php7.4-json php7.4-mysql php7.4-odbc php7.4-pgsql php7.4-pspell php7.4-readline php7.4-sqlite3 php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-bcmath php7.4-bz2 php7.4-intl php7.4-mbstring php7.4-phpdbg php7.4-soap php7.4-zip php-imagick php-redis php-memcached
PHP 8.1 and most extensions
sudo apt-get install php8.1-fpm php8.1-common php8.1-dev php8.1-curl php8.1-gd php8.1-mysql php8.1-odbc php8.1-pgsql php8.1-pspell php8.1-readline php8.1-sqlite3 php8.1-tidy php8.1-xml php8.1-xmlrpc php8.1-bcmath php8.1-bz2 php8.1-intl php8.1-mbstring php8.1-phpdbg php8.1-soap php8.1-zip php-imagick php-redis php-memcached
PHP 8.2 and most extensions
sudo apt-get install php8.2-fpm php8.2-common php8.2-dev php8.2-curl php8.2-gd php8.2-mysql php8.2-odbc php8.2-pgsql php8.2-pspell php8.2-readline php8.2-sqlite3 php8.2-tidy php8.2-xml php8.2-xmlrpc php8.2-bcmath php8.2-bz2 php8.2-intl php8.2-mbstring php8.2-phpdbg php8.2-soap php8.2-zip php-imagick php-redis php-memcached
PHP 8.3
sudo add-apt-repository ppa:ondrej/php
sudo apt install php8.3-cli
sudo apt install php8.3-common php8.3-bcmath php8.3-mbstring php8.3-xml php8.3-curl php8.3-gd php8.3-zip php8.3-mysql
sudo apt install php8.3 php-fpm openssl php8.3-bcmath php8.3-curl php8.3-mbstring php8.3-pgsql php8.3-tokenizer php8.3-xml php8.3-zip php8.3-intl
sudo apt install composer
composer global require laravel/installer
Option 2 - Beer and Code
sudo apt install php8.2 php8.2-fpm openssl php8.2-bcmath php8.2-curl php8.2-mbstring php8.2-pgsql php8.2-tokenizer php8.2-xml php8.2-zip
To swap PHP extensions, just execute that command and choose the right php for your need (select the number 1, 2, 3, etc):
sudo update-alternatives --config php
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
Add on .bashrc/zshrc
export PATH=$PATH:~/.config/composer/vendor/bin
After, reload the terminal: exec $SHELL
Now its time to install so global dependencies to help PHP development:
composer global require phpunit/phpunit
composer global require phpunit/dbunit
composer global require phing/phing
composer global require phpdocumentor/phpdocumentor
composer global require sebastian/phpcpd
composer global require phploc/phploc
composer global require phpmd/phpmd
composer global require squizlabs/php_codesniffer
sudo apt install mariadb-client mariadb-server
sudo apt install mysql-server mysql-client
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
default-authentication-plugin=mysql_native_password
USE mysql;
SELECT User, Host, plugin FROM mysql.user;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit;
After that you need to change the root password:
sudo mysql
use mysql;
alter user 'root'@'localhost' identified by 'root';
flush privileges;
exit
sudo apt install redis-server
sudo vim /etc/redis/redis.conf
requirepass yourpassword
redis-cli
CONFIG SET requirepass "yourpassword"
AUTH yourpassword
sudo apt install git git-core
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
exec $SHELL
After, reload the terminal: exec $SHELL
nvm install node
nvm install 14
nvm install 16
nvm install 18
nvm alias default 18
If you want to install a specific version, first execute nvm list-remote
to get the number of the specific Version, than execute nvm install 16.15.1
and change the 16.17.0
for your version.
On the currently day I write that document, the LTS version is 16.17.0
and the latest version is 18.4.0
.
--
sudo apt install nginx
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
client_max_body_size 50M;
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
server {
server_name www.seudominio.com seudominio.com;
root /var/www/html/seudominio.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/seudominio.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/seudominio.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.seudominio.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = seudominio.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name www.seudominio.com seudominio.com;
return 404; # managed by Certbot
}
sudo apt install certbot python3-certbot-nginx
sudo nano /etc/nginx/sites-available/example.com
sudo nginx -t
sudo systemctl reload nginx
sudo ufw status
sudo certbot --nginx -d example.com -d www.example.com
sudo systemctl status certbot.timer
sudo apt-get install -y software-properties-common make build-essential git libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
Than put that 3 lines on your .bashrc
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Old configuration on .bashrc
# export PYTHON_BUILD_ARIA2_OPTS="-x 10 -k 1M"
# export PATH="~/.pyenv/bin:$PATH"
# eval "$(pyenv init --path)"
# eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
After, reload the terminal: exec $SHELL
Than execute exec $SHELL
and follow the instructions bellow to install the 3.1
version globally
pyenv install –list
pyenv versions
pyenv install 3.11
pyenv global 3.11
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt install apt-transport-https
sudo apt update
sudo apt install code
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo docker run hello-world
sudo apt-get install docker-compose
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt install --no-install-recommends yarn
curl https://sh.rustup.rs -sSf | sh
# final path need to be
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.pyenv/bin:$PATH"
cargo install bat exa fd-find procs sd du-dust ripgrep tokei hyperfine ytop tealdeer bandwhich grex rmesg zoxide git-delta
sudo apt install copyq
https://www.omgubuntu.co.uk/2021/07/gnome-shell-quarter-tiling-extension-wintile
bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
sudo apt-get install zsh zsh-common
https://github.com/romkatv/powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source /powerlevel10k/powerlevel10k.zsh-theme' >>/.zshrc
.
Download the fonts and install on your OS:
- https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
- https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
- https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
- https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf
Change the default shell:
- chsh -s /usr/bin/zsh
https://github.com/zsh-users/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh