فارسی (Farsi)
€EUR

نصب پشته LAMP روی VPS لینوکس با Ubuntu 24.04

2 min
سرور مجازی (VPS/VDS)

پشته LAMP (شامل Linux، Apache، MariaDB و PHP) پایه کلاسیک وردپرس، لاراول و بیشتر برنامه‌های PHP است. در این راهنما آن را گام‌به‌گام روی یک VPS Linux Infrawire تازه با Ubuntu 24.04 راه‌اندازی می‌کنید، همراه با یک ویرچوال هاست جداگانه و فایروالی که فقط پورت‌های لازم را باز می‌گذارد.

📋 پیش‌نیازها

  • یک VPS از نوع KVM با Ubuntu 24.04 (آی‌پی و رمز عبور root در بخش کاربری شما موجود است)
  • دسترسی SSH با root یا کاربری که دسترسی sudo دارد
  • دامنه example.com که رکوردهای A (و AAAA) آن به VPS_IP اشاره می‌کنند

دستورهای زیر فرض می‌کنند که root هستید. در غیر این صورت sudo را در ابتدای آن‌ها بگذارید.

1. به‌روزرسانی سیستم

Bash
apt update && apt upgrade -y

2. نصب Apache

Bash
apt install -y apache2 systemctl enable --now apache2 apache2 -v

سرویس بلافاصله اجرا می‌شود و با هر بار بوت خودکار شروع به کار می‌کند.

3. نصب MariaDB

MariaDB در مخازن اوبونتو موجود است و بدون تغییر جایگزین MySQL می‌شود. اگر MySQL اوراکل را ترجیح می‌دهید، به‌جای آن mysql-server را نصب کنید، اما هرگز هر دو را روی یک ماشین نصب نکنید.

Bash
apt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation

در ویزارد، احراز هویت unix_socket برای root را نگه دارید، در صورت پرسش رمز قوی تعیین کنید، کاربران ناشناس را حذف کنید، ورود از راه دور root را ممنوع کنید و پایگاه‌داده آزمایشی را پاک کنید. سپس یک پایگاه‌داده و یک کاربر اختصاصی برای برنامه‌تان بسازید:

Bash
mariadb
SQL
1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;

4. نصب PHP 8.3

Ubuntu 24.04 نسخه PHP 8.3 را در مخازن پیش‌فرض خود دارد، بنابراین به PPA اضافی نیازی نیست.

Bash
apt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v

بسته libapache2-mod-php به‌طور خودکار Apache را روی MPM از نوع prefork می‌برد و ماژول PHP را بارگذاری می‌کند.

5. ساخت ویرچوال هاست و فعال‌سازی mod_rewrite

Bash
mkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>

گزینه AllowOverride All فایل‌های .htaccess را فعال می‌کند؛ نشانی‌های تمیز در وردپرس یا لاراول به آن‌ها وابسته‌اند. اکنون ماژول و سایت را فعال و صفحه پیش‌فرض را غیرفعال کنید:

Bash
a2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2

پیش از بارگذاری مجدد، خروجی configtest باید Syntax OK باشد.

6. تنظیم فایروال

ابتدا SSH را مجاز کنید؛ وگرنه با فعال شدن فایروال از سرور بیرون می‌مانید.

Bash
ufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status

پروفایل Apache Full پورت‌های 80 و 443 را باز می‌کند. پورت 3306 را باز نکنید: MariaDB فقط باید به‌صورت محلی گوش دهد.

7. تست PHP و حذف فایل آزمایشی

Bash
echo '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1

باید HTTP/1.1 200 OK دریافت کنید. برای دیدن صفحه تنظیمات PHP، آدرس http://example.com/info.php را در مرورگر باز کنید. صفحه phpinfo() نسخه‌ها، مسیرها و ماژول‌ها را فاش می‌کند، پس بلافاصله پاکش کنید:

Bash
rm /var/www/example.com/public_html/info.php

سایر اجزا را هم بررسی کنید:

Bash
apache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb

🛠️ عیب‌یابی

هنوز صفحه پیش‌فرض Apache نمایش داده می‌شود. سایت پیش‌فرض هنوز فعال است یا DNS هنوز منتشر نشده است. دستور a2dissite 000-default.conf را اجرا کنید، Apache را دوباره بارگذاری کنید و با curl -I -H 'Host: example.com' http://VPS_IP/ آزمایش کنید.

خطای 403 Forbidden. بررسی کنید که دایرکتوری Require all granted دارد، کاربر www-data می‌تواند فایل‌ها را بخواند (ls -ld /var/www/example.com/public_html) و لاگ /var/log/apache2/example.com-error.log را ببینید.

مرورگر فایل PHP را به‌جای اجرا دانلود می‌کند. ماژول PHP بارگذاری نشده است. دستور apache2ctl -M | grep php و سپس systemctl restart apache2 را اجرا کنید. اگر خروجی نبود، libapache2-mod-php را دوباره نصب کنید.

قوانین بازنویسی نادیده گرفته می‌شوند (خطای 404 در نشانی‌های تمیز). مطمئن شوید a2enmod rewrite اجرا شده و بلوک <Directory> شما شامل AllowOverride All است.


🎉 پشته LAMP شما آماده است: Apache، MariaDB و PHP 8.3 برای میزبانی اولین سایت شما مهیا هستند.

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.