Vì sao mình viết bài này?
Mỗi lần cài lại máy là một lần “tái sinh” và… mất thời gian. Mình gom lại mọi thứ cần thiết cho môi trường dev web (Laravel, Node, Python, Git) thành 1 bài duy nhất, kèm 2 script cho Linux và macOS. Bạn chỉ cần copy chạy, rồi đi pha cà phê. Quay lại là code được ngay.
Bạn sẽ có gì sau bài này
PHP 8.3 đầy đủ extension phổ biến cho Laravel
Composer + Laravel Installer toàn cục
Node.js bản LTS + npm
Python 3.12 + pip + virtualenv
Git đã config tên/email
SSH key sẵn để thêm lên GitHub
Kiểm tra version cuối bài để chắc chắn mọi thứ OK
Hướng dẫn nhanh cho Linux (Ubuntu/Debian)
Mở terminal với quyền sudo.
Dán toàn bộ đoạn script bên dưới vào file setup.sh rồi chạy:
sudo bash setup.sh
.Làm theo prompt nhập git name/email, chờ máy tự chạy.
#!/bin/bash
echo "🔧 Bắt đầu quá trình cài đặt môi trường phát triển..."
# Kiểm tra quyền root
if [ "$EUID" -ne 0 ]; then
echo "❌ Vui lòng chạy script với quyền root (sudo)"
exit 1
fi
# Cập nhật hệ thống
apt update && apt upgrade -y
# Cài các công cụ cơ bản
apt install -y curl wget gnupg2 lsb-release software-properties-common unzip zip build-essential \\
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev \\
xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev ca-certificates
# --- PHP & Composer ---
echo "📦 Đang cài đặt PHP 8.3 và Composer..."
add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.3 php8.3-cli php8.3-common php8.3-mbstring php8.3-xml php8.3-curl php8.3-mysql \\
php8.3-bcmath php8.3-zip php8.3-gd php8.3-intl php8.3-soap php8.3-readline php8.3-pgsql php8.3-sqlite3 \\
php8.3-imap php8.3-opcache php8.3-xdebug php8.3-dev
update-alternatives --set php /usr/bin/php8.3
# Cài Composer nếu chưa có
if ! command -v composer &> /dev/null; then
echo "📦 Cài Composer..."
cd ~
php -r "copy('<https://getcomposer.org/installer>'', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
else
echo "✅ Composer đã tồn tại."
fi
# --- Laravel Installer ---
echo "🚀 Cài đặt Laravel Installer..."
# Cài đặt Laravel global
su - "$SUDO_USER" -c "composer global require laravel/installer"
# Lấy đường dẫn bin Laravel
LARAVEL_BIN_PATH=$(su - "$SUDO_USER" -c 'composer global config bin-dir --absolute')
# Thêm vào PATH nếu chưa có (cho bash và zsh)
if ! grep -q "$LARAVEL_BIN_PATH" /home/"$SUDO_USER"/.bashrc; then
echo "export PATH=\\"$LARAVEL_BIN_PATH:\\$PATH\\"" >> /home/"$SUDO_USER"/.bashrc
fi
if [ -f /home/"$SUDO_USER"/.zshrc ] && ! grep -q "$LARAVEL_BIN_PATH" /home/"$SUDO_USER"/.zshrc; then
echo "export PATH=\\"$LARAVEL_BIN_PATH:\\$PATH\\"" >> /home/"$SUDO_USER"/.zshrc
fi
echo "✅ Laravel đã được thêm vào PATH cho user: $SUDO_USER"
echo "👉 Bạn cần mở terminal mới hoặc chạy: source ~/.bashrc"
# --- Node.js ---
echo "📦 Đang kiểm tra Node.js..."
if ! command -v node &> /dev/null; then
echo "📦 Đang cài đặt Node.js LTS..."
curl -fsSL <https://deb.nodesource.com/setup_lts.x> | bash -
apt install -y nodejs
else
echo "✅ Node.js đã được cài đặt."
fi
# --- Python 3.12 ---
echo "🐍 Cài đặt Python 3.12 và pip..."
add-apt-repository ppa:deadsnakes/ppa -y
apt update
apt install -y python3.12 python3.12-venv python3.12-dev python3-distutils
update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1
update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# Cài pip cho Python 3.12 nếu chưa có
if ! python3.12 -m pip &> /dev/null; then
curl -sS <https://bootstrap.pypa.io/get-pip.py> | python3.12
fi
pip install virtualenv
# --- Git & SSH ---
echo "🔐 Cài đặt Git và thiết lập SSH..."
apt install -y git
read -p "📝 Nhập tên Git ([user.name](<http://user.name>)): " git_username
read -p "📧 Nhập email Git ([user.email](<http://user.email>)): " git_email
git config --global [user.name](<http://user.name>) "$git_username"
git config --global [user.email](<http://user.email>) "$git_email"
git config --global core.editor "nano"
echo "✅ Đã cấu hình Git:"
git config --global --list
# Tạo SSH key nếu chưa có
if [ ! -f /home/"$SUDO_USER"/.ssh/id_[rsa.pub](<http://rsa.pub>) ]; then
echo "🔐 Chưa có SSH key, đang tạo mới..."
sudo -u "$SUDO_USER" ssh-keygen -t rsa -b 4096 -C "$git_email" -N "" -f /home/"$SUDO_USER"/.ssh/id_rsa
else
echo "🔐 SSH key đã tồn tại."
fi
eval "$(ssh-agent -s)"
ssh-add /home/"$SUDO_USER"/.ssh/id_rsa
echo ""
echo "👉 SSH public key của bạn (dán vào GitHub):"
cat /home/"$SUDO_USER"/.ssh/id_[rsa.pub](<http://rsa.pub>)
echo ""
echo "🔗 Thêm SSH key vào GitHub: <https://github.com/settings/keys>"
echo ""
echo "📌 Kiểm tra kết nối GitHub sau khi thêm key:"
echo " ssh -T [git@github.com](<mailto:git@github.com>)"
# --- Kiểm tra lại ---
echo ""
echo "✅ Phiên bản đã cài:"
php -v
composer -V
su - "$SUDO_USER" -c "laravel --version"
node -v
npm -v
python --version
pip --version
git --version
echo ""
echo "🎉 Xong rồi! Môi trường dev đã sẵn sàng."
Mẹo nhỏ:
Nếu bạn dùng zsh mặc định, mở phiên mới hoặc
source ~/.zshrc
để nhận PATH mới.Trên server không có giao diện, đừng quên mở cổng SSH và cập nhật bảo mật.
Hướng dẫn nhanh cho macOS
Mở Terminal.
Chạy lệnh cài Homebrew và toolchain, sau đó cấu hình Git và SSH.
/bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew install php node git composer
composer global require laravel/installer
ssh-keygen -t rsa -b 4096 -C "[you@example.com](<mailto:you@example.com>)"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
cat ~/.ssh/id_[rsa.pub](<http://rsa.pub>)
echo 'Use: ssh -T [git@github.com](<mailto:git@github.com>)'
echo 'git config --global [user.name](<http://user.name>) "Tên của bạn"'
echo 'git config --global [user.email](<http://user.email>) [you@example.com](<mailto:you@example.com>)'
Sau khi dán SSH key vào GitHub ở mục Settings → SSH and GPG keys, chạy ssh -T git@github.com
để test. Nếu ra “Hi <username>! You’ve successfully authenticated…”, mọi thứ ổn áp.
Câu hỏi thường gặp
Vì sao chọn PHP 8.3? Vì Laravel hiện chạy rất ổn trên 8.3, hiệu năng tốt, extension đầy đủ.
Cần Docker không? Bài này tập trung cài native. Nếu bạn dùng Docker, môi trường vẫn cần Git và SSH. Các bài Docker mình có riêng series.
Có cần Xdebug? Mình cài kèm sẵn, khi dev cần thì enable cấu hình, còn không thì để off để nhẹ.
Troubleshooting nhanh
Lỗi apt khóa: chạy
sudo rm /var/lib/apt/lists/lock
vàsudo dpkg --configure -a
, rồiapt update
lại.Composer không nhận lệnh: mở terminal mới hoặc
source ~/.bashrc
để cập nhật PATH.ssh -T git@github.com
báo Permission denied: kiểm tra bạn đã add đúng public key và chưa bật 2FA yêu cầu token.