VPS-এ PHP, Node.js, Python Runtime

লেসন ১৯ / ৩৮

🐘 PHP 8.x + PHP-FPM

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-curl \
    php8.2-mbstring php8.2-xml php8.2-zip php8.2-gd php8.2-bcmath -y

sudo systemctl enable --now php8.2-fpm
php -v
php-fpm8.2 -v

# Multiple PHP versions side-by-side
sudo apt install php8.1-fpm php8.3-fpm
# Each has own socket: /run/php/php8.X-fpm.sock

⚙️ PHP Tuning

# /etc/php/8.2/fpm/php.ini
memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 50M
post_max_size = 50M
date.timezone = Asia/Dhaka

# OPcache (huge perf boost)
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0    # production: 0

# /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

sudo systemctl reload php8.2-fpm

🟢 Node.js via nvm

# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc

# Install Node
nvm install 20         # latest LTS
nvm install 18
nvm use 20
nvm alias default 20

node -v
npm -v

# Faster package mgr
npm install -g pnpm

# Process manager
npm install -g pm2

pm2 start app.js --name myapp
pm2 startup           # auto-start on boot
pm2 save
pm2 list
pm2 logs myapp
pm2 monit
pm2 restart myapp
pm2 reload myapp      # zero-downtime

🐍 Python via pyenv

# Dependencies
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev libffi-dev liblzma-dev -y

# Install pyenv
curl https://pyenv.run | bash

# Add to ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

source ~/.bashrc

# Install Python
pyenv install 3.12
pyenv install 3.11
pyenv global 3.12

python --version
pip --version

# Per-project virtualenv
cd myproject
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

🦄 Python App Server

# Gunicorn (Django/Flask)
pip install gunicorn

gunicorn --workers 4 --bind 127.0.0.1:8000 myapp.wsgi:application
# Workers = (2 * CPU) + 1

# Uvicorn (FastAPI/ASGI)
pip install uvicorn[standard]
uvicorn main:app --host 127.0.0.1 --port 8000 --workers 4

# Production: systemd service (covered earlier)

☕ Java / .NET (mention)

# Java
sudo apt install openjdk-17-jdk
java -jar app.jar

# .NET
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt install dotnet-sdk-8.0
dotnet myapp.dll

🎓 মূল কথা ⭐

PHP-FPM + Nginx = LAMP modern। Node = PM2 process manager। Python = Gunicorn/Uvicorn behind Nginx। Multiple version side-by-side complex app-এ দরকার।